Answer the question
In order to leave comments, you need to log in
How to close and open a circuit with an arduino with a relay?
help with a simple problem.
Here is a sketch for opening the circuit for turning on the motor through the relay when the button is pressed.
#define button_pin 3 // пин кнопки
#define relay_pin 6 // пин реле
boolean butt_flag = 0; // флажок нажатия кнопки
boolean butt; // переменная, хранящая состояние кнопки
boolean flag = 0; // флажок режима
//const int mtime = 120000;
unsigned long last_press; // таймер для фильтра дребезга
unsigned long my_timer;
unsigned long my_timer2;
void setup() {
pinMode(button_pin, INPUT_PULLUP); // кнопка подтянута внутренним резистором
pinMode(relay_pin, OUTPUT); // пин реле как выход
}
void loop() {
butt = !digitalRead(button_pin); // считать текущее положение кноопки
if (butt == 1 && butt_flag == 0 && millis() - last_press > 100) { // если кнопка нажата, до этого была бы отпущена
butt_flag = 1; // запоминаем, что нажали кнопку
flag = !flag; // инвертируем флажок
last_press = millis(); // запоминаем время
digitalWrite(relay_pin, flag); // подаем сигнал на пин реле
}
if (butt == 0 && butt_flag == 1) { // если кнопка отпущена, и до этого была нажата
butt_flag = 0; // запоминаем, что отпустили кнопку
my_timer = millis(); // таймер
}
if (butt == 1 && butt_flag == 0 && millis() - my_timer == 120000 ) {
butt_flag = 1; // запоминаем статус нажатия
flag = !flag; // инвертируем флажок
digitalWrite(relay_pin, flag); // подаем сигнал на пин реле
my_timer2 = millis();
}
if (butt == 0 && butt_flag == 1 && millis() - my_timer2 == 120000 ) {
butt_flag = 0; // запоминаем статус нажатия
flag = !flag; // инвертируем флажок
my_timer = millis();
digitalWrite(relay_pin, flag); // подаем сигнал на пин реле
}
}
Answer the question
In order to leave comments, you need to log in
Don't use delay. This is a dead end solution that will slow down absolutely everything if there are more than one action. Well, for example, if you need to close relay No. 1 every 2 minutes for 10 seconds, and relay No. 2 every 3 minutes for 6 seconds
https://alexgyver.ru/lessons/time/
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question