помогите вынести блинк в отдельную функцию
- Войдите на сайт для отправки комментариев
Втр, 11/05/2021 - 02:16
[code] // обьявление глобальных переменных и констант byte led_pin = 0; int time_delay = 0; byte variable = 0; byte val = 0; byte state = 0; boolean a_flag = 0; boolean b_flag = 0; byte last_pin=0; byte chek_button() // обработчик кнопки { byte button = 8; pinMode(button,INPUT_PULLUP); // устанавливаем пин с кнопкой на вход включ встроенный подтяг резистор a_flag = !digitalRead(button); // читаем состояние кнопки вкл/выкл if(a_flag == 1 && b_flag == 0) // кнопка нажата { b_flag = 1; val++; } if(val>3) { val = 0; } if(a_flag == 0 && b_flag == 1) // кнопка отпущена { b_flag = 0; } return(val); } void led_blink(int led_pin,int time_delay) // функция мигание светодиода { pinMode(led_pin,OUTPUT); // устанавливаем пин на вывод unsigned long lastTime=0; digitalWrite(led_pin,state); // включаем/выключаем светодиод digitalWrite(last_pin,0); // выключаем предыдущий светодиод if(millis()- lastTime > time_delay) { lastTime = millis(); // сохраняем текущее время state =!state; last_pin=led_pin; } } void setup() { } void loop() { variable = chek_button(); time_delay = 200; // задержка switch(variable) // при нажатии кнопки перелистываем пины { case 1: led_pin = 3; break; case 2: led_pin = 4; break; case 3: led_pin = 5; break; } led_blink(led_pin,time_delay); // передаем функции блинк номер пина и задержку } [/code]
сейчас код работает так: при нажатии кнопки загорается очередной светодиод, но не мигает =( не могу понять как это реализовать
Переменные объявленные внутри функций уничтожаются при выходе из функции.
Что бы этого не происходило их нужно объявлять с атрибутом static