Светодиод, кнопка и потенциометр
- Войдите на сайт для отправки комментариев
Сб, 27/06/2015 - 19:45
Помогите разобраться, в чём ошибка. Нужно что бы светодиод загорался при нажатии кнопки, горел определенное время установленное потенциометром, после чего сам выключался и ждал нового нажатия кнопки. В дальнейшем предполагается выводить время горения на светодиодную панель.
Сейчас светодиод загорается при нажатии кнопки и гаснет только при нажатии кнопки снова.
int switchPin = 2;
int ledPin = 8;
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;
#define pot A0
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);
int x;
x = analogRead(pot) * 5;
if (lastButton == LOW && currentButton == HIGH && x > 0.01)
{
ledOn = !ledOn;
digitalWrite(ledPin, HIGH);
delay(x);
digitalWrite(ledPin, LOW);
}
lastButton = currentButton ;
digitalWrite(ledPin, ledOn);
}
Ошибка в 3895 строке.
Использование разных типов при сравнении. Сравнение переменной целого типа со значением 0.01 (отгадайте с трех раз, будет оно выполняться или нет).
Хотя бы для прикола, вывели бы значения, получаемые с потенциометра в монитор и посмотрели значения. Примеры есть в среде ArduinoIDE.
Спасибо за ответ. 0.01 сменила на 1. Проблема в том, что светодиод выключается только при нажатии кнопки, а должен выключатся сам по истечении времени х.
Вопрос на засыпку, если x умножается на 5, то какие значения может принимать x? Очевидно 0,5,10,15 и т.д.
Но это все мелочи, условие x > 1 можно смело выкинуть. Все остальное, про что я писал намного важнее.
Не совсем вас поняла, с ардуино занимаюсь второй вечер…
Этот код работает в принципе нормально, только одна проблема при зажатой кнопке цикл повторяется, как сделать так, что бы цикл запускался после нажатия – отпускания кнопки.
наверное нужно добавить еще одну переменную которая будет проверять была ли отпущена кнопка или осталась зажата
Вот в этом и проблема, что и куда добавить???:)
Вам лень почитать, попробовать запускать примеры, а кто должен за Вас это сделать?
Посмотрите тут . И после нескольких проб ваш вопрос будет снят.Примеров из первого поста для решения вашей проблемы вполне достаточно.
Спасибо! Всё работает!
Может быть моё сообщение совсем не в тему, но я вам завидую Ева!
За 2 дня вы очень хорошо продвинулись в изучении ардуино, вон уже и дисплей по i2c подключили...