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....

 

CÂBLAGE :

Connecter une LED sur une broche supportant le PWM (~), par exemple pin « D5 »

 

É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 ;

1
#include <SoftwareSerial.h>
2
SoftwareSerial BLEserie(8,9);
3
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);

1
    Serial.begin(9600); //Réglage transmission port série
2
    BTserie.begin(9600); //Réglage transmission bluetooth
3
    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)

1
if (BTserie.available()) { //vérifie si des données ont été envoyées depuis le module BTserie
2
  valeur = BTserie.read() ; //Lit la valeur reçue et la stocke dans la variable valeur
3
  Serial.println(valeur) ; //Affiche la valeur sur le moniteur série
4
  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 :

  • Placer un Ascenseur et un Label  ; le Label pourra être renommer "consigne" par exemple tout comme son texte

  • Modifier les propriétés de l’ascenseur ainsi : ,

  • Ne pas oublier d'assigner un client Bluetooh : ("laché" sur l'écran il n’apparaît qu'en bas dans "composant non-visible") et ajouter une Horloge que l'on trouve dans "capteur"

Exemple d'aspect de l'écran

En mode Blocs :

ConseilAffichage de la valeur de la consigne sur l'application

La valeur de réglage du curseur peut être affichée sur l'application à la place du "texte" du Label "consigne" :

Ajouter un blocs "Mettre "consigne". "Texte" à associé à "obtenir global valeur" dans la boucle "if Client_Bluetooth1 . Est connecté"