La gestione dei relè è molto semplice e basilare. Non richiede grosse conoscenze e usa le uscite digitali di Arduino. Ho usato questi due tipi di moduli relè per fare delle prove:
Inizialmente con il modulo da 8 relè ho provato a temporizzarli in sequenza:
void setup() { pinMode(1, OUTPUT); // sets the digital pin as output pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT);
for (int i=1;i<=8; i++) digitalWrite(i,HIGH); }
void loop() { digitalWrite(8, HIGH); digitalWrite(1, LOW); delay (1000); for (int i=1;i<8;i++){ digitalWrite(i,HIGH); digitalWrite(i+1,LOW); delay(1000); } }
|
Come si vede dallo skech, il codice è molto semplice e intuitivo. Lascio a voi lettori capire come collegarli.
Poi ho provato a sincronizzare i relè con i secondi e quindi usando il modulo RTC:
#include <Wire.h> #include "RTClib.h"
RTC_DS1307 RTC;
int a[]={0,10,20,30,40,50};
void setup() { Serial.begin(9600); Wire.begin(); RTC.begin(); if (!RTC.isrunning()) { Serial.println("RTC is NOT running!"); // following line sets the RTC to the date & time this sketch was compiled //RTC.adjust(DateTime(__DATE__, __TIME__)); } pinMode(9, OUTPUT); // sets the digital pin as output pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT);
for (int i=2;i<=9; i++) digitalWrite(i,HIGH); }
void loop(){ DateTime now = RTC.now(); int sec=now.second(); for (int i=0;i<=5;i++){ if (sec==a[i]){ data(); digitalWrite(2, LOW); delay (1000); for (int i=2;i<9;i++){ digitalWrite(i,HIGH); digitalWrite(i+1,LOW); delay(1000); } digitalWrite(9, HIGH); } } }
|