Реле с кнопкой
- Войдите на сайт для отправки комментариев
Втр, 15/11/2016 - 06:50
Есть ардуино uno, реле, и кнопка без фиксации, есть скетч :
unsigned char button_state; //состояние кнопки
unsigned char button_mem; //состояние реле
#define BUTTON 12
#define RELAY 13
void setup()
{
pinMode(RELAY,OUTPUT);
pinMode(BUTTON,INPUT);
digitalWrite(BUTTON, HIGH); //подключить внутренний подтягивающий резистор
}
void loop()
{
button_state = digitalRead(BUTTON); //прочитать состояние кнопки
delay(30); // пауза для проверки дребезга
if (digitalRead(BUTTON) == LOW && button_state == LOW && button_mem == 0)
{
digitalWrite(RELAY, HIGH);
button_mem=255; //запомнить состояние реле
while(digitalRead(BUTTON) == LOW){ delay(10);}//ждем отпускания кнопки
} else
{
if (digitalRead(BUTTON) == LOW && button_state == LOW && button_mem == 255)
{
digitalWrite(RELAY, LOW);
button_mem=0; //запомнить состояние реле
while(digitalRead(BUTTON) == LOW){ delay(10);}//ждем отпускания кнопки
}
}
}
Но этот скетч ведет себя как то странно при нажатии на кнопку реле включается и тут же выключается.
Помогите как подключить реле что бы управлять с кнопки безфиксации.
button_state == LOW ненужно в условии вашем т.к digitalRead(BUTTON) == LOW && button_state == LOW вот это условие тоже самое что вот это digitalRead(BUTTON) == LOW &&digitalRead(BUTTON) == LOW
Как вариант