-1

此代码用于在开关打开时打开四个 LED,根据温度还有两个 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(). 这就是导致您提到的错误消息的原因。编译器根本不理解它。

第二个主要问题是你的for循环。C++ 中的正确语法是这样的:

for ( init; condition; iter)
{
}

init部分在循环开始之前运行一次,通常用于声明/初始化计数器变量。在循环的condition每次迭代之前立即检查 ,并在等于 时立即停止false。它通常用于检查计数器值。最后,该iter部分在每次循环迭代结束时执行,通常用于递增/推进计数器。

(通常)重要的是不要在循环之后立即使用分号for,否则您的循环体是空的(即它不会循环任何内容)。要么在其后放置一个语句,要么在花括号中放置多个语句{ ... }

在您的情况下,您似乎希望for循环通过值 3、4、5 和 6。为此,您需要执行以下操作:

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

这声明了一个名为 的循环计数器pinNumber,并以值 3 开始它。循环的每次迭代后,计数器增加一 ( ++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 回答