Go Down

Topic: semplice trasmissione / ricezione IR (Read 253 times) previous topic - next topic

kurochan

Salve, premetto che sono disperato e non so veramente come uscire da questa situazione.
Ho da veramente poco preso in mano per la prima volta arduino e sto cercando di costruire una scatola, con un semplice LED infrarossi in trasmissione ed un sensore in ricezione che, quando smette di riceve il segnale infrarossi accende un normale led. Un po' come le porte degli ascensori.
Sono sicuro che la cosa sia facile, ed ho letto in lungo in largo, praticamente ogni pagina dove si parlava di comunicazione infrarossi ma continuo a riscontrare lo stesso problema: il ricevitore IR non ne vuole sapere di leggere i segnali che gli invio. Se gli punto un qualsiasi telecomando legge tutti i segnali, non legge quelli del mio trasmettitore, ed il problema è di tipo hardware all 100%.

Ho provato moltissime configurazioni, e questa è l'ultima alla quale sono arrivato, ricorrendo perfino agli pseudo-thread
Code: [Select]
#include <Thread.h>
#include <ThreadController.h>
#include <IRremote.h>

// -------------------------------------
//

int RECV_PIN = 11;
const int tx= 3;
int led= 13;
IRrecv irrecv(RECV_PIN);
IRsend irsend;
decode_results results;
unsigned int S_pwr[68]={4600,4350,700,1550,650,1550,650,1600,650,450,650,450,650,450,650,450,700,400,700,1550,650,1550,650,1600,650,450,650,450,650,450,700,450,650,450,650,450,650,1550,700,450,650,450,650,450,650,450,650,450,700,400,650,1600,650,450,650,1550,650,1600,650,1550,650,1550,700,1550,650,1550,650};

// -------------------------------------


// ThreadController che controllerà tutti i thread
ThreadController controll = ThreadController();


//Thread TXThread = Thread();
Thread RXThread = Thread();

// callback per transmit
/*void transmit(){
        irsend.sendSony((char)'CIAO' ,20);
}*/

void receiv(){
        if(irrecv.decode(&results)){
           Serial.println("LETTO ");
           Serial.println((char)results.value, HEX);
           //Serial.println(results.decode_type);
           irrecv.resume();
        }
}

void setup(){
Serial.begin(9600);
        irrecv.enableIRIn(); // avvio la ricezione
        pinMode(led, OUTPUT);
        irrecv.blink13(true);
       
        // Configurazione TXThread
//TXThread.onRun(transmit);
//TXThread.setInterval(0.5);

        // Configurazione RXThread
RXThread.onRun(receiv);
RXThread.setInterval(800);



// aggiunta di entrambi i thread al controller
//controll.add(&TXThread); // & per passargli il puntatore
        controll.add(&RXThread);

        // ---------------------------------------------------------
       
       
}

void loop(){
// run ThreadController
// this will check every thread inside ThreadController,
// if it should run. If yes, he will run it;
controll.run();
// Resto del codice

        irsend.sendRaw(S_pwr,68,38);
        delay(50);
        //irsend.sendSony((char)'C', 12);
}



Sarei felicissimo se qualcuno potesse dirmi che codice devo utilizzare/come modificare il mio codice per fare una applicativo tipo le porte dell'ascensore, che trasmette sempre e riceve sempre, e quando il flusso si interrompe fa qualcosa, come accendere un led.
grazie mille in anticipo.

nid69ita

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- qui le pinout delle varie schede by xxxPighi: Pinout
- qui una serie di link generali utili: Link Utili
my name is IGOR, not AIGOR

Go Up