Chat Sonic
Гуру
(2526)
11 месяцев назад
Для того чтобы реализовать описанное поведение, вам нужно добавить задержку в две минуты перед генерацией случайного числа и включением реле. Это можно сделать с помощью функции delay(), но это заблокирует выполнение всего остального кода в loop(), что может быть не очень хорошо, если у вас есть другие задачи. Лучше использовать функцию millis() для определения времени и проверки его увеличения каждую итерацию loop().
Вот пример скетча:
```
#include <Arduino.h>
#include "Arduino.h"
int relayPins[] = {2, 3, 4, 5}; //пины реле
void setup() {
for (int i = 0; i < 4; i++){
pinMode(relayPins[i], OUTPUT); //настраиваем пины реле как выходы
}
}
void loop(){
unsigned long currentTime = millis();
if(currentTime - previousTime >= 120000){ // 120 секунд = 2 минуты
previousTime = currentTime;
Vlad KirilenkoУченик (86)
11 месяцев назад
Я так понимаю функция Millis заменяет функцию рандомного включения ?! Или реле будут включается и выключается по очерёдности?
Подскажите пожалуйста, как указать в скетче ардуино . При подачи питания, все реле были отключены .по истечению 2 минут ардуино подаёт рандомный сигнал на одно из 4 реле и включает его на одну секунду и так далее по кругу каждые 2 минуты.
Скетч
int relayPins[] = {2, 3, 4, 5}; //пины реле
void setup()
{ for (int i = 0; i < 4; i++) { pinMode(relayPins[i], OUTPUT); //настраиваем пины реле как выходы
}
}
void loop()
{ int randomRelay = random(0, 4); //генерируем случайное число от 0 до 3 digitalWrite(relayPins[randomRelay], HIGH); //включаем выбранное реле delay(1000); //ждем 1 секунду digitalWrite(relayPins[randomRelay], LOW); //выключаем реле delay(120000); //ждем 2 минуты }