помогите пожалуйста в скетче ,, как можно это делать: 1. когда Arduino получает 10 импульсов - отправить на светодиод 11 импульсов. 2. а когда Arduino получает 20 импульсов - отправить на светодиод 14 импульсов. проблема в том,что когда получает 10ый импульс, начинает отправлять импульсы на светодиод и не считывает считывает остальные 10. к примеру возмем этот скетч ,, что надо здесь изменить ?? Код (C++): const int buttonPin = 2; // номер входа, подключенный к кнопке const int ledPin = 7; // номер выхода светодиода boolean lastButten = LOW; // предыдущее состояние кнопки boolean currentButten = LOW; // текущее состояние кнопки int status = 0; void setup() { pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); } boolean debvance (boolean last) //убираем дребизг { boolean current = digitalRead (buttonPin); // считываем данные с кнопки if (last != current) // Если текущее состояни еотличететься от предыдущего { delay (5); // Ждем 5 милисек. current = digitalRead (buttonPin); // Присваеваем текущее состояние кнопки return current; } } void loop(){ currentButten = debvance (lastButten); // Передаем функции дребезга значение по умолчанию LOW if (lastButten == LOW && currentButten == HIGH) // Проверяем отпускали мы кнопку или нет { status = ++status; // инвертируем Статус } lastButten = currentButten; // Переприсваеваем прошлое состояние кнопки if (status == 10) //если статус 5 { for (int i=0; i<11; i++){ digitalWrite(ledPin,HIGH); delay(50); digitalWrite(ledPin,LOW); delay(50); } status = 0; } else // усди нажали не 5 раз выключаем светодиод { digitalWrite(ledPin,LOW); delay(20); // Ждем } }
Ясно , что надо заменить или программиста или автора ТЗ. Ответьте для начала, как может Ардуина отличить один 10 импульс (последний в из серии 10импульсов) от другого 10 импульса (10-го из серии 20 импульсов).Ведь Ардуина не электросенс и не видет будущего.
ну и как написать скетч что он отличал?? ну я думаю что может быть так ,, когда получил первый импульс жди 3 секунды пока все импульсы придут и только тагда выполняй комманды
Нужна ещё одна переменная, которая при каждом импульсе увеличивается на единицу. Затем идёт проверка значения. Как только значение = 10,переменная обнуляется и даёт команду на светодиод. Начинается новый отсчет.
Вы только копипастите? Или сами хотите научиться ? У вас в скетче условие которое проверяет переменную status. Если она == 10, то выполняется for. В конце цикла for переменная обнуляется. Вам же нужно добавить условие что бы переменная status обнулялась после значения == 20. (Условие при значении == 10, остаётся)
Я так понимаю, Сначала скетч ждёт первый импульс. Захватывает текущее время и считает импульсы, пока время меньше 3 сек. Через 3 сек проверяет сколько импульсов пришло. Если не менее 20 , мигает 14 раз и возвращается к ожиданию первого импульса. Если не менее 10, мигает 10 раз и вощвращается к ожиданию первого импульса. Понятно, что серии импульсов должны приходить не чаще чем через 3 сек.