Почему игнорируется условие IF
Привет всем. Прошу помочь знающих людей. Пробую немного разобраться в программировании микроконтроллеров на С++. Создал программу тестера батареек. Функция Void loop состоит по сути из трех условий:
1) если напряжение на батарейке больше 1,6 в то горит зеленый светодиод (newLed),
2) если от 1,4 до 1,6в, то горит желтый светодиод (okLed),
3) и все остальное - горит красный (oldLed).
Загрузке в ардуину происходит немного другое. Программа начинает бесконечный цикл и , даже без подключения проверяемой батарейки)загорается красный (ну это понятно, т.к. нулевое напряжение соответствует третьему условию), но далее программа возвращается к первому условию и загорается зеленый светодиод. И так бесконечно происходит игнорирование условия IF, по которому зеленый светодиод включается только когда более 1,6 в.
#define newLed 2
#define okLed 4
#define oldLed 6
int analogValue = 0;
float voltage = 0;
int ledDelay = 2000;
void setup()
{
pinMode(newLed,OUTPUT);
pinMode(okLed,OUTPUT);
pinMode(oldLed,OUTPUT);
}
void loop()
{
analogValue = analogRead(0);
voltage = 0.0048*analogValue;
if (voltage >= 1.6)
{ digitalWrite(newLed, HIGH);
delay(ledDelay);
digitalWrite(newLed, LOW);
}
else if(voltage < 1.6 && voltage > 1.4)
{
digitalWrite(okLed, HIGH);
delay(ledDelay);
digitalWrite(okLed, LOW);
}
else
{
digitalWrite(oldLed, HIGH);
delay(ledDelay);
digitalWrite(oldLed, LOW);
}}
_______________________________
кстати такое поведение ардуины заметил не только в этой программе. Там где программы состоят из условий IF постоянно игнорируется первое условие (оно постоянно выполняется). При загрузке скетча в симулятор Arduino в интернете пограммы работают корректно. В чем может быть дело?
Лига программистов C/C++
60 постов4.8K подписчиков
Правила сообщества
Соблюдайте правила Pikabu:
Помимо этого ЗАПРЕЩЕНО:
- Размещать в сообществе посты стиля "Подскажите как удалить вирус", "Подскажите как установить программу", "Подскажите как починить монитор/телевизор/мышь/тостер/стиральную машину" или "Напишите за меня лабу в универ". Пожалуйста размещайте такие посты вне этого сообщества или в соответствующих для этого сообществах.