Функция для LCD
- Войдите на сайт для отправки комментариев
Втр, 31/07/2012 - 20:56
Добрый день
нужно сделать так что бы у меня на LCD подключенном к ардуине выводились все переменные которые должны выводиться, сразу как они менятся, но при функция void loop не должна в себе ничего содержать, т.е. как бы там основной код должен быть.. а допустим в функции ( допустим) void LCD должно идти обновление экрана
Можно, только функция LCD будет в функции loop, либо используйте прерывание по таймеру, то есть например, что бы дисплей обновлялся каждые пол секунды или чаще, тогда в loop ничего не будет.
Можно подробнее, с приером пожалуйста
Качаете библиотеку, распаковываете ее в \arduino\libraries, вот примерно так будет выглядеть код:
#include <TimerOne.h> void Display(){ // Обработва дисплея } void setup() { Timer1.initialize(200000); // 200000 мкс = 200 млс = 0,2 секунды Timer1.attachInterrupt(Display); } void loop(){ // Основной код }А я бы не заморачивался с таймером:
Если не критично работать с дисплее именно "раз в секунду", а достаточно "примерно раз в секунду". И если он вызовется на 100 миллисекунд позже ничего катастрофического не случится, то
unsigned long lastRepTime=0; #define LCD_PERIOD 1000 // работаем с дислеем раз в 1000 милисекунд=1 сек. void Display(){ // Обработва дисплея } void setup() { } void loop(){ if( (millis()-lastRepTime)>LCD_PERIOD){ Display(); lastRepTime=millis(); } // Основной код }Но естественно, про использование в основном коде какие-то существенных delay() - нужно забыть. Каждый такое delay() означает что вывод на экран "может запоздать".
Функция дисплей будет вызыватся каждый LCD_PERIOD миллисекунд. Но может запаздывать. Максимальное возможное "опоздание" равно времени выполнения "Основной код" (поэтому и нужно что-бы он "проходил без задержек").
огромоное спасибо)
прочитал только сейчас) пригодится в будущем, а сделал все по своему)