version obsolète basée sur un compte des loops
20161220
retrouver dump Rf433
inventaire:
peut-être:
https://fr.aliexpress.com/item/4pin-KY-026-IR-Flame-Sensor-Fire-Detection-Module-Detects-Infrared-Receiver-for-Arduino-DIY-Starter/32762888397.html
existe avec diode blanche:
https://fr.aliexpress.com/item/KEYES-KY-005-Infrared-Sensor-Module-For-Arduino-AVR-PIC/32366452014.html
grillagée:
https://fr.aliexpress.com/item/Infrared-sensor-receiver-module/32270620442.html
la suite fournit esentiellement un "dump" brut du signal infra-rouge, sans se soucier du codage de la trame (RC5, SIRCS, ...), quand à la modulation de la porteuse (38 kHz) elle n'apparait pas, sans doute absorbée/filtrée par le composant de rception.
pour accéder au codage usuel, lire plutôt:
http://tiptopboards.free.fr/arduino_forum/viewtopic.php?t=8&p=8
note: si on maintient enfoncé pas de répétition, on n'observe pas la répétition (le programme est trop occupé à afficher le décodage dela trame précédente)
GAFFE: à utiliser dans une ambiance sombre!
résultats de l'écoute de:
- télécomande LG
- gadget minivlavier ci dessus
la suite est mesuré en "loops"
à convertir en microseconds (8000/65=123 loops/millis 0.123 par micro seconde, 10 us pour 80 loops!
la trame dure 83 ms.
une trame contient 33 "bips" séparés par des silences de 0.5 ms.
les courts: 500 us ou 0.5 ms
les longs: 1600 us ou 1.6 ms
il y a toujours 16 bips "courts" et 17 "longs", of course pour que la durée de trame soit constante!
résultat télécommande samsung
trame dure 62 ms,
32 bips dont 14 longs
une doc:
http://educypedia.karadimov.info/library/infrared_protocols_samples.pdf
(mais pas trouvé mon bonheur)
une liste de docs:
http://educypedia.karadimov.info/electronics/televisionrc5.htm
feuille de route: exprimer les durées en micro secondes plutôt que loops
GAFFE: seul l'affichage des durées en microseconde est objectif et pertinent pour toute télécommande, le reste n'est qu'une hypothèse
#define DBG true
// http://antiguide.free.fr/wiki/wakka.php?wiki=PoTrollIrDump
// modif pourlimiter les mouvement sur les Srtrngs durant la bouble rapide
#define TIMEOUT 2000L // delay befor publishing line GAFFE en tours!
#define LED 16 //pin D0
#define IRSENSOR 5 // pin D1
long start ;
long n=0; // loop count
int pre=0; // precious state ,
int bit=0;
long startFrameMs=0; // millis() on first bit
String aere=""; // output, print delayed
long tot=0;
int nlong=0;
int ncourt=0;
int duree[100];
void setup()
{
start=millis();
Serial.begin(115200);
delay(1000);
Serial.println("\nDump IR");
pinMode(IRSENSOR,INPUT);
pinMode(LED,OUTPUT);
for (int i=0;i<100;i++) duree[i]=-1;
}
void loop(){
// gérer le rollover
if (n>100000) n=TIMEOUT+1; // avoid roll over!
n=n+1;
if (n==TIMEOUT ) { // time out
// Serial.print(bit) ;Serial.println(" rthen time ouf");
if (bit>40){ // discard buzz
Serial.print(" at ms: ");
Serial.println(millis()-start);
if (DBG) Serial.print(" ms:");
long ms=millis()-startFrameMs;
if (DBG) Serial.print(ms);
long loopsParUs;
loopsParUs=tot+n-TIMEOUT;
if (DBG) Serial.print(" tot:");
if (DBG) Serial.print(tot);
if (DBG) Serial.print(" n (en cousr):");
if (DBG) Serial.print(n);
if (DBG) Serial.print(" TIMEOUT:");
if (DBG) Serial.print(TIMEOUT);
long parms=loopsParUs/ms;
if (DBG) Serial.print (" loops par ms :");
if (DBG)Serial.print (parms);
if (DBG) Serial.print (" states:");
if (DBG) Serial.print (bit);
if (DBG) Serial.print(" courts:");
if (DBG)Serial.print(ncourt);
if (DBG) Serial.print(" longs:");
if (DBG)Serial.print(nlong);
if (DBG) Serial.print(" ");
// ms par loo:
long musparloop=(ms*1000L)/loopsParUs;
if (DBG) Serial.print(" durée d'un loop en micro secondes: ");
if (DBG)Serial.print (musparloop);
if (DBG) Serial.println("\nen loops");
aere="";
for (int i=0;i<=bit;i++) {
if (i%2==1) {aere.concat("+");}else {aere.concat("-");};
aere.concat(duree[i]);
// aere.concat(" ");
}
if (DBG) Serial.println(aere);
aere="";
// if (DBG) Serial.print(loopsParUs);
Serial.println("\nen microsecondes ");
for (int i=1;i<=bit;i++) {
if (i%2) {aere.concat("+");}else {aere.concat("-");};
aere.concat(duree[i]*1000L/parms) ;
aere.concat(" ");
}if (DBG) Serial.println("");
if (DBG) Serial.println(aere);
if (DBG)Serial.print("\n + et - s: ");
aere="";
for (int i=1;i<=bit;i++) {
if (i%2) {
int nb=duree[i]/70;
for (int nnb=1;nnb<=nb;nnb++) aere.concat("+");
}else {aere.concat("-");};
}
if (DBG) Serial.println(aere);
Serial.print("\n01: ");
aere="";
for (int i=1;i<=bit;i++) {
if (i%2) {
if (duree[i]<100) aere.concat("0");
}else {aere.concat("1");};
}
Serial.println(aere);
}
bit=0;
aere="";
tot=0;
ncourt=0;
nlong=0;
}
int act=digitalRead(IRSENSOR); // low if carrier received
digitalWrite(LED,!act);
if (act==pre) return;
if ((act!=pre) && (n>0) ) {
duree[bit]=n;
if (bit==0){
// seulemet si act =1 à faire
startFrameMs=millis();
} else {
if (n<100) ncourt++ ;else nlong++;
tot=tot+n;
}
n=0;
pre=act;
bit++;
}
}
exemples samsung:
http://lirc.sourceforge.net/remotes/samsung/BN59-00507A
semblesn exister: if(results.decode_type
NEC) Serial.print("NEC: ");
else if(results.decode_type
SONY) Serial.print("SONY: ");else if(results.decode_type
RC5) Serial.print("RC5: ");else if(results.decode_type
RC6) Serial.print("RC6: ");else if(results.decode_type UNKNOWN) Serial.print("UNKNOWN: ");Serial.println(results.value, HEX);
irrecv.resume(); Receive the next value