尝试使用 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]);
}