ARDUINO Подсчет количества выполненных условий

Gridzilla

✩✩✩✩✩✩✩
29 Ноя 2019
26
7
Привет всем. Пока не могу сообразить как правильно задать вопрос.

Допустим, имеем мы простенький скетч с миганием светика (опустим вводные по либам и прочие с экраном):
  1. void loop(){
  2. digitalWrite(13, HIGH);
  3. delay(1000);
  4. digitalWrite(13, LOW);
  5. delay(1000);
  6. }
Вопрос вот в чем, как мне подсчитать количество миганий? Чтобы, например, после 10 раз он мне выдал примерно следующее:
myOLED.clrScr();
myOLED.setFont(RusFont);
myOLED.print(F("ВЫКЛЮЧИ"), CENTER, 15);
myOLED.print(F("! ! !"), CENTER, 45);
myOLED.update();

Может сами мигания вывести в функцию:
void miganie() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
И уже потом считать их количество?

Если не с примерами, то хотя бы пните новичка в нужную сторону, где почитать про это.
 
Последнее редактирование:

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,652
409
Москва
если луп такой простой и тупенький, то можно сделать просто:
C++:
void loop(){
static int counter=0;
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
counter++;
if (counter==10)   
{
    // тут было 10 миганий.
    
    // counter=0;  обнуляем или оставляем считать далше
    // при превышении макс. значения переменной counter будет пвторный вызов по 10 миганий
}
}
Про счетчик начал писать в примере, но продолжу тут. если взять для него тип данных байт (0-255), то после 255 будет опять 0 , 1 и т.д. и повторное выполнение условия . Если обнулить тоже. Но условия пока совсем не ясны. Например непонятно нужно ли продолжать мигать , после вывода сообщения ?
 
  • Лойс +1
Реакции: Gridzilla

Gridzilla

✩✩✩✩✩✩✩
29 Ноя 2019
26
7
нужно ли продолжать мигать , после вывода сообщения ?
Да, хотелось бы. Это будет как-бы предупреждение, что мол все, обрати внимание, уже сделано 10 миганий (утрированно).

Просто как бы так прописать, что после 10 циклов одной процедуры void miganie() (не обращая внимание на другие, которые будут в скетче), он бы мне написал предупреждение. Вот в чем загогулина. Грубо говоря для примера: Мигаем 5 раз, поворачиваем серву на 180 градусов, еще пять раз и еще на 180 градусов и вот поле N таких действий он выведет на экран предупреждение, но процедуру не остановит.

З.Ы. За наводку спасибо, буду экспериментировать дальше.
 
Последнее редактирование:

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,652
409
Москва
ну если у тебя мигане будет в таком виде, то с другими функциями будут вопросы. во всяком случае о быстрой реакции можно забыть. delay останавливает выполнение скетча на указанное время. где то тут есть тема про конечные автоматы и что то там без delay . в этом раздел. советую посмотреть
 
  • Лойс +1
Реакции: Gridzilla

Gridzilla

✩✩✩✩✩✩✩
29 Ноя 2019
26
7
@Старик Похабыч,
Задержка тут может быть любой, она не принципиальна. Важно само уведомление после энного количества циклов определенной процедуры. Пытаюсь на простых примерах понять как это реализовать.

Почитал про конечные автоматы. Пока с моим уровнем знаний немного туговато, но уже гораздо лучше, чем было тогда, когда весь синтаксис с++ казался сплошным "матом на неизвестном языке" :)