-1

このコードは、スイッチを開いたときに 4 つの LED を開くためのもので、温度に応じて、赤と緑の 2 つの LED が開閉します。

const int sensorPin = A0;   
type void setup(){   
  pinMode(2,INPUT);//the switch  
  for(int pinNumber>2 && pinNumber<7);//four leds   
  pinMode(pinNumber,OUTPUT);  
  pinMode(7,OUTPUT);//green led  
  pinMode(8,OUTPUT);//red led   
}  
type void loop(){  
  for(int pinNumber>2 && pinNumber<7);  
  if(digitalRead(2)==LOW){//if the switch is off the 4 leds are off  
  digitalWrite(pinNumber, LOW);  
  }  
  else{  
  digitalWrite(pinNumber, HIGH);//if the switch is open the 4 leds are opened  
  }  
  int sensorVal = analogRead(sensorPin);  
  float voltage = (sensorVal/1024.0);  
  float temperature= (voltage -0.5)*100;   
  if(temperature < 40){  
  digitalWrite(7, HIGH);  
  digitalWrite(8, LOW);   
  }   
  else{   
  digitalWrite(7, LOW);   
  digitalWrite(8, HIGH);   
  }    
}
4

1 に答える 1

1

コードの問題
コードには、コンパイルや意図したとおりの動作を妨げる多くの問題があります。

まず、コメントで述べたように、type関数シグネチャの前に単語を付けるべきではありません。たとえば、代わりtype void loop()void loop(). それが、あなたが言及したエラーメッセージの原因です。コンパイラは単にそれを理解していません。

2 番目の大きな問題はforループです。C++ の正しい構文は次のとおりです。

for ( init; condition; iter)
{
}

このinitセクションは、ループが開始する前に 1 回実行され、通常はカウンター変数の宣言/初期化に使用されます。はconditionループの各反復の直前にチェックされ、 と等しくなるとすぐに停止しfalseます。通常、カウンター値を確認するために使用されます。最後に、iterセクションは各ループ反復の終わりに実行され、通常はカウンターをインクリメント/進めるために使用されます。

(通常) ループの直後にセミコロンを付けないことが重要forです。そうしないと、ループ本体が空になります (つまり、何もループしません)。その後に 1 つのステートメントを配置するか、複数のステートメントを中括弧で囲みます{ ... }

あなたの場合、forループに値 3、4、5、6 を通過させたいようです。そのためには、次のようにする必要があります。

for (int pinNumber = 3; pinNumber < 7; ++pinNumber)
{
    // (loop body goes here)
}

これは、 というループ カウンターを宣言しpinNumber、値 3 で開始します。ループの反復ごとに、カウンターは 1 ずつ増加します ( ++pinNumber)。カウンターが 7 に達すると、ループは停止します。

修正されたコード
すべてをまとめると、このコードはより適切に機能するはずだと思います。

const int sensorPin = A0;   
void setup()
{
    pinMode(2, INPUT);//the switch

    for (int pinNumber = 3; pinNumber < 7; ++pinNumber)
    {
        pinMode(pinNumber, OUTPUT);//four leds
    }

    pinMode(7, OUTPUT);//green led
    pinMode(8, OUTPUT);//red led
}

void loop()
{
    for (int pinNumber = 3; pinNumber < 7; ++pinNumber)
    {        
        if (digitalRead(2) == LOW)
        {
            //if the switch is off the 4 leds are off
            digitalWrite(pinNumber, LOW);
        }
        else
        {
            //if the switch is open the 4 leds are opened
            digitalWrite(pinNumber, HIGH);
        }
    }

    int sensorVal = analogRead(sensorPin);
    float voltage = (sensorVal / 1024.0);
    float temperature = (voltage - 0.5) * 100;
    if (temperature < 40)
    {
        digitalWrite(7, HIGH);
        digitalWrite(8, LOW);
    }
    else
    {
        digitalWrite(7, LOW);
        digitalWrite(8, HIGH);
    } 
}
于 2014-04-04T14:54:52.717 に答える