Gestion d'un au terminal Série⚓
Dans le projet Aerocat le module Bluetooth est commandé via une liaison série. L'application Android du smartphone envoie des informations reçues par la carte grâce une liaison série, constituée de deux câbles Rx pour la réception et Tx pour la transmission.

Defi 1 : contrôler un servo via le terminal série
Sous tinkerCAD il n'y a pas de Module BT. Cependant nous allons simuler l'envoie de donnée gràce au terminal série
En s'aidant du programme suivant qui permet d'afficher au terminal série le nombre saisie.
int octetReception=0; // variable de stockage des valeurs recues sur le port Serie
long nombreReception=0; // variable pour nombre recu sur port Serie
void setup() { // debut de la fonction setup()
Serial.begin(9600);
}
void loop(){ // debut de la fonction loop()
nombreReception=recevoirNombre(); // appel de la fonction recevoirNombre
if (nombreReception!=0) { // si un nombre a ete recu
//--- affiche le nombre recu sur le port serie
Serial.print("Nombre recu =");
Serial.println(nombreReception);
nombreReception=0; // RAZ nombre recu
}
}
long recevoirNombre() { // fonction de reception d'un nombre sur le port serie
int octetRecu=0; // variable pour octet recu
int compt=0; // variable locale comptage caracteres recus
boolean signe=true; // variable locale signe nombre recu
long nombreRecu=0; // variable locale nombre recu
while (Serial.available()>0) { // tant qu'un octet en reception
octetRecu=Serial.read(); // Lit le 1er octet recu et le met dans la variable
if ((octetRecu=='-') && (compt==0))signe=false; // si Octet recu est le - et si c'est le 1er caractere recu - signe negatif
compt=compt+1; // incremente compt
octetRecu=octetRecu-48; // transfo valeur ASCII en valeur decimale
// calcul du nombre a partir des valeurs recues
if ((octetRecu>=0)&&(octetRecu<=9)) nombreRecu = (nombreRecu*10)+octetRecu;
delay(1); // pause pour laisser le temps a la fonction available de recevoir octet suivant
} // fin tant que octet reception
if (signe==false) nombreRecu=nombreRecu*(-1); // prise en compte signe negatif
return(nombreRecu); // renvoie le nombre calcul
} // fin fonction recevoirNombre
// ////////////////////////// Fin du programme ////////////////////
On souhaite actionner le servo à l'angle saisie par l'utilisateur dans le terminal série.
Défi 2 : Contrôler 2 servo
L'utilisateur devra spécifier un code : « 200 » pour le 1er servo et 201 pour le second, suivi de l'angle correspondant.
Attention : Problème en réel
La fonction recevoirNombre() fonctionne sur TinkerCAD mais pas en réel. vous devez utiliser à la place cette fonction :
int recevoirNombre() { // fonction de reception d'un nombre sur le port serie
int n = 0;
// if there's any serial available, read it:
while (Serial.available() > 0)
{
// look for the next valid integer in the incoming serial stream:
int n = Serial.parseInt();
// do it again:
if (Serial.read() == '\n') {
// Serial.print("Received number : ");
// Serial.println(n);
return n;
}
else
{
return 0;
}
}
} // fin fonction recevoirNombre