尝试使用 yii 打开 arduino 中的 4 个 LED,但它只会打开 #1
Trying to turn on 4 leds in arduino with yii but it only turns led #1
我正在编写一个代码,我可以通过 wifi 打开 4 个 arduino LED,我遇到的问题是它只在我试图打开 led #2 时打开 led #1,我已经检查了代码,它的编写方式应该是正确的,但我找不到它不起作用的原因
我已经尝试更改 ifs 上的条件以查看它是否检测到它们,假设我更改了代码,如果我尝试打开引脚 #4,它应该找到引脚 5 而它应该是引脚 4在这种情况下,它仍然会打开引脚 #1
注意: if 和 else if 我已经改变了它们的编写方式和其他所有内容,但结果仍然相同,led #1 是唯一会的开启
public function actionEncender($id,$pin)
{
*if*($pin = 1)
{
$equipo = Equipos::find()->where(['id'=>$id])->one();
$equipo->estado = '1';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDa=ON');
return $this->redirect(['view', 'id' => $id]);
}
elseif ($pin = 2)
{
$equipo = Equipos::find()->where(['id'=>$id])->two();
$equipo->estado = '1';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDb=ON');
return $this->redirect(['view', 'id' => $id]);
}
elseif ($pin = '3')
{
$equipo = Equipos::find()->where(['id'=>$id])->three();
$equipo->estado = '1';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDc=ON');
return $this->redirect(['view', 'id' => $id]);
}
elseif ($pin = '4')
{
$equipo = Equipos::find()->where(['id'=>$id])->four();
$equipo->estado = '1';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDd=ON');
return $this->redirect(['view', 'id' => $id]);
}
}
public function actionApagar($id, $pin)
{
if ($pin = '1')
{
$equipo = Equipos::find()->where(['id'=>$id])->one();
$equipo->estado = '0';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDa=OFF');
return $this->redirect(['view', 'id' => $id]);
}
if ($pin = '2')
{
$equipo = Equipos::find()->where(['id'=>$id])->two();
$equipo->estado = '0';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDb=OFF');
return $this->redirect(['view', 'id' => $id]);
}
if ($pin = '3')
{
$equipo = Equipos::find()->where(['id'=>$id])->three();
$equipo->estado = '0';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDc=OFF');
return $this->redirect(['view', 'id' => $id]);
}
if ($pin = '4')
{
$equipo = Equipos::find()->where(['id'=>$id])->four();
$equipo->estado = '0';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDd=OFF');
return $this->redirect(['view', 'id' => $id]);
}
}
我重构了您的代码并更正了逻辑错误。
private function loadModel($id)
{
$equipo = Equipos::findOne((int)$id);
if ($equipo === null) {
throw new \yii\web\HttpException('Pin #' . $id . ' not found');
}
return $equipo;
}
public function actionEncender ($id)
{
$equipo = $this->loadModel($id);
$equipo->estado = 1;
if (!$equipo->save(false, ['estado'])) {
throw new \yii\web\HttpException('Error during save estado state');
}
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDa=ON');
return $this->redirect(['view', 'id' => $id]);
}
public function actionApagar($id)
{
$equipo = $this->loadModel($id);
$equipo->estado = 0;
if (!$equipo->save(false, ['estado'])) {
throw new \yii\web\HttpException('Error during save estado state');
}
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDa=OFF');
return $this->redirect(['view', 'id' => $id]);
}
我正在编写一个代码,我可以通过 wifi 打开 4 个 arduino LED,我遇到的问题是它只在我试图打开 led #2 时打开 led #1,我已经检查了代码,它的编写方式应该是正确的,但我找不到它不起作用的原因
我已经尝试更改 ifs 上的条件以查看它是否检测到它们,假设我更改了代码,如果我尝试打开引脚 #4,它应该找到引脚 5 而它应该是引脚 4在这种情况下,它仍然会打开引脚 #1
注意: if 和 else if 我已经改变了它们的编写方式和其他所有内容,但结果仍然相同,led #1 是唯一会的开启
public function actionEncender($id,$pin)
{
*if*($pin = 1)
{
$equipo = Equipos::find()->where(['id'=>$id])->one();
$equipo->estado = '1';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDa=ON');
return $this->redirect(['view', 'id' => $id]);
}
elseif ($pin = 2)
{
$equipo = Equipos::find()->where(['id'=>$id])->two();
$equipo->estado = '1';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDb=ON');
return $this->redirect(['view', 'id' => $id]);
}
elseif ($pin = '3')
{
$equipo = Equipos::find()->where(['id'=>$id])->three();
$equipo->estado = '1';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDc=ON');
return $this->redirect(['view', 'id' => $id]);
}
elseif ($pin = '4')
{
$equipo = Equipos::find()->where(['id'=>$id])->four();
$equipo->estado = '1';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDd=ON');
return $this->redirect(['view', 'id' => $id]);
}
}
public function actionApagar($id, $pin)
{
if ($pin = '1')
{
$equipo = Equipos::find()->where(['id'=>$id])->one();
$equipo->estado = '0';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDa=OFF');
return $this->redirect(['view', 'id' => $id]);
}
if ($pin = '2')
{
$equipo = Equipos::find()->where(['id'=>$id])->two();
$equipo->estado = '0';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDb=OFF');
return $this->redirect(['view', 'id' => $id]);
}
if ($pin = '3')
{
$equipo = Equipos::find()->where(['id'=>$id])->three();
$equipo->estado = '0';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDc=OFF');
return $this->redirect(['view', 'id' => $id]);
}
if ($pin = '4')
{
$equipo = Equipos::find()->where(['id'=>$id])->four();
$equipo->estado = '0';
$equipo->save ();
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDd=OFF');
return $this->redirect(['view', 'id' => $id]);
}
}
我重构了您的代码并更正了逻辑错误。
private function loadModel($id)
{
$equipo = Equipos::findOne((int)$id);
if ($equipo === null) {
throw new \yii\web\HttpException('Pin #' . $id . ' not found');
}
return $equipo;
}
public function actionEncender ($id)
{
$equipo = $this->loadModel($id);
$equipo->estado = 1;
if (!$equipo->save(false, ['estado'])) {
throw new \yii\web\HttpException('Error during save estado state');
}
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDa=ON');
return $this->redirect(['view', 'id' => $id]);
}
public function actionApagar($id)
{
$equipo = $this->loadModel($id);
$equipo->estado = 0;
if (!$equipo->save(false, ['estado'])) {
throw new \yii\web\HttpException('Error during save estado state');
}
$curl = new curl\Curl();
$response = $curl->get($equipo->ip.'/gpio/LEDa=OFF');
return $this->redirect(['view', 'id' => $id]);
}