我正在编写一个可以通过wifi打开4个arduino led的代码,我遇到的问题是,当我尝试打开led#2时,它只能打开led#1,我已经检查了代码,它的编写方式应该是正确的,但是我找不到为什么它不起作用的原因
我尝试更改ifs的条件以查看是否检测到它们,说我更改了代码,即如果我尝试用它打开引脚4,则应该在应该引脚4的情况下找到引脚5。在这种情况下,它仍会导通引脚#1
注意:如果我改变了if和else的方式,那么除了结果仍然是一样之外,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]);
}
}
答案 0 :(得分:0)
我重构了您的代码并纠正了逻辑错误。
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=ON');
return $this->redirect(['view', 'id' => $id]);
}