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

Programme Arduino

Le module Grove Bluetooth étant toujours branché sur D8 (elle concerne en fait D8 et D9)

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

 

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é"