RELE'

RELE'

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:

e51EwLjfCmL. SY300

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);
    }
  }
}