Bonjour, je souhaite réaliser une communication série entre une Arduino et une RPi via l’USB. Cependant j’ai un petit problème. Je ne reçois pas les bonnes valeurs (et pas toujours les mêmes).J’ai fait un test simple : la RPi envoie un caractère et l’Arduino doit le renvoyer.
Voici le code de l’Arduino :
1 2 3 4 5 6 7 8 9 10 11 12 | void setup() { Serial.begin(9600); } void loop() { while (Serial.available()) { Serial.println(Serial.read()); } delay(10); } |
Et celui de la RPi :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <stdio.h> #include <iostream> #include <wiringSerial.h> using namespace std; main () { int fd = serialOpen ("/dev/ttyACM0", 9600) ; if (fd < 0) { cout << "ERREUR DE CONNEXION" << endl; return -1; } int car = 0; cout << "Envoie 'A'..." << endl; serialPutchar (fd, 'A') ; if((car = serialGetchar(fd)) < 0) cout << "ERREUR DE RÉCEPTION" << endl; cout << "Reçu : " << (char) car << " (" << car << ")" << endl; cout << "Envoie 'b'..." << endl; serialPutchar (fd, 'b') ; if((car = serialGetchar(fd)) < 0) cout << "ERREUR DE RÉCEPTION" << endl; cout << "Reçu : " << (char) car << " (" << car << ")" << endl; cout << "Envoie 't'..." << endl; serialPutchar (fd, 't') ; if((car = serialGetchar(fd)) < 0) cout << "ERREUR DE RÉCEPTION" << endl; cout << "Reçu : " << (char) car << " (" << car << ")" << endl; } |
Et voici ce que j’obtiens :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | pi@raspberrypi:~/testCom $ ./a.out Envoie 'A'... Reçu : 1 (49) Envoie 'b'... Reçu : 1 (49) Envoie 't'... Reçu : 6 (54) pi@raspberrypi:~/testCom $ ./a.out Envoie 'A'... ERREUR DE RÉCEPTION Reçu : ▒ (-1) Envoie 'b'... Reçu : 9 (57) Envoie 't'... Reçu : 8 (56) pi@raspberrypi:~/testCom $ ./a.out Envoie 'A'... Reçu : (10) Envoie 'b'... ERREUR DE RÉCEPTION Reçu : ▒ (-1) Envoie 't'... Reçu : 1 (49) ` |
Je pense que c’est qqch de tout con, mais je ne vois pas. J’espère que vous pourrez m’aider !
Merci d’avance, Siméon.
+0
-0