Communiquer avec Arduino sur le port série depuis un code Pyduino
Ce que l'on va faire ici
A présent nous sommes en mesure de faire communiquer Pyduino et Arduino ensemble via le port série, ce qui ouvre la possibilité d'utiliser le meilleur des 2
mondes ensemble... Et c'est aussi la certitude de ne JAMAIS ETRE BLOQUE sur un projet : ce que le mini-PC ne saura pas faire, Arduino le fera et inversement !!
En un mot, vous obtenez ici en quelque sorte le « système embarqué universel »... sans vous ruiner en plus ! C'est bien mieux que les cartes Galileo et compagnie
par exemple...
Code côté Arduino (sur le mini-PC)
On va commencer par faire un code Arduino très simple qui va être un « miroir série » :
// --- Déclaration des variables globales ---
int octetReception=0; // variable de stockage des valeurs reçues sur le port Série
long nombreReception=0; // variable de stockage du nombre reçu sur le port Série
long nombreReception0=0; // variable de stockage du dernier nombre reçu sur le port Série
String chaineReception=""; // déclare un objet String vide pour reception chaine
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme
void setup() { // debut de la fonction setup()
Serial.begin(115200); // initialise connexion série à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission
} // fin de la fonction setup()
// ********************************************************************************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension
void loop(){ // debut de la fonction loop()
//---- code type réception chaine sur le port série ---
while (Serial.available()>0) { // tant qu'un octet en réception
octetReception=Serial.read(); // Lit le 1er octet reçu et le met dans la variable
if (octetReception==10) { // si Octet reçu est le saut de ligne
Serial.println (chaineReception); // affiche la chaine recue
chaineReception=""; //RAZ le String de réception
break; // sort de la boucle while
}
else { // si le caractère reçu n'est pas un saut de ligne
chaineReception=chaineReception+char(octetReception); // ajoute le caratère au String
//Serial.print(char(octetReception)); // affiche la chaine recue
}
} // fin tant que octet réception
//----- une fois que le saut de ligne est reçu, on sort du While et on se positionne ici
} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
Mini-PC : Pyduino : UART, IDE Arduino and co sur le pcduino - Par X. HINAULT – Novembre 2014 – www.mon-club-elec.fr – p. 5 / 11