Макет защиты от протечек на Ардуино
- Войдите на сайт для отправки комментариев
Втр, 10/01/2017 - 22:59
Вктратце на данной стадии замысел такой
На water level sensor поступает вода, загарается светодиод, по нажатию кнопки он отключается
Мой скетч
__________________________________________________________________________________________
#define BUTTON_PIN 3
#define LED_PIN 12
boolean buttonWasUp = true;
boolean ledEnabled = false;
int x;
void setup()
{
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop()
{
boolean buttonIsUp = digitalRead(BUTTON_PIN);
if (buttonWasUp && !buttonIsUp) {
delay(10);
buttonIsUp = digitalRead(BUTTON_PIN);
if (!buttonIsUp) {
}
}
buttonWasUp = buttonIsUp;
x = analogRead(A0);
if (x > 100) { digitalWrite (LED_PIN, HIGH); }
if (x < 100) { digitalWrite (LED_PIN, LOW); }
}
подскажите что не так, ибо после подключения кнопки диод горит непереставая.
Заранее спасибо
Для начала: в скетче состояние светодиода зависит исключительно от уровня напряжения на входе А0, то есть от трёх последних строчек. На этот вход АЦП на макетке хоть что-нибудь подключено? Схему соединений хорошо бы набросать.
Зачем в скетче инициализация serial, если не используется вывод отладочной информации?
Для начала: в скетче состояние светодиода зависит исключительно от уровня напряжения на входе А0, то есть от трёх последних строчек. На этот вход АЦП на макетке хоть что-нибудь подключено? Схему соединений хорошо бы набросать.
Зачем в скетче инициализация serial, если не используется вывод отладочной информации?
На А0 подключен тот самый water level sensor
смотрим вверх
В коде
if (!buttonIsUp) { }между фигурными скобками должно быть гашение светодиода. Плюс он гаснет при снижении значения АЦП меньше 100. Коль уж прицепили сериал - выводите туда переменные и значеня с АЦП для контроля.
И выкладывайте код правильно, с использованием кнопки code, большой код должен быть по умолчанию свёрнут.
уровень программирования маленький.. сам до такого не дойду)
Дык уровень повышать надо.
#define BUTTON_PIN 3 #define LED_PIN 12 boolean buttonWasUp = true; //boolean ledEnabled = false; int x; void setup() { pinMode(LED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(A0, INPUT); } void loop() { boolean buttonIsUp = digitalRead(BUTTON_PIN); if (buttonWasUp && !buttonIsUp) { delay(10); buttonIsUp = digitalRead(BUTTON_PIN); if (!buttonIsUp) { digitalWrite (LED_PIN, LOW); } } buttonWasUp = buttonIsUp; x = analogRead(A0); if (x > 100) { digitalWrite (LED_PIN, HIGH); } if (x < 100) { digitalWrite (LED_PIN, LOW); } }Вот код с добавленым гашением светодиода. Но! Он отработает только один раз (поскольку при изменении buttonWasUp на LOW входа в условие уже не будет), и то при условии, что в момент нажатия кнопки значение с АЦП меньше 100. Почему - разбирайтесь)
Большое спасибо, поразбираюсь)))