Здравствуйте уважаемые форумчане!
Помогите пожалуйста исправить (дописать) скетч.
Идея такая: при нажатии и удержании кнопки, светодиод горит с минимальной яркостью. Отпускаем кнопку- светодиод тухнет, нажимаем (и удерживаем) снова- светодиод горит ярче и т.д по кругу.
Задача сделать так, чтоб условие выполнения цикла выполнялось в том случае, если пауза между нажиманиями кнопки была не более 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);
// а иначе выключаем все
}