尝试使用yii打开arduino中的4个led,但它只会打开led#1

时间:2019-05-13 20:56:41

标签: php arduino yii2 arduino-esp8266

我正在编写一个可以通过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]);
}
}

1 个答案:

答案 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]);
}