Comment régler l'intensité lumineuse de 2 LED à distance via 2 curseurs sur l'application ?

La carte Arduino peut utiliser de nombreuses valeurs commandant des actionneurs.

Il peut être intéressant de les faire varier :

  • la luminosité d'une LED

  • la vitesse d'un moteur,

  • la variable pour un calcul, etc....

 

CÂBLAGE :

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

  • Connecter une deuxième LED sur une broche supportant le PWM (~), par exemple pin « D6 ».

  • Connecter le module bluetooth grove sur la broche « D8 »

     

ÉLÉMENTS DE PROGRAMMATION

Programme App Inventor

Nous allons utiliser deux curseurs.

L'application App Inventor ne peux envoyer qu'une valeur de variable entre 0 et 255.

Pour contourner le problème, nous allons décomposer en deux, la plage de variation de la variable envoyée.

Le curseur1 variera de 0 à 100 et le curseur 2 de 150 à 250.

En mode Blocs :

Le programme pour le curseur 1 est exactement le même que précédemment.

Le programme pour le curseur 2 reprend le principe du programme du curseur 1. Comme la valeur du curseur 2 varie de 150 à 200, pour afficher une valeur correcte de 0 à 100 % dans le label 2, il faut soustraire la valeur 150 à la valeur du curseur 2.

Programme Arduino

Le moniteur série est utilisé pour visualiser la valeur des deux curseurs et ainsi vérifier la bonne transmission des données.

  • Si la valeur reçue est comprise entre 0 et 100, cela concerne le curseur 1

  • Si la valeur reçue est comprise entre 150 et 250, cela concerne le curseur 2. Dans ce cas il faut enlever 150 pour obtenir une valeur pour le curseur 2 variant de 0 à 100.

    Dans les deux cas, comme la valeur maxi des curseur est de 100 :

    • Pour obtenir un éclairage à 100% des LED, il faut piloter les sorties PWM (~) avec la valeur numérique 255.

    • Pour obtenir cette valeur de 255 à partir de la valeur 100, il faut multiplier par le coefficient « 2,55 » pour obtenir une valeur 255.

1
#include <SoftwareSerial.h>   //Bibliothèque permettant la gestion du module BLE
2
SoftwareSerial BTserie(8,9); // Déclare le module BLE branché en 8 et 9
3
int valeur = 0 ;
4
int curseur1 = 0 ;
5
int curseur2 = 0 ;
6
7
void setup() {
8
9
    Serial.begin(9600); //Réglage transmission port série
10
    BTserie.begin(9600); //Réglage transmission bluetooth
11
    pinMode(5, OUTPUT);
12
    pinMode(6, OUTPUT);
13
}
14
15
void loop() {
16
  if (BTserie.available()) { //vérifie si des données ont été envoyées depuis le module BTserie
17
  valeur = BTserie.read() ; //Lit la valeur reçue et la stocke dans la variable valeur
18
    if(0<=valeur && valeur<=100) // si valeur vient du curseur 1 (de 0 à 100)
19
      {
20
      curseur1=valeur;
21
      }
22
   if(150<=valeur && valeur<=250)  // si valeur vient du curseur 2
23
      {
24
      curseur2=(valeur-150);
25
      }
26
      Serial.println("Valeur du curseur 1 : ") ;
27
      Serial.println(curseur1) ; //Affiche la valeur du curseur 1 sur le moniteur série
28
      Serial.println("Valeur du curseur 2 : ") ;
29
      Serial.println(curseur2) ; //Affiche la valeur du curseur 2 sur le moniteur série
30
      analogWrite(5,curseur1*2.55);//Pilotage de la LED1 et adaptation de la valeur du curseur1 pour varier de 0 à 255
31
      analogWrite(6,curseur2*2.55);//Pilotage de la LED2 et adaptation de la valeur du curseur2 pour varier de 0 à 255
32
  }
33
    
34
}