при запуске, программа начинает мигать светодиодом на пине 13. При нажатии на кнопку раздается короткий писк буззером и мигание останавливается, при следующем нажатиии опять писк и мигание продолжается.
/*
Name: TimerTest.ino
Created: 01.10.2019 8:40:17
Author: DtS
*/
#include <Arduino.h>
#include <TimerList.h>
static const uint8_t ACTIVE_BUZZER_PIN = 4; // пин, для активного Buzzer
extern TTimerList TimerList;
THandle hBlink, hBuzzer; // хэндлы для мигателя и бузера
void tmrBuzzer(void) { // выключить бузер и остановить таймер
digitalWrite(ACTIVE_BUZZER_PIN, LOW);
TimerList.Stop(hBuzzer);
}
void tmrBlink(void) { // toggle светодиод на ноге 13
static bool state = false;
digitalWrite(LED_BUILTIN, state);
state = !state;
}
void Beep(void) { // включить бузер и взвести таймер его выключения
digitalWrite(ACTIVE_BUZZER_PIN, HIGH);
TimerList.Reset(hBuzzer);
}
// читает цифровую кнопку на пине APin
// отдает true - пока кнопка нажата.
bool KeyRead(const uint8_t APin) {
static uint32_t lastread = 0;
static bool laststate = false;
uint32_t now = millis();
if (now - lastread < 100) return laststate;
lastread = now;
uint8_t cnt = 0;
for (uint8_t i = 0; i < 8; i++) {
if (!digitalRead(APin)) cnt++;
delay(1);
}
laststate = (cnt > 4);
return laststate;
}
void setup() {
Serial.begin(115200);
delay(500);
hBlink = TimerList.Add(500, tmrBlink); // таймер мигания светодиодом на ноге 13
hBuzzer = TimerList.AddStopped(150, tmrBuzzer);// таймер буззера, 150мс, создается остановленным
pinMode(LED_BUILTIN, OUTPUT); // настройка пинов на ввод и вывод
pinMode(A0, INPUT_PULLUP); // здесь кнопка
pinMode(ACTIVE_BUZZER_PIN, OUTPUT); // здесь бузер
}
void loop() {
if (KeyRead(A0)) { // читаем кнопку, если нажата
Beep(); // запускаем писк на нажатие кнопки
while (KeyRead(A0)) ; // подождем пока кнопку атпустют
if (TimerList.isActive(hBlink)) { // если светодиод на 13 ноге мигает -
digitalWrite(LED_BUILTIN, LOW); // потушим его
TimerList.Stop(hBlink); // и остановим мигание
}
else
TimerList.Reset(hBlink); // ну а если светодиод не мигает - запустим мигание снова
}
}
чувствуется тлетворное влияние MS-DOS (я о хэндлах) )))
Дед, я тут подумал, а не может тот сбой в таймере происходить из-за корректировки миллиса?
Я тут наливатор собираю, на 2 рюмки, но с разных ёмкостей, с валерянкой и с невалерянкой. Тама 7 таймеров используются, если наливать будет исправно, значт, дело не в таймерах.
ПыСы Хотя, хренывознает. У мня за стокалет ни одного сбоя в таймерах не было, если прерывания были не запрещены.
так еще DIMAX писал, что если что-то может не заработать должным образом, оно у меня обязательно не заработает...
Тестировщик интересно никому не нужен за умеренные деньги )))
Вопщем, тебе понадобица:
1 Встроенный светодиод на пине 13
2 Тактовая кнопка на пине A0
3 Активный буззер на пине D4
при запуске, программа начинает мигать светодиодом на пине 13. При нажатии на кнопку раздается короткий писк буззером и мигание останавливается, при следующем нажатиии опять писк и мигание продолжается.
чувствуется тлетворное влияние MS-DOS (я о хэндлах) )))
чувствуется тлетворное влияние MS-DOS (я о хэндлах) )))
Дак оне и в виндовсе никуда не делись, тока обзываюца теперь по-умному "дескрипторы"
чувствуется тлетворное влияние MS-DOS (я о хэндлах) )))
Дак оне и в виндовсе никуда не делись, тока обзываюца теперь по-умному "дескрипторы"
княжиче? (де скрип-тор)
княжиче? (де скрип-тор)
Не заставляй меня скрипеть межушным ганглием, в это хмурое дождливое утро. Не задалась чота у нас со с котом жизнь в городе со вчерашнего вечера.
княжиче? (де скрип-тор)
Не заставляй меня скрипеть межушным ганглием, в это хмурое дождливое утро. Не задалась чота у нас со с котом жизнь в городе со вчерашнего вечера.
чота воздуху мне мало, копытом бью, туман бросаю?
Дед, я тут подумал, а не может тот сбой в таймере происходить из-за корректировки миллиса?
Нет
ПыСы Хотя, хренывознает. У мня за стокалет ни одного сбоя в таймерах не было, если прерывания были не запрещены.
Спасибо. Буду экспериментировать.
Кста, получилось чонить?
Дед, я тут подумал, а не может тот сбой в таймере происходить из-за корректировки миллиса?
Я тут наливатор собираю, на 2 рюмки, но с разных ёмкостей, с валерянкой и с невалерянкой. Тама 7 таймеров используются, если наливать будет исправно, значт, дело не в таймерах.
Нет
ПыСы Хотя, хренывознает. У мня за стокалет ни одного сбоя в таймерах не было, если прерывания были не запрещены.
так еще DIMAX писал, что если что-то может не заработать должным образом, оно у меня обязательно не заработает...
Тестировщик интересно никому не нужен за умеренные деньги )))
Кста, получилось чонить?
Доброго дня. Да, огромное спасибо. Сейчас пилю проект и думаю через пару недель попробую тут разместить.
Ну ок. Будут вопросы - отвечу. Тока, днем, када я трезвый. :-)