while ((getMeasurement()>40)||(digitalRead(A1)=HIGH) ||(digitalRead(A2)=HIGH)) вот на что ругается IDE. lvalue required as left operand of assignment-вот такая вот ошибка. Помогите пожалуйста.
digitalRead(A1)=HIGH Это операция ПРИСВОЕНИЯ вы функции пытаетесь значение присвоить ) digitalRead(A1)==HIGH Вот так правильнее Два знака равно.
Правильнее читать "присвоить значение результату, возвращаемому функцией", а этот самый результат является константой, что и не нравится компилятору Присвоить функции - это digitalRead = 5; Кстати, погуглите "указатель на функцию" ради интереса - весьма забавный фокус
#include <Strela.h> #define butt S1 #define sleep 125 byte lamps[] = {L4, L3, L2, L1}; unsigned long last_press = 0; boolean butt_flag = LOW; boolean lamp_flag = LOW; int high_lamp = 0; void setup() { for (int i = 0; i <= 3; i++) { uPinMode(lamps, OUTPUT); } uPinMode(butt, INPUT); } void loop() { if (uDigitalRead(butt) && butt_flag == LOW && millis() - last_press > 200) { butt_flag = HIGH; lamp_flag = !lamp_flag; last_press = millis(); } if (uDigitalRead(butt) == LOW && butt_flag) butt_flag = LOW; if (lamp_flag) { uDigitalWrite(lamps[high_lamp], HIGH); delay(sleep); uDigitalWrite(lamps[high_lamp], LOW); high_lamp++; if(high_lamp > 3) high_lamp = 0; } } Я как-то в этом скетче тоже с равенствами накосячил.
Код (C++): #include <Strela.h> #define butt S1 #define sleep 125 byte lamps[] = {L4, L3, L2, L1}; unsigned long last_press = 0; boolean butt_flag = LOW; boolean lamp_flag = LOW; int high_lamp = 0; void setup() { for (int i = 0; i <= 3; i++) { uPinMode(lamps[i], OUTPUT); } uPinMode(butt, INPUT); } void loop() { if (uDigitalRead(butt) && butt_flag == LOW && millis() - last_press > 200) { butt_flag = HIGH; lamp_flag = !lamp_flag; last_press = millis(); } if (uDigitalRead(butt) == LOW && butt_flag) butt_flag = LOW; if (lamp_flag) { uDigitalWrite(lamps[high_lamp], HIGH); delay(sleep); uDigitalWrite(lamps[high_lamp], LOW); high_lamp++; if(high_lamp > 3) high_lamp = 0; } }