Почему он помещает ошибку: ожидаемый конструктор, деструктор или преобразование типа перед ‘void’ в коде arduino uno?

Этот код предназначен для открытия четырех светодиодов при размыкании переключателя, и в зависимости от температуры открываются или закрываются еще два светодиода, один красный и один зеленый.

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

Решение

Проблемы с кодом
В вашем коде есть ряд проблем, которые могут помешать его компиляции или работе по вашему усмотрению.

Во-первых, как уже упоминалось в комментариях, у вас не должно быть слова 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);
}
}
0

Другие решения

Других решений пока нет …