Программирование LCD 5110
- Войдите на сайт для отправки комментариев
Пт, 04/08/2017 - 23:37
Друзья, помогите разобраться. Мне нужно, чтобы на экран 5110 выводилась разная информация c датчиков в зависимости от пройденного времени.Не могу разобраться с функцией millis (). Написал вот такой скетч и попробовал проследить как меняется переменная numb с монитора порта:
int numb = 0;
#define INTERVAL 1000UL
void setup() {
Serial.begin (9600);
}
void loop()
{
static unsigned long previousMillis = 0;
if(millis() - previousMillis > INTERVAL) {
previousMillis = millis() - INTERVAL;
numb = 1;
}
else numb = 2;
Serial.print (numb);
}
он работает не правильно. Необходимо сделать, чтобы выполнялось сначала первое действие, затем второе и так по кругу, т.е. на экран передавалась опреденная информация на протяжении определенного периода времени.
/**/ //----------------------------- //--------Компановка--------------------- //--------main--------------------- void setup() { Serial.begin (9600); } void loop() { static unsigned long past = 0; static bool numb = 0; if (millis() - past >/*время обновления 1 сек*/1000) { past = millis(); numb = !numb; if (numb) Serial.println (1); else Serial.println (0); } } /*Скетч использует 1870 байт (5%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 191 байт (9%) динамической памяти, оставляя 1857 байт для локальных переменных. Максимум: 2048 байт. */строка 13 неправильная
#define INTERVAL 1000UL void setup() { Serial.begin (9600); } void loop() { byte numb = ((millis() / INTERVAL) & 1) + 1; Serial.print (numb); }Объясните, пожалуйста, 8 строчку. Почему снасла переменной присваивается значение 1, затем 2 и наоборот? Немного не понимаю... А можно сделать чтобы переменная numb имела значения 1, 2, 3 и т.д. , а затем снова по кругу? Спасибо.
А как сдлать, чтобы значение namb менялось не только на 0 и 1, а , например, на 1, 2, 3, затем счетчик обнуляется и снова по кругу 1, 2, 3?
/**/ unsigned long mill;// переменая под millis() //----------------------------- //--------Компановка--------------------- unsigned long past = 0; byte numb = 0; //--------main--------------------- void setup() { Serial.begin (9600); } void loop() { mill = millis(); if (mill - past >=/*время обновления 1 сек*/1000) { past = mill; Serial.println (numb); ++numb; if (numb > 2)numb = 0; } } /*Скетч использует 1704 байт (5%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 195 байт (9%) динамической памяти, оставляя 1853 байт для локальных переменных. Максимум: 2048 байт. */Большое спасибо!