Bonjour !
Voilà, le titre de ce post n'est pas très clair, mais je vais clarifier un peu les choses :
J'ai un couple émetteur/récepteur AM (sans fil donc) qui n'émettent et ne reçoivent que dans un seul sens, donc impossible d'utiliser des connexions séries I2C, SPI ou même UART.
Je souhaite pourtant faire communiquer ma carte Arduino Uno et mon Raspberry, ce dernier étant l'émetteur et l'Arduino le récepteur.
Étant donné que je ne peux utiliser de connexion série, j'ai pensé bidouillé une sorte de "code morse", en gros :
Le Raspberry envoie une série d'états 1/0 par un port GPIO, 10 impulsions brèves, impulsions reçues par l'Arduino.
Jusqu'ici tout va bien, ça fonctionne et c'est tout simple :
int led = 13;
int radio = 2;
int val = 0;
void setup(){
Serial.begin(9600);
pinMode(2, INPUT);
pinMode(13, OUTPUT);
}
void loop(){
val=digitalRead(radio);
digitalWrite(led, val);
Serial.println(val);
}
Seulement... la fréquence utilisée par le couple émetteur/récepteur est de 433,92MHz, et beaucoup de choses fonctionnent sur cette bande là, notamment la clé de bagnole du voisin et divers "polluants" hasardeux, l'Arduino étant très sensible, la LED blink des fois entre les impulsions envoyées par le Raspberry... c'est clair ?
DONC, c'est là que j'ai pensé à utiliser une sorte de code qui dirait : "Arduino, si tu ne reçois pas une série de 10 brèves impulsions à la suite, tu ne fais rien. Si tu reçois 10 impulsions, alors allume la LED pendant 1 seconde".
Voilà.
Mais... je ne sais pas vraiment comment m'y prendre et pourtant j'y suis depuis le début d'après-midi.
J'ai pensé utiliser une fonction qui additionnerais les impulsions reçues, et si celles-ci ne sont pas au total de 10 au bout d'une attente d'une seconde, le compteur reviens a zéro jusqu'à la prochaine impulsion.
Mais... j'ai besoin d'aide, s'il vous plait... =(