Comment régler une valeur à distance via un curseur sur l'application ?
La carte Arduino peut utiliser de nombreuses valeurs commandant des actionneurs.
Il peut être intéressant de les faire varier :
luminosité d'une LED,
vitesse d'un moteur,
variable pour un calcul, etc....
ÉLÉMENTS DE PROGRAMMATION
Il existe 2 possibilités de branchement du Grove Bluetooth : A - Branchement sur des E/S digitales D (liaison série logicielle). B - Branchement sur UART (liaison série matérielle) ;
Programme Arduino
A - Branchement sur des E/S digitales D - permet d'utiliser le moniteur série et de laisser branché le module Grove Bluetooth en permanence
On peut choisir les entrées notées D2 à D8. On choisira D8 (car elle concerne en fait D8 et D9 et D9 n'est pas utilisée ailleurs)
On déclare en début de programme :
la bibliothèque #include <SoftwareSerial.h>
Une liaison série logicielle avec un nom libre , ici "BTserie" : SoftwareSerial BTserie(8,9) ; car on veut Rx à D8 et Tx à D9 coté Arduino.
La valeur en nombre entier (int) : int valeur = 0 ;
SoftwareSerial BLEserie(8,9);
int valeur = 0 ; //déclaration d'une variable (nombre entier) avec pour valeur 0
Dans le « setup » régler les taux de transfert : BTserie.begin(9600) ; Serial.begin(9600) ;
et configurer la broche « D5 » où la LED est connectée en pin sortie : pinMode(5, OUTPUT);
Serial.begin(9600); //Réglage transmission port série
BTserie.begin(9600); //Réglage transmission bluetooth
pinMode(5, OUTPUT); //Configuration du pin 5 en sortie
Dans la boucle « loop » :
après le test : if (BTserie.available()) {
on lit la valeur sur la liaison série Bluetooth : valeur = BTserie.read() ;
on peut placer un affichage de contrôle sur le moniteur série : Serial.println(valeur) ;
La valeur du curseur varie de 0 à 100. Pour obtenir une tension variant de 0 à 5 Volts il faut appliquer à la pin 5 « PWM » une valeur numérique variant de 0 à 255.
Il faut appliquer à la pin 5, la valeur multipliée par 2.55 pour obtenir 255 (5Volts) lorsque le curseur est à 100% : analogWrite(5,valeur*2.55)
if (BTserie.available()) { //vérifie si des données ont été envoyées depuis le module BTserie
valeur = BTserie.read() ; //Lit la valeur reçue et la stocke dans la variable valeur
Serial.println(valeur) ; //Affiche la valeur sur le moniteur série
analogWrite(5,valeur*2.55);
B - Branchement sur UART - programmation plus simple mais oblige à débrancher le module Grove Bluetooth avant chaque téléversement ; utile en fin de prototypage
Débrancher le module Grove du connecteur UART avant chaque téléversement du programme Arduino ; puis rebranchez-le.
On déclare en début de programme :
La valeur en nombre entier (int) : int valeur = 0 ;
Dans le "setup" régler le taux de transfert : Serial.begin(9600) ;
Dans la boucle "loop" après le test " if (Serial.available()) {"
on lit la valeur sur la liaison série Bluetooth : valeur = Serial.read() ;
La valeur "valeur" pourra ensuite être utilisée dans le reste du programme pour modifier le fonctionnement d'un actionneur : faire varier la luminosité d'une LED ou la vitesse d'un moteur par exemple
Programme App Inventor
La valeur à modifier le sera grâce à un curseur appelé "ascenseur". La valeur modifiée pourra être affichée dans le texte d'un "Label"
En mode Designer :