www.bertinettobartolomeodavide.it

 

Usare la Basic Stamp 2 di Parallax

 

PROGRAMMA 10 - Gestire telecomando ad infrarossi

Sarà interessante notare come può interagire un nostro circuito creato con la basicstamp 2 ed un ricevitore IR rivendo segnali da un telecomando per TV, radio, ecc... Premetto che non tutti i telecomandi sono compatibili con il listato così come viene presentato, perché dovrà essere adattato agli impulsi dello specifico telecomando. Consiglio di procurarvi un telecomando universale molto semplice e provare i vari settaggi fino a quando non viene trovato quello più compatibile. Armatevi di santa pazienza!

 

'{$STAMP BS2}
---> Inizializzo la BasicStamp2

'CODICI TELECOMANDO'
---> Titolo del listato


'Variabili'
codicepulsante var word

segnaleinizio var word
inputir0 var word
inputir1 var word
inputir2 var word
inputir3 var word
inputir4 var word
inputir5 var word
inputir6 var word
---> dichiaro le variabili necessarie


'Costanti'

ir_sx con 0
---> determino il canale della basicstamp sul quale è posizionato il ricevitore IR

basso con 0
---> Stato in cui l'impulso deve trovarsi per la rivelazione (0 o 1) sul canale 0, qui sarà 0(è un valore non un canale!). Cioè basso.


 

'principale'
inizio:
---> Inizio della routine

gosub decodifica

---> Salta immediatamente alla subroutine chiamata 'decodifica'
 

debug CLS, "il codice del pulsante è: ", DEC codicepulsante
---> Visualizza il codice corrispondente al tasto premuto sul telecomando e utile per avviare uno specifico evento


debug CR, "segnaleinizio è: ", DEC segnaleinizio
---> Visualizza il primo segnale inviato dal telecomando

debug CR, "inputir0 è: ", DEC inputir0
debug CR, "inputir1 è: ", DEC inputir1
debug CR, "inputir2 è: ", DEC inputir2
debug CR, "inputir3 è: ", DEC inputir3
debug CR, "inputir4 è: ", DEC inputir4
debug CR, "inputir5 è: ", DEC inputir5
debug CR, "inputir6 è: ", DEC inputir6
---> Visualizza i singoli impulsi inviati dal telecomando

goto inizio
---> Torina alla routine iniziale


'Sub routine'
decodifica:
Identifico l'inizio della subroutine

rileva:

---> Subroutine di rilevamento


pulsin ir_sx, basso, segnaleinizio
---> 'pulsin' riceve dal canale 0(in questo caso...) il segnale di inizio proveniente dal telecomando

pulsin ir_sx, basso, inputir0
pulsin ir_sx, basso, inputir1
pulsin ir_sx, basso, inputir2
pulsin ir_sx, basso, inputir3
pulsin ir_sx, basso, inputir4
pulsin ir_sx, basso, inputir5
pulsin ir_sx, basso, inputir6
---> Da il via alla ricezione dei singoli impulsi del telecomando


if segnaleinizio < 1000 then rileva
---> Dato che ogni impulso proveniente dal telecomando con durata inferiore a 512 micro secondi sarà visto come '1' e

---> ogni segnale superiore a 512 sarà visto come '0', se il segnale sarà sotto 1000 microsecondi allora tornerà alla rilevazione

---> mentre se arriverà un segnale sopra i limiti di tolleranza di pulsin (cioè 1000) allora procederà alla decodifica.


codicepulsante.bit0 = (inputir0.bit8)
codicepulsante.bit1 = (inputir1.bit8)
codicepulsante.bit2 = (inputir2.bit8)
codicepulsante.bit3 = (inputir3.bit8)
codicepulsante.bit4 = (inputir4.bit8)
codicepulsante.bit5 = (inputir5.bit8)
codicepulsante.bit6 = (inputir6.bit8)
---> ogni impulso ricevuto ed inserito in 'inputirX' sarà assegnato ad un bit ben preciso con una dimensione massima di 9(fino a 8 partendo da 0) cifre binarie(.bit8)


return

---> chiude la subroutine 'decodifica'

 

Risultato binario dopo la pressione di un tasto dal telecomando:

il codice del pulsante è: 1101010
segnaleinizio è: 1216
inputir0 è: 632
inputir1 è: 301
inputir2 è: 632
inputir3 è: 301
inputir4 è: 632
inputir5 è: 301
inputir6 è: 314

---> Se visualizziamo il risultato del 'codice pulsante' in notazione binaria vediamo che partendo da sinistra, l'uno indicato corrisponde al valore 6 inferiore a 512, poi il valore 5 sempre inferiore a 512 che visualizza un uno in binario nella seconda cifra partendo da sinistra ed in seguito troviamo zero come terza cifra binaria sempre da sinistra come risultato superiore a 512 nel risultato 4...

Download listato

Testo - Motori - Tasto - Variabili - Infrarossi - Valori - Contatto - FotoResistore - ServoMotori - TelecomandoIR - Cicalino - TermoResistore - MicrofonoLm358

 

INDIETRO

 

Se ritenete che il contenuto di questo sito ed il mio lavoro possano esservi stati utili in qualche modo e possano aver cambiato in piccola misura la vostra vita, potrete contribuire al mantenimento e alla diffusione dei materiali in esso contenuti con una donazione di importo completamente libero. Ovviamente non siete obbligati ma se qualcuno deciderà di aderire gliene sarò infinitamente grato!