Questo è il codice (elimino un pò di righe sopra il setup perchè troppo lungo il messaggio, non definisco nulla di importante):
#include <Time.h>
#include <TimeAlarms.h>
#include <DS3231.h>
#include <DS3232RTC.h>
#include <Wire.h>
#include <IRremote.h>
#include <LEDFader.h>
DS3231 rtc(SDA, SCL);
Time t;
//DEFINISCO RICEVITORE E TRASMETTITORE IR
int RECV_PIN = 13;
IRrecv irrecv(RECV_PIN);
IRsend irsend;
decode_results results;
//DEFINISCO I PIN UTILIZZATI
#define router A0 //RELE' 1
#define voip A1 //RELE' 2
#define wii A3 //RELE' 3
// 3 //TRASMETTITORE IR
#define pc 4 //RELE' 4
#define led_sopra 11 //TRANSISTOR GRANDE
#define led_tv 6 //TRANSISTOR GRANDE
#define stereo 7 //RELE' 5
#define giradischi 8 //RELE' 6
// #define led_stato 5 //TRANSISTOR PICCOLO
#define ventola_alimentatore 10 //TRANSISTOR GRANDE
// 11 //RICEVITORE IR
#define lampada 12 //RELE' 7
#define ventola_generale 9 //TRANSISTOR GRANDE
#define amp_giradischi A2
//#define SVILUPPI FUTURI //RELE' 8, NON UTILIZZATO
#define pulsante A5
#define interr_3luci 2
//FADE LED
LEDFader led_stato = LEDFader(5);
void setup(){
TCCR1B = (TCCR1B & 0b11111000) | 0X01;
//AVVIO IR
irrecv.enableIRIn();
//IMPOSTAZIONE LE VARIABILI TEMPO
rtc.begin();
tempoCorrente_Router_Voip=millis();
tempoCorrente_wii=millis();
tempoCorrente_pc=millis();
tempoCorrente_stereo=millis();
tempoCorrente_giradischi=millis();
//IMPOSTAZIONE INGRESSI E USCITE
pinMode(router, OUTPUT);
pinMode(voip, OUTPUT);
pinMode(wii, OUTPUT);
pinMode(pc, OUTPUT);
pinMode(led_sopra, OUTPUT);
pinMode(led_tv, OUTPUT);
pinMode(stereo, OUTPUT);
pinMode(giradischi, OUTPUT);
pinMode(ventola_alimentatore, OUTPUT);
//pinMode(led_stato, OUTPUT);
pinMode(lampada, OUTPUT);
pinMode(ventola_generale, OUTPUT);
pinMode(amp_giradischi, OUTPUT);
pinMode(pulsante, INPUT);
pinMode(interr_3luci, INPUT);
//IMPOSTAZIONE DEI PIN ALL'AVVIO
digitalWrite(router, LOW ); //RELE' 1 -------- LOW
digitalWrite(voip, LOW ); //RELE' 2 -------- LOW
digitalWrite(wii, LOW ); //RELE' 3 -------- LOW
digitalWrite(pc, LOW ); //RELE' 4 -------- LOW
analogWrite(led_sopra, 0 );
analogWrite(led_tv, 0 );
digitalWrite(stereo, LOW ); //RELE' 5 -------- LOW
digitalWrite(giradischi, HIGH ); //RELE' 6 -------- HIGH
//analogWrite(led_stato, LOW );
analogWrite(ventola_alimentatore, LOW );
digitalWrite(lampada, HIGH ); //RELE' 7 -------- HIGH
analogWrite(ventola_generale, LOW );
//digitalWrite(SVILUPPI FUTURI, HIGH ); //RELE' 8 -------- HIGH
digitalWrite(amp_giradischi, LOW );
digitalWrite(2, INPUT_PULLUP);
digitalWrite(A5, INPUT_PULLUP);
}
void loop() {
//AVVIO RECEZIONE CODICI IR
{if (irrecv.decode(&results)) {Serial.println(results.value, HEX); irrecv.resume();}}
//AVVIO DEI PROGRAMMI
Router_Voip();
Fade_led();
// Blink_led();
Wii();
Giradischi();
Pc();
Stereo();
Pulsante_riavvio_router_voip();
Pulsante_modem();
Pulsante_voip();
Pulsante_riavvio();
// Led_sopra();
//VENTOLA GENERALE
if (rtc.getTemp()<30) {analogWrite(ventola_generale, 0);}
if (rtc.getTemp()>30) {analogWrite(ventola_generale, 250);}
//VENTOLA ALIMENTATORE
if (stato_wii==0 & stato_giradischi==1){analogWrite(ventola_alimentatore, 0);}
if (stato_wii==1 & stato_giradischi==1){analogWrite(ventola_alimentatore, 200);}
if (stato_wii==0 & stato_giradischi==0){analogWrite(ventola_alimentatore, 150);}
if (stato_wii==1 & stato_giradischi==0){analogWrite(ventola_alimentatore, 250);}
//PULSANTI
lettura_interruttore_3luci = analogRead (interr_3luci);
lettura_pulsante_giradischi = results.value == 0xFF22DD;
lettura_pulsante_wii = results.value == 0xFFE21D;
lettura_pulsante_pc = results.value == 0xFF629D;
lettura_pulsante_stereo = results.value == 0xFFA25D;
lettura_pulsante_conferma_azione = results.value == 0xFF38C7;
lettura_pulsante_riavvio_router_voip = results.value == 0xFF906F;
lettura_pulsante_led_sopra = results.value == 0xFF4AB5;
// lettura_pulsante_DIMINUISCE_led_sopra = results.value == 0xFF4AB5;FF6897
lettura_pulsante_modem = results.value == 0xFFE01F;
lettura_pulsante_voip = results.value == 0xFFA857;
lettura_pulsante_riavvio = results.value == 0xFFC23D;
}
//---------------------------------------------------------------------------------------------------ALTRI PROGRAMMI---------------------------------------------------------------------------------------------
//PROGRAMMA AVVIO ROUTER E VOIP
void Router_Voip()
{if((Avvio_Router_Voip==1)||(Riavvio_Router_Voip==1)) {stato_Router_Voip=1; Avvio_Router_Voip=0; Riavvio_Router_Voip = 0; digitalWrite(router,LOW); digitalWrite(voip,LOW); stato_router = 0; stato_voip = 0; stato_led_fade=1;numero_fade=5;}
tempoCorrente_Router_Voip=millis();
if((tempoCorrente_Router_Voip-tempo_Router_Voip>=5000)&&stato_Router_Voip==1) {digitalWrite(router,HIGH); stato_router = 1; stato_Router_Voip=2; tempo_Router_Voip=millis();}
else if (stato_Router_Voip==2) {if(tempoCorrente_Router_Voip-tempo_Router_Voip>=2000) {digitalWrite(voip,HIGH); stato_voip = 1; stato_Router_Voip=0;}}}
//PROGRAMMA FADE LED DI STATO
void Fade_led()
{led_stato.update();
if ((led_stato.is_fading() == false)&&(stato_led_fade == 1))
{if (led_stato.get_value() == 255) {led_stato.fade(0, 1000);contatore_led_fade++;}
else {led_stato.fade(255, 1000);}}
if (contatore_led_fade == numero_fade){stato_led_fade = 0; contatore_led_fade = 0;}}
void Blink_led()
{led_stato.update();
if ((led_stato.is_fading() == false)&&(stato_led_blink == 1))
{if (led_stato.get_value() == 255) {led_stato.fade(0, 100);contatore_led_blink++;}
else {led_stato.fade(255, 100);}}
if (contatore_led_blink == numero_blink){stato_led_blink = 0; contatore_led_blink = 0;}}
void Wii()
{tempoCorrente_wii=millis();
if (lettura_pulsante_wii == HIGH && valore_precedente_pulsante_wii == LOW && tempoCorrente_wii - tempo_wii > ritardo_pulsante)
{if (stato_wii == 1) stato_wii = 0; else stato_wii = 1; tempo_wii = millis(); }
digitalWrite(wii, stato_wii);
valore_precedente_pulsante_wii = lettura_pulsante_wii;}
void Pc()
{tempoCorrente_pc=millis();
if (lettura_pulsante_pc == HIGH && valore_precedente_pulsante_pc == LOW && tempoCorrente_pc - tempo_pc > ritardo_pulsante)
{if (stato_pc == 1) stato_pc = 0; else stato_pc = 1; tempo_pc = millis(); }
digitalWrite(pc, stato_pc);
valore_precedente_pulsante_pc = lettura_pulsante_pc;}