Друзья, хочу сделать небольшие часы с оповещением в пол часа и в час ровно. Используется Arduino Nano, lcd 1602 и модуль реального времени/ Столкнулся с проблемой сравнения результата выдачи часов. Дополнительных переменных плодить не хочу, а в if разделе сравнение объектов происходит непонятно. Код (C++): if(time.gettime("i:s") == "00:00" || time.gettime("i:s") == "30:00"){ halfAnHour(); } void halfAnHour(){ for(int i = 0; i < 15; i++){ lcd.setCursor(i,0); lcd.write(0); lcd.setCursor(i,1); lcd.write(0); delay(100); } lcd.clear(); } Проверил в serial, там выводится 00:00, но arduino не принимает это как верный результат. Длинна строки вроде бы 5 символов - String(time.gettime("i:s")).length() = 5 ЧЯДНТ?
Отвечу сам. Решилось преобразованием в строку результата часов. Код (C++): if(String(time.gettime("i:s")) == "00:00" || String(time.gettime("i:s")) == "30:00")
Функция time.gettime("i:s") возвращает char * на внутренний буфер. Применительно к указателям оператор == сравнивает собственно указатели а не строки. Для сравнения строк нужно использовать функцию strcmp.
Дело не в необходимости, а в умениях )) Смог догадаться только до этого ) В расчёт бралась исключительно простота - искомое время определяется одной константой. Большое спасибо за информацию! Буду копать там.
Старайтесь избегать такого решения, это неэффективно по времени и по памяти, да и строковое представление зависит от формата.