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 :
ÉLÉMENTS DE PROGRAMMATION
Programme App Inventor
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.
//Bibliothèque permettant la gestion du module BLE
SoftwareSerial BTserie(8,9); // Déclare le module BLE branché en 8 et 9
int valeur = 0 ;
int curseur1 = 0 ;
int curseur2 = 0 ;
void setup() {
Serial.begin(9600); //Réglage transmission port série
BTserie.begin(9600); //Réglage transmission bluetooth
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
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
if(0<=valeur && valeur<=100) // si valeur vient du curseur 1 (de 0 à 100)
{
curseur1=valeur;
}
if(150<=valeur && valeur<=250) // si valeur vient du curseur 2
{
curseur2=(valeur-150);
}
Serial.println("Valeur du curseur 1 : ") ;
Serial.println(curseur1) ; //Affiche la valeur du curseur 1 sur le moniteur série
Serial.println("Valeur du curseur 2 : ") ;
Serial.println(curseur2) ; //Affiche la valeur du curseur 2 sur le moniteur série
analogWrite(5,curseur1*2.55);//Pilotage de la LED1 et adaptation de la valeur du curseur1 pour varier de 0 à 255
analogWrite(6,curseur2*2.55);//Pilotage de la LED2 et adaptation de la valeur du curseur2 pour varier de 0 à 255
}
}