- Codice: Seleziona tutto
TCCR1B = (TCCR1B & 0b11111000) | 0X01;
che mi varia il timer 1 sui pin 9 e 10.
La ventola non emette più nessun ronzio ma appena viene dato il comando di accensione (che sia tramite pulsante o sensore di temperatura) la ventola parte come dichiarato ma il codice si blocca non eseguendo più nessun'altra funzione.
Se elimino la riga il tutto torna a funzionare come dovrebbe. Come mai questo comportamento?
Allego tutto il codice:
- Codice: Seleziona tutto
#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);
//COSTANTI VOIP E ROUTER
unsigned long time;
unsigned long tempoCorrente_Router_Voip;
unsigned long tempo_Router_Voip=0;
int stato_Router_Voip = 0;
int Avvio_Router_Voip = 1;
int Riavvio_Router_Voip = 0;
//FUNZIONE LED
int stato_led_fade = 0;
int contatore_led_fade = 0;
int numero_fade = 0;
int stato_led_blink = 0;
int contatore_led_blink = 0;
int numero_blink = 0;
//INTERRUTTORE E PULSANTE
int lettura_interruttore_3luci;
//PULSANTI IR
#define ritardo_pulsante 500
int stato_wii = 0;
int lettura_pulsante_wii;
int valore_precedente_pulsante_wii = LOW;
unsigned long tempo_wii = 0;
unsigned long tempoCorrente_wii;
int stato_pc = 0;
int lettura_pulsante_pc;
int valore_precedente_pulsante_pc = LOW;
unsigned long tempo_pc = 0;
unsigned long tempoCorrente_pc;
int stato_stereo = 0;
int lettura_pulsante_stereo;
int valore_precedente_pulsante_stereo = LOW;
unsigned long tempo_stereo = 0;
unsigned long tempoCorrente_stereo;
unsigned long tempo_ir_stereo;
int stato_giradischi = 1;
int lettura_pulsante_giradischi;
int valore_precedente_pulsante_giradischi = LOW;
unsigned long tempo_giradischi = 0;
unsigned long tempoCorrente_giradischi;
int stato_riavvio_router_voip = 1;
int lettura_pulsante_riavvio_router_voip;
int lettura_pulsante_conferma_azione;
int valore_precedente_pulsante_conferma_azione = LOW;
unsigned long tempo_riavvio_router_voip = 0;
unsigned long tempoCorrente_riavvio_router_voip;
int stato_router = 0;
int stato_pulsante_modem = 1;
int lettura_pulsante_modem;
unsigned long tempo_riavvio_modem = 0;
unsigned long tempoCorrente_riavvio_modem;
int stato_voip = 0;
int stato_pulsante_voip = 1;
int lettura_pulsante_voip;
unsigned long tempo_riavvio_voip = 0;
unsigned long tempoCorrente_riavvio_voip;
int stato_riavvio = 1;
int lettura_pulsante_riavvio;
unsigned long tempo_riavvio= 0;
unsigned long tempoCorrente_riavvio;
int stato_led_sopra = 0;
int lettura_pulsante_led_sopra;
int valore_precedente_pulsante_led_sopra=LOW;
unsigned long tempo_led_sopra = 0;
unsigned long tempoCorrente_led_sopra;
int luminosita=0;
//FUNZIONE PER RIAVVIARE ARDUINO
void(* Riavvia)(void) = 0;
//--------------------------------------------------------------------------------------------------SETUP-------------------------------------------------------------------------------------------
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();
//PROGRAMMA RIAVVIO E SPEGNIMENTO DISPOSITIVI
t = rtc.getTime();
if (t.date == 1 && t.hour == 05 && t.min == 00 && t.sec == 00) {Riavvia();} //Riavvia arduino il 1 alle 05:00:00
if (t.date == 06 && t.hour == 13 && t.min == 33 && t.sec == 00) {Riavvio_Router_Voip = 1;} //Riavvia router e voip il 15 alle 05:00:00
if (t.date == 06 && t.hour == 13 && t.min == 32 && t.sec == 00) {stato_led_blink=1;numero_blink=1000;}
if (t.hour == 05 && t.min == 30 && t.sec == 00) {digitalWrite(PC, LOW ); digitalWrite(stereo, LOW ); digitalWrite(wii, LOW ); digitalWrite(giradischi, LOW );} //Spegne alle 05:30:00
//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;}
void Stereo()
{tempoCorrente_stereo=millis();
if (lettura_pulsante_stereo == HIGH && valore_precedente_pulsante_stereo == LOW && tempoCorrente_stereo - tempo_stereo > ritardo_pulsante)
{if (stato_stereo == HIGH) stato_stereo = LOW; else stato_stereo = HIGH; tempo_stereo = millis(); }
digitalWrite(stereo, stato_stereo);
valore_precedente_pulsante_stereo = lettura_pulsante_stereo;}
void Giradischi()
{tempoCorrente_giradischi=millis();
if (lettura_pulsante_giradischi == HIGH && valore_precedente_pulsante_giradischi == LOW && tempoCorrente_giradischi - tempo_giradischi > ritardo_pulsante)
{if (stato_giradischi == 1) stato_giradischi = 0; else stato_giradischi = 1; tempo_giradischi = millis(); }
digitalWrite(giradischi, stato_giradischi);
digitalWrite(amp_giradischi, !stato_giradischi);
valore_precedente_pulsante_giradischi = lettura_pulsante_giradischi;}
void Pulsante_riavvio_router_voip()
{if (stato_riavvio_router_voip == 1 && lettura_pulsante_riavvio_router_voip == HIGH){ tempo_riavvio_router_voip = millis() + 2000; stato_riavvio_router_voip = 2; led_stato.fade(255, 500);}
if (stato_riavvio_router_voip == 2 && lettura_pulsante_conferma_azione == HIGH && millis() < tempo_riavvio_router_voip) {stato_riavvio_router_voip = 3;}
if (stato_riavvio_router_voip == 2 && millis() > tempo_riavvio_router_voip) {stato_riavvio_router_voip = 4;}
if (stato_riavvio_router_voip == 3) {Riavvio_Router_Voip=1; stato_riavvio_router_voip = 1;}
if (stato_riavvio_router_voip == 4) {stato_riavvio_router_voip = 1; led_stato.fade(0, 500);}}
void Pulsante_modem()
{if (stato_pulsante_modem == 1 && lettura_pulsante_modem == HIGH){ tempo_riavvio_modem = millis() + 2000; stato_pulsante_modem = 2; led_stato.fade(255, 500);}
if (stato_pulsante_modem == 2 && lettura_pulsante_conferma_azione == HIGH && millis() < tempo_riavvio_modem) {stato_pulsante_modem = 3;}
if (stato_pulsante_modem == 2 && millis() > tempo_riavvio_modem) {stato_pulsante_modem = 4;}
if (stato_pulsante_modem == 3) {stato_pulsante_modem = 1;
{if (lettura_pulsante_conferma_azione == HIGH) {if (stato_router == 1) {digitalWrite(router, LOW); stato_router = 0;} else {digitalWrite(router, HIGH); stato_router = 1;}}}}
if (stato_pulsante_modem == 4) {stato_pulsante_modem = 1; led_stato.fade(0, 500);}}
void Pulsante_voip()
{if (stato_pulsante_voip == 1 && lettura_pulsante_voip == HIGH){ tempo_riavvio_voip = millis() + 2000; stato_pulsante_voip = 2; led_stato.fade(255, 500);}
if (stato_pulsante_voip == 2 && lettura_pulsante_conferma_azione == HIGH && millis() < tempo_riavvio_voip) {stato_pulsante_voip = 3;}
if (stato_pulsante_voip == 2 && millis() > tempo_riavvio_voip) {stato_pulsante_voip = 4;}
if (stato_pulsante_voip == 3) {stato_pulsante_voip = 1;
{if (lettura_pulsante_conferma_azione == HIGH) {if (stato_voip == 1) {digitalWrite(voip, LOW); stato_voip = 0;} else {digitalWrite(voip, HIGH); stato_voip = 1;}}}}
if (stato_pulsante_voip == 4) {stato_pulsante_voip = 1; led_stato.fade(0, 500);}}
void Pulsante_riavvio()
{if (stato_riavvio == 1 && lettura_pulsante_riavvio == HIGH){ tempo_riavvio = millis() + 2000; stato_riavvio = 2;led_stato.fade(255, 500);}
if (stato_riavvio == 2 && lettura_pulsante_conferma_azione == HIGH && millis() < tempo_riavvio) {stato_riavvio = 3;}
if (stato_riavvio == 2 && millis() > tempo_riavvio) {stato_riavvio = 4;}
if (stato_riavvio == 3) {Riavvia(); stato_riavvio = 1; led_stato.fade(0, 500);}
if (stato_riavvio == 4) {stato_riavvio = 1; led_stato.fade(0, 500);}}

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



