Potentiomètre connecté⚓
Objectif
L'objectif ici est de créer une application Android qui affiche la valeur de la position d'un potentiometre en interrogeant périodiquement (toutes les secondes), une carte Arduino muni d'un module bluetooth.
Prérequis : Avoir fait les activités d'initiation à Arduino et à AppInventor et l'activité précédente
DESIGNER
L'écran est similaire à la précédente application, excepté les 2 boutons qui sont remplacés par 2 labels :
• Le Label 2 à gauche affiche le message suivant « Valeur du potentiomètre ».
• Le Label1 à droite affiche les données reçues
Il y a aussi l'ajout d'un composant Clock1 qui fonctionne en timer avec un intervalle de 400ms, c'est à dire que toutes les 400 ms les données reçues sont lues et affichées dans le label3.
Créer un nouveau projet nommé POT_CONNECTEE sous App inventor 2.
Réaliser l'interface suivante :
Au centre-droit de l'écran, il y a la liste des composants que vous devez glisser et poser de la palette vers le viewer.
À l'extrême droite de l'écran apparaissent les propriétés des composants que vous devez personnaliser.
Cliquer sur Blocks (en haut à droite) pour passer à l'écriture du « code ».
Côté Arduino
Matériel nécessaire :
Une carte Arduino UNO
Un shield GROVE
Un module grove Bluetooth
Un module grove potentiometre
Connexions :
Le potentiomètre sur A0 et le module bluetooth sur D6.
Dans le logiciel Arduino vous devez modifier le programme suivant pour obtenir
Un nom original de l'interface Bluetooth
Un code plus sécurisé.
/* * Programme permettant l'envoi de donnee analogique (potentiometre) * au smartphone. La valeur est recue via le module bluetooth * connecte aux broches 6(Rx) et 7 (Tx) de la carte arduino UNO. * Le Potentiometre doit etre relie à la broche A0. */const int RxD = 6; // Broche de reception de donnees
const int TxD = 7; // Broche de transmission de donnees
/* * PARAMETRES BLUETOOTH : */String Nom_Du_Module = "SuperPoto";
String PIN_Du_Module = "1234";
SoftwareSerial blueToothSerial(RxD,TxD); // Liaison serie du module Bluetooth
void setup()
{Serial.begin(9600);
Serial.println("Bluetooth module : Potentiometre");
setupBlueToothConnection(Nom_Du_Module, PIN_Du_Module); // Configuration du module BT
}
void loop()
{int val = analogRead(A0);
blueToothSerial.print(val);
Serial.println(val);
delay(400);
}
/*************************************************************************** * La fonction setupBlueToothConnection() permet d'initialiser le module * Bluetooth. La confiuration est ***************************************************************************/void setupBlueToothConnection(String nom_du_module, String pin)
{ blueToothSerial.begin(9600); // Vitesse de transmission : 9600 bauds
blueToothSerial.print("AT"); // Reponse du module BT
delay(1000);
while(blueToothSerial.available())
{char recvChar = blueToothSerial.read(); // Reponse du module BT
Serial.print(recvChar);
}
Serial.println("");
blueToothSerial.print("AT+DEFAULT"); // Config usine (par defaut)
delay(2000);
while(blueToothSerial.available()){
char recvChar = blueToothSerial.read(); // Reponse du module BT
Serial.print(recvChar);
}
Serial.println("");
String at_command("AT+NAME"+nom_du_module);
char *at_str = at_command.c_str();
delay(5000);
blueToothSerial.print(at_str); // Nom du peripherique BT
// Longueure max 12 caracteresdelay(5000);
while(blueToothSerial.available()){
char recvChar = blueToothSerial.read(); // Reponse du module BT
Serial.print(recvChar);
}
Serial.println("");
at_command="AT+PIN"+pin;
at_str = at_command.c_str();
blueToothSerial.print(at_str); // Configuration du code PIN
delay(2000);
while(blueToothSerial.available()){
char recvChar = blueToothSerial.read(); // Reponse du module BT
Serial.print(recvChar);
}
Serial.println("");
blueToothSerial.print("AT+AUTH1"); //
delay(2000);
while(blueToothSerial.available()){
char recvChar = blueToothSerial.read(); // Reponse du module BT
Serial.print(recvChar);
}
Serial.println("");
blueToothSerial.flush();
}
On souhaite que la position de Slider 1 sur l'interface Android soit l'image de la valeur du potentiomètre. Modifier les blocs judicieusement.


