Bonjour à tous
Je suis actuellement en train de réaliser un projet : commander un axe d’imprimante avec une arduino.
Pour faire court j'envoie un entier compris entre 0 et 2000 et l'axe se déplace vers la bonne valeur.
Pour ce projet j'ai besoin de changer ces valeurs via le port série avec un temps de réponse assez court en utilisant python. Mon problème est le buffer du port série : si je lui envoie par exemple 1000 puis 2000 (je fais une conversion ascii) le programme interprète cela comme une coordonnée de 10002000 et pas 2000 (et je ne peux pas faire de réinitialisation à 0 car l'axe se déplacerait)
Voilà mes codes
Python :
from serial import Serial
serial_port = Serial(port='/dev/ttyACM0', baudrate=115200) #je prend 115200 bauds pour avoir le meilleur tps de réponse
while True:
nombre = input('Entrez un entier : ')
serial_port.write(nombre.encode('ascii'))
et arduino
void loop() {
while ( Serial.available()) {
byte_read = Serial.read();
recieved_integer = ascii2int(recieved_integer, byte_read); //fonction définie avant qui transforme l'ascii en entier
}
target=recieved_integer;
driveTo(target); //fonction qui commande le moteur pour aller au bon endroit
Serial.println(target);
delay(100);
}
Merci beaucoup pour votre aide