Girouette (Arduino+potentiomètre+LCD)
Le but est de réaliser l’IHM permettant l’affichage de l’angle donné par une girouette pour voilier. L’angle α représente l’angle entre l’axe du voilier et le vent.
Vous utiliserez une breadboard, 3 résistances, des fils, un potentiomètre et un afficheur LCD.
Montage :
Remarques :
Les 2 résistances montées en pont diviseur de tension sont des 10KΩ. Si le contraste est mauvais on peut remplacer une des deux par une résistance de 1KΩ.
Si les broches du LCD ne sont montées, vous utiliserez le port série pour afficher l’angle.
Exemple de code « Hello World » :
Installer la bibliothèque LiquidCristal (cf. http://arduino.blaisepascal.fr/installer-une-bibliotheque/)
#include <LiquidCrystal.h> // initialiser la librairie avec les broches connectées LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { //Ouverture d'un port serie Serial.begin(9600); // Défintion du nombre de caractères et de lignes lcd.begin(16, 2); // Afficher un message sur l'écran LCD lcd.print("hello, world!"); Serial.println("Programme Hello World sur LCD!"); } void loop() { // Mettre le curseur colonne 0, ligne 1 // attention on commence à compter à partir de 0 lcd.setCursor(0, 1); // Afficher le temps en ms depuis le demarrage lcd.print(millis() / 1000); Serial.println((String)millis()+ " ms depuis le demarrage"); }
TP Affichage de l’angle sur LCD
- Faire l’acquisition de la tension aux bornes du potentiomètre
- Utiliser les résultats du TD Indicateur de direction du vent fait en classe pour calculer l’angle.
- convertir cet angle en degrés
- Afficher l’angle (soit sur LCD soit sur le port série)
- Faire une vidéo du montage et envoyez la au professeur
TP Affichage de l’angle sur afficheur 4×7 segments
Exemple de code « compteur » :
Installer la bibliothèque SevSeg (cf. http://arduino.blaisepascal.fr/installer-une-bibliotheque/)
#include <SevSeg.h> SevSeg sevseg; //Objet afficheur 7 segments void setup() { byte numDigits = 4; // Nombre de digits byte digitPins[] = {2,3,4,5}; // Connecteurs digitaux Arduino de 2 -> 5 byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; // Branchements des Pins sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins); sevseg.setBrightness(60); } void loop() { static unsigned long timer = millis(); static int deciSeconds = 0; if (millis() >= timer) { deciSeconds++; // 100 ms = 0.1 Second timer += 100; if (deciSeconds == 10000) { // Reset 0 toute les 1000 secondes. deciSeconds=0; } sevseg.setNumber(deciSeconds, 1); } sevseg.refreshDisplay(); // Doit être effectué régulièrement }
- Faire l’acquisition de la tension aux bornes du potentiomètre
- Utiliser les résultats du TD Indicateur de direction du vent fait en classe pour calculer l’angle.
- convertir cet angle en degrés
- Afficher l’angle
- Faire une vidéo du montage et envoyez la au professeur