Проблема с if else if
- Войдите на сайт для отправки комментариев
Втр, 22/02/2022 - 21:42
Доброго времени суток. Прощу помочь разобраться с оператором if/else.
#include <iarduino_RTC.h> iarduino_RTC time(RTC_DS1302, 5, 3, 4); // RST, CLK, DAT void setup() { Serial.begin(9600); time.begin(); //time.settime(0, 22, 17, 20, 2, 22, 7); // 0 сек, 30 мин, 18 часов, 12, июня, 2020, четверг } void loop() { int Y = time.Hours; if (Y >= 3 && Y < 9) { Serial.print(303); } else if (Y >= 9 && Y < 15) { Serial.print(254); } else if (Y >= 15 && Y < 21) { Serial.print(362); } else if (Y >= 21 && Y < 3) { Serial.print(302); } Serial.println(Y); delay(4000); }
По идее программа должна выводить значение в Serial в зависимости от переменной Y, но по какой то причины этого не происходит, хотя переменная Y принимает нужное значение. ( Y = считывание часов с модуля )
Очевидно, что для начала нам нужно догадаться, что происходит вместо ожидаемого - так?
Не понял вопроса
Больше 21 и меньше 3 это круто, конечно
И, да, вот это что, альтернативное ответвление математики или какая-то неэвклидова геометрия Y >= 21 && Y < 3 ?
Не понял вопроса
Такая же ерунда.
а как же тогда сделать, если время в 24 часовом формате
Непонятливый? Хочешь грамотных ответов - грамотно задай вопрос.
Мы уже поняли, что у тебя ИФ не работает так, как ты хотел - но кпк оно работает, пока не ясно.
У меня есть переменная Y, это часы и они в 24 часовом формате
через if я хотел сделать так:
если Y => 3 часов утра и < 9 часов утра, то выводится значение 303
если Y => 9 часов утра и < 15 часов дня, то выводится значение 254
проблема в том что я не знаю как реализовать 20 строку
проблема в том что я не знаю как реализовать 20 строку
а по русски условие сформулировать сможете?
значение Y должно быть => 21 Pm и Y < 3 Am
Это по русски? Математические знаки, Am, Pm?
Ваша проблема в том, что вы даже обычным языком не можете описать что хотите, где уж ваи запрограммировать это...
Просто else не подходит?
Подходит. Забыл про него походу. Спасибо большое
Булочка, если не понимаете, как сформулировать условие от 21ч до 3 ночи - разбейте его на два - до полуночи и после.
Кроме && есть еще и ||, так что можно записать в том же стиле, что и раньше.
Хуже, если времена должны меняться. Тогда условие для 21 и 3 не подойдёт для 21 и 23, к примеру.
Меняться может что угодно, например, количество интервалов времени.
Если есть желание создать универсальный алгоритм, нужно исходить из того, что задавать нужно не в тексте программы, а в некотором "внешнем файле" (пусть даже этот "внешний файл" - всего навсего массив констант в теле самого скетча), а также продумать структуру данных, отвечающую заданным требованиям.
Bylo4ka, по-моему, это хороший повод познакомиться с оператором switch...case.