Этот код предназначен для открытия четырех светодиодов при размыкании переключателя, и в зависимости от температуры открываются или закрываются еще два светодиода, один красный и один зеленый.
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);
}
}
Проблемы с кодом
В вашем коде есть ряд проблем, которые могут помешать его компиляции или работе по вашему усмотрению.
Во-первых, как уже упоминалось в комментариях, у вас не должно быть слова type
перед сигнатурами функций. Например, вместо type void loop()
это должно быть просто void loop()
, Это то, что вызывает сообщение об ошибке, которое вы упомянули. Компилятор просто не понимает этого.
Вторая серьезная проблема — это ваша for
петли. Правильный синтаксис в C ++ таков:
for ( init; condition; iter)
{
}
init
section запускается один раз перед началом цикла и обычно используется для объявления / инициализации переменной счетчика. condition
проверяется непосредственно перед каждой итерацией цикла и останавливается, как только false
, Обычно используется для проверки значения счетчика. Наконец, iter
Секция выполняется в конце каждой итерации цикла и обычно используется для увеличения / продвижения счетчика.
(Обычно) важно не иметь точку с запятой сразу после for
loop, в противном случае ваше тело цикла пустое (то есть оно не будет проходить через все). Либо поместите одно утверждение после него, либо несколько утверждений, заключенных в фигурные скобки { ... }
,
В вашем случае, похоже, вы хотите, чтобы ваш 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);
}
}
Других решений пока нет …