Этот код предназначен для открытия четырех светодиодов при открытии переключателя, и в зависимости от температуры есть еще два светодиода, открытые или закрытые, один красный и один зеленый.
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
запускается один раз до начала цикла и обычно используется для объявления/инициализации переменной счетчика. 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);
}
}
type void loop(){
не является допустимым кодом C ++, просто скажитеvoid loop(){
.