Vai al contenuto
PLC Forum


comandare due relè da telecomando tv


claudiomagic

Messaggi consigliati

Gentili appassionati,

Sono alle prese con un progetto ,il quale mi dovrebbe semplificare la vita quotidiana.

Seduto nella mia poltrona  quando guardo la tv devo comandare due relè da tasti che non uso comunemente del mio telecomando.

Grazie allo sketch di un nostro appassionato sono riuscito nell'intento ma solo in parte. 

Cambiando ovviamente il codice dei  tasti del mio telecomando sotto i due sketch :

 

TASTO ROSSO

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
String stato;

void setup()
{
  pinMode(2, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value);
   
    if((results.value == 0x20DF4EB1) ){
    
    stato = "acceso1";
    digitalWrite(2, HIGH);
    delay (400);
    digitalWrite(2, LOW);
   
    }
    else if (results.value == 1) {
    stato = "acceso2";
    digitalWrite(3, HIGH);
    }
    else if (results.value == 1) {
    stato = "acceso3";
    digitalWrite(4, HIGH);
    }
    else if (results.value == 1) {
    stato = "mantieniacceso";
    }
    else {
    stato = "spento";
    };
   
    if(stato == "acceso1"){
    digitalWrite(2, HIGH);
    delay (400);
    digitalWrite(2, LOW);
    }
    else if (stato == "acceso2") {
    digitalWrite(3, HIGH);
    }
    else if (stato == "acceso3") {
    digitalWrite(4, HIGH);
    }
    else if (stato == "mantieniacceso") {
    }
    else if (stato == "spento") {
    digitalWrite(4, LOW);
    digitalWrite(3, LOW);
    digitalWrite(2, LOW); 
    };   
   
   
   
    irrecv.resume(); // Receive the next value
  }
}

TASTO BLU

#include <IRremote.h>

 


int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
String stato;

void setup()
{
  pinMode(3, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value);
   
    if((results.value == 0x20DF8679) ){
    
    stato = "acceso1";
    digitalWrite(3, HIGH);
    delay (400);
    digitalWrite(3, LOW);
   
    }
    else if (results.value == 1) {
    stato = "acceso2";
    digitalWrite(3, HIGH);
    }
    else if (results.value == 1) {
    stato = "acceso3";
    digitalWrite(4, HIGH);
    }
    else if (results.value == 1) {
    stato = "mantieniacceso";
    }
    else {
    stato = "spento";
    };
   
    if(stato == "acceso1"){
    digitalWrite(2, HIGH);
    delay (400);
    digitalWrite(2, LOW);
    }
    else if (stato == "acceso2") {
    digitalWrite(3, HIGH);
    }
    else if (stato == "acceso3") {
    digitalWrite(4, HIGH);
    }
    else if (stato == "mantieniacceso") {
    }
    else if (stato == "spento") {
    digitalWrite(4, LOW);
    digitalWrite(3, LOW);
    digitalWrite(2, LOW); 
    };   
   
   
   
    irrecv.resume(); // Receive the next value
  }
}

 

 

IL mio problema e che funzionano bene singolarmente  ma non riesco a combinare i due sketch insieme.

Grazie

Link al commento
Condividi su altri siti


in ogni sketch puoi avere solo una funzione setup() ed una  loop() .

Per cui devi accoppiare il codice delle due funzioni setup e loop e in una sola setup e una sola loop , stando attento a non sovrascrivere le variabili che usi .

Se le due funzioni loop usano le stesse variabili ne mantieni una e l'altra la inventi come nuova a la usi al posto della seconda variabile 

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...