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