избавиться от delay ()
- Войдите на сайт для отправки комментариев
Ср, 08/04/2015 - 00:31
Уважаемые специалисты програмисты АРДУИНЩИКИ.
Помогите пожалуйста новичку избавиться от функции Delay ().
3 дня потратил чтоб написать этот код как положено.
это всего лишь часть кода моего безумного проэкта. но решил не наваливать все в кучу, а решать проблемы по мере поступления.
/* ИДЕОЛОГИЯ: После нажатия кнопки включается реле, и запускаеться таймер. после повторного нажатия реле выключаеться и останавливается таймер. затем расчитываю продолжительность работы реле. ОБНОВЛЕНИЕ : Планирую 1) Избавиться от делай 2) Сохранить переменную "pausa" в EEPROM */ # define relePin 10 // выход управления реле (на 10 пине) # define buttonPin 2 // вход для кнопки . кнопка подключена к пину 2 boolean flag = 0; // переменная для того чтоб видить запущено ли реле long unsigned onTime =0; // первое нажатие "Старт" long unsigned offTime=0; // второе нажатие "Стоп" void setup() { Serial.begin(9600); // запускаем сериал монитор на скорости 9600 bits per second: pinMode(relePin, OUTPUT); // 10 пин как выход реле pinMode(buttonPin, INPUT); // 2 пин как вход кнопки } void loop () { if(digitalRead(2)==HIGH&&flag==0) // если кнопка нажата и flag =0 (и реле выключено) { digitalWrite(10,HIGH); // запустить реле flag=1; // запомнить что реле вкдючено onTime = millis()-onTime; // начать считать delay(500); // защита от дребезга } if(digitalRead(2)==HIGH && flag==1) // если кнопка нажата и flag =1 (и реле работает) { digitalWrite(10,LOW); // выключить реле. flag=0; // запомнить что реле выключено offTime = millis()-offTime; // закончили считать delay(500); // защита от дребезга long unsigned pausa = offTime - onTime; // расчитываю продолжительность работы реле Serial.print("onTime"); Serial.println (onTime); Serial.print("offTime"); Serial.println (offTime); Serial.print("pausa"); Serial.println (pausa); offTime =0; // обнуляем onTime =0; // счетчики } }
в чём вопрос-то ?
...голова не варит уже :(
это так - для начала, нужно доделывать
вопос в том что есть защита от дребезга в виде delay ()
читал что она тормозит процес.
потому хочу от нее избавиться,
прошу сильно не пинать ногами по образованию повар, ардуину ток 3-ю неделю изучаю.
програмирование познаю с нуля потому могу делать ошибки.
забыл добавить , конпку подтягиваю к земле через резистор 10 кОм
кстати, по мере продвижения появляються вопросы
1)как реализовать аварийный стоп? (нажал кнопку и все остановилось не важно какой процесс выполняеться(в моем случае реле))
2) как пользоваться функцией stop?
пишу в редакторе слово stop оно подсвечиваеться красным, стало быть есть такая функция в arduino /
хотел почитать как ей пользоваться но гугл дает только англоязычные сайты.
всем спасибо за понимание и подсказки
Спасибо Буду разбираться