Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
получить данные температуры с датчика (sensor.getTemp()) мы можем только отправив запрос (sensor.requestTemp();) и подождав (delay(1000);). Как всегда delay всё портит и если без таймера опрашивать кнопку в loop, то переключив один раз режим на отображение температуры (сработает delay) — сменить режим мы уже не сможем
Зачем плодить сущности? В loop уже есть активный таймер, зовётся millis(). С ним легко решается обход delay, пусть датчик ждёт своей секунды, а программа работает параллельно.
А можно также взять другой контроллер. Или на дискретной логике сделать. Или на raspberry с линуксом.
Для 2 датчиков планировщик как то из пушки по воробьям.
реализация этого на логике — это еще больший оверинжиниринг, ибо влечет за собой десяток плат с микросхемами
все определяется стоимостью часа разработки и экономией денег после этой разработки
в какой-то момент разработчик упрется в то, что n-ый датчик реализовать уже не получается
unsigned int start_read_temp = 0;
void loop()
{
if (start_read_temp == 0)
{
// begin read temp code here
start_read_temp = millis();
};
if (start_read_temp != 0 && (millis - start_read_temp) > 1000)
{
start_read_temp = 0;
// final read temp code here
};
// other code in loop()
}
Сюда идеально впишется вариант с круглым дисплеем, типа такого: https://drive.google.com/file/d/1en2UMwhEnxgcWEULq-M5SGpxSyn9qdtz/view?usp=sharing
Смотрите в стоорону прерываний. Она решает проблемы с задержками токого рода.
Тахометр + температура двигателя на Arduino для МиниМото