为什么它会在arduino uno代码中的'void'之前放置错误:预期的构造函数,析构函数或类型转换?

时间:2014-04-04 09:53:59

标签: c++ arduino arduino-uno

此代码用于打开开关时打开四个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);   
  }    
}

1 个答案:

答案 0 :(得分:0)

代码问题
您的代码中存在许多问题,这些问题会阻止它按照您的意图进行编译或工作。

首先,正如评论中所提到的,你不应该在功能签名前面加上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);
    } 
}