2013-10-04 3 views
0

У меня есть проект управления моим проектором с помощью команд RS-232, и проектор отправляет обратную связь в arduino. Поэтому у меня есть ЖК-экран с кнопками. Чтобы сделать его более приятным, у меня есть ультразвуковой дальномер, который я хочу использовать, чтобы при приближении к устройству подсветка ЖК-дисплея включалась на 30 секунд, а затем отключалась. Я не могу использовать задержку, потому что мне нужно продолжить опрос для кнопок и последовательной информации от проектора.Запустите таймер с функцией в arduino

Есть общественные библиотеки Timer.h и SimpleTimer.h, но это делать только колебания и т.д.

То, что я хотел бы сделать это:

distance = measureUltrasonicDistance(ultrasonicPin); //returns in cm 
if (distance <= 10) { 
    //digitalWrite(baclkightPin,HIGH); 
    //have this turn off 30 seconds later 
} 

ответ

1

Первое, что нужно понимать, этот цикл() вызывается непрерывно, и вы можете использовать шаблон «сторожевой таймер», чтобы свет включался без использования таймера.

unsigned long timeoff; 

void setup() { 

    timeoff = millis(); 

} 

void loop() { 

    distance = measureUltrasonicDistance(ultrasonicPin); //returns in cm 
    if (distance <= 10) { 
     digitalWrite(baclkightPin,HIGH); 

     // compute boundary of when light should be off 
     timeoff = millis() + 30L*1000L; 
    } 

    if (timeoff < millis()) { 

     digitalWrite(backlightPin, LOW); 

    } 

} 

Надеюсь, что это поможет, дайте мне знать, если возникнут какие-либо проблемы.

Смежные вопросы