#include <TimerOne.h>
int ledpin = 4;
unsigned long time;
unsigned long interval = 500;
int counter = 0;
void setup() {
pinMode(ledpin, OUTPUT);
Serial.begin(9600);
}
void loop() {
unsigned long nowtime = millis();
if (nowtime-time >= interval) {
time = nowtime;
counter++;
digitalWrite(ledpin, HIGH);
delay (250);
digitalWrite(ledpin, LOW);
delay(250);
if (counter > 10) {
digitalWrite(ledpin, LOW);
delay(1000);
counter = 0;
}
}
Serial.println(counter);
}
//Вопрос 1
//Циклы — это конструкции, которые позволяют повторять выполнение определенного блока кода несколько раз
//цикл for, while, do while. Цикл for: Используется, когда известно количество итераций. Он состоит из трех частей: инициализации, условия и инкремента.
//Цикл while: Используется, когда количество итераций заранее неизвестно, и выполнение продолжается до тех пор, пока условие истинно.
//Цикл do...while: Похож на while, но гарантирует, что код выполнится хотя бы один раз, даже если условие ложно.
//Функция delay() используется для создания временной задержки в программе. Она останавливает выполнение программы на заданное количество миллисекунд.
//Вопрос 2
//Прерывания - это механизм, который позволяет микроконтроллеру временно прервать выполнение основной программы и выполнить определенную задачу в ответ на событие.
//После выполнения задачи микроконтроллер возвращается к выполнению основной программы.
//Аппаратные прерывания: Вызываются внешними событиями, такими как нажатие кнопки или сигнал с датчика.
//Программные прерывания: Вызываются внутренними событиями, такими как таймеры или ошибки.
//В Arduino прерывания настраиваются с помощью функции attachInterrupt(). Эта функция привязывает прерывание к определенному пину и указывает,
//какая функция должна быть вызвана при возникновении прерывания.
//Преимущества: Быстрая реакция мк и немедленное выполнение, Эффективность: Прерывания выполняют задачи параллельно с основной программой,улучшает производительность.
//Упрощение кода: Прерывания помогают разделить код на независимые блоки.