Здравствуйте уважаемые форумчане! Помогите пожалуйста исправить (дописать) скетч. Идея такая: при нажатии и удержании кнопки, светодиод горит с минимальной яркостью. Отпускаем кнопку- светодиод тухнет, нажимаем (и удерживаем) снова- светодиод горит ярче и т.д по кругу. Задача сделать так, чтоб условие выполнения цикла выполнялось в том случае, если пауза между нажиманиями кнопки была не более 1 секунды. Если пауза более одной секунды, то независимо в каком предидущем состоянии яркости был светодиод, он зажигался с минимальной яркостью. Типа цикл начинается сначала. Вот сам скетч: int switchPin = 10; int ledPin = 11; boolean lastButton = LOW; int ledLevel = 0; // boolean currentButton = LOW; int stepp = 51; void setup() { pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); } boolean debounce(boolean last) { boolean current = digitalRead(switchPin); if (last != current) { delay(5); current = digitalRead(switchPin); } return current; } void loop() { currentButton = debounce(lastButton); if (lastButton == LOW && currentButton == HIGH) { ledLevel = ledLevel + stepp; // Меняем значение яркости на stepp } lastButton = currentButton; if (ledLevel > 255) ledLevel = stepp; // Ограничиваем макс. значение в 255 // и вместо нуля включаем мин яркость if (currentButton==HIGH) analogWrite(ledPin, ledLevel); // эта строчка будет зажигать светодиод с нужной яркостью //но только если кнопка нажата else analogWrite(ledPin, 0); // а иначе выключаем все }
|