【解決方法】「else」の前の修飾されていない ID


#include <Servo.h>
Servo myservo;

int ledPin = 12;
int pirPin = 13;
int pirStat = 0;
int pos = 0;

void setup() {
pinMode (ledPin,OUTPUT);
pinMode (pirPin, INPUT);
myservo.attach(9);
Serial.begin(9600);
myservo.write(pos);
}

void loop() {

  
   pirStat = digitalRead(pirPin);

if (pirStat == HIGH);
    digitalWrite (ledPin, HIGH);
    Serial.println("Motion Detected");
   for (pos = 0; pos<= 180; pos += 1) {
     myservo.write (pos);
     delay(20);
   }
   digitalWrite(ledPin, LOW);
     for (pos = 180; pos >= 0; pos -= 1){
     myservo.write(pos);
    delay (120);
  }
} 
else{  
}
}

私が試したこと:

コンマと括弧を設定しましたが、エラーは同じです。 私の解決策の正しいコードを解決または入力するように親切に案内してください。 その私の研究室のプロジェクト

解決策 1

この行を見てください:

C++
if (pirStat == HIGH);

if ステートメントの後には、セミコロンではなく、単一の式またはブロックの開始が続く必要があります。

C++
if (pirStat == HIGH)
{

解決策 2

コードを一貫してインデントすると、次のことが明らかになります。

C++
void loop() 
    {
    pirStat = digitalRead(pirPin);
    if (pirStat == HIGH);
    digitalWrite (ledPin, HIGH);
    Serial.println("Motion Detected");
    for (pos = 0; pos<= 180; pos += 1) 
        {
        myservo.write (pos);
        delay(20);
        }
    digitalWrite(ledPin, LOW);
    for (pos = 180; pos >= 0; pos -= 1)
        {
        myservo.write(pos);
        delay (120);
        }
    } 
    else
        {  
        }
    }

セミコロンで終わります if:

if (pirStat == HIGH);

そのため、 else 関数を終了します。
これを試して:

C++
void loop() 
    {
    pirStat = digitalRead(pirPin);
    if (pirStat == HIGH)
        {
        digitalWrite (ledPin, HIGH);
        Serial.println("Motion Detected");
        for (pos = 0; pos<= 180; pos += 1) 
            {
            myservo.write (pos);
            delay(20);
            }
        digitalWrite(ledPin, LOW);
        for (pos = 180; pos >= 0; pos -= 1)
            {
            myservo.write(pos);
            delay (120);
            }
        } 
    else
        {  
        }
    }

そして今、ブラケットはすべて一致しています。

一貫性がある限り、どのインデントとブラケット配置スキームを使用しても問題ありません。 ただし、ランダムなインデントは役に立ちません。

コーディング中に毎日、おそらく 1 日に何度も構文エラーが発生することを予期する必要があります。経験の豊富さに関係なく、誰もがそうです。 変数やキーワードのスペルを間違えることがあります。 文字列やコード ブロックを閉じるのを忘れることがあります。 猫があなたのキーボードの上を歩いて、とても奇妙なことをタイプすることがあります。 メソッド呼び出しに必要なパラメーターの数を忘れてしまうことがあります。

我々はすべての間違いを犯します。

そして、私たちは皆そうしているので、構文エラーを修正する必要があります。他の人が修正してくれるのを待つよりも、方法を学んで自分で修正する方がはるかに迅速です! したがって、エラー メッセージの読み方と、コンパイラが間違っていると言っていることに照らして記述されたコードを解釈する方法を学ぶことに少し時間を費やしてください。

だからこれを読んでください: 問題を解決するコードの書き方、初心者向けガイド パート 2: 構文エラー[^] – 次回コンパイル エラーが発生したときに役立つはずです。

コメント

タイトルとURLをコピーしました