Bonjour à tous,
Etant élève en terminale S SI, j'ai un projet à mener tout au long de l'année.
Dans la réalisation de ce dernier, je dois parvenir à retranscrire la parole (de l'oral) sous forme de texte et à l'afficher sur un écran. J'ai donc opté pour l'utilisation d'un Raspbery PI model 3B+ car je pourrais installer un assistant vocal dessus.
Cependant, chaque chose dans son temps. Je suis en train de travailler simplement dans un premier temps sur l'envoi de textes du Rasperry vers l'arduino pour ensuite l'afficher sur un écran. La communication entre le Raspberry et l'arduino se fait par liaison série. Dans le programme python, je dois convertir ma chaîne de caractère en bytes (je crois que c'est parce que seul le binaire se communique par liaison série). Seulement, je dois dans le programma arduino convertir à nouveau les bytes en chaîne de caractères.
Pour reprendre de manière concrète, j'envoie la chaîne de caractère du Raspberry à l'arduino avec : ser.write(b'cequejeveuxenvoyer'). Pour récupérer la chaîne de caractère, j'ai entendu parler de l'ASCII, de tableau de char ou je ne sais pas trop quoi.
Si j'ai bien compris, en python, la fonction b'n'importe quoi' transforme mon message en tableau d'octet : je ne vois pas en quoi il s'agit d'un tableau. De plus, lorsque j'affiche sur un écran LCD I2C le message que j'envoie depuis le Raspberry, converti en tableau d'octet, j'obient par exemple pour A : -35 ; pour B : -43 et pour C : -39. Cependant, cela ne correspond pas aux caractères en code ASCII ; je crois que je mélange un peu tout
Voici mon programme de reception arduino :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
String message="";
void setup()
{
Serial.begin(9600);
lcd.init(); // Démarer l'écran
lcd.backlight(); // Activer l'éclairage
lcd.setCursor(0,0); // Placer le curseur en x 0 et y 0
}
void loop()
{
if (Serial.available())
{
message = Serial.read() - '0';
lcd.clear();
lcd.setCursor(0,0);
lcd.print(message);
delay(2000);
}
}
Et pour le code python :
import serial
ser = serial.Serial('/dev/ttyACM0',9600)
while True :
ser.write(b'cequejeveuxenvoyer')
Voilà, je tiens à préciser que je suis un novice d'arduino et qu'avant de demander de l'aide, j'ai fait tout mon possible pour essayer de comprendre ces conversions car, pour que tout soit clair, ce que je souhaiterais faire est de récupérer la chaîne de caractères associée aux bytes que je reçois en raison de la conversion indispensable de ma chaîne de caractère pour la communiquer par liaison série.
Merci beaucoup par avance,
CoLMa