nous allons voir ici le principe de réalisation d’une girouette Arduino basique.
l’idée est de combiner l’utilisation d’un codage type CODE GRAY avec des diodes émettrice/réceptrices infrarouge.
sur la base de 4 couples de diodes , on a un codage sur 16 secteurs soit une position angulaire tous les 22,5 ° ce qui est déjà tres largement suffisant pour une girouette de station météo basique DIY.
concernant le codage GRAY , voici le schéma du codeur utilisé , il diffère de celui trouvé sur WIKIPEDIA parce qu’il permet d’avoir un calcul simple de l’angle correspondant en fonction des valeurs “binaires” combinées (voir plus bas dans le pgme C++) en utilisant le principe de décomposition binaire <=> décimal ( dans le programme plus bas, le résultat est arrondi a l’entier sans la décimale) .
voici le tableau binaire correspondant avec en partie basse la valeur décimale correspondant:
pour la réalisation, il aurait été possible d’utiliser des bloc OPB704 ( voir ici ) mais pour rendre le montage plus pratique , une roue codeuse imprimée 3D a été réalisée pour utiliser directement des diodes émettrices et réceptrices. l’idée c’est d’intégrer le codeur GRAY dans le plateau supérieur et de coller derrière une feuille de papier alu de cuisine comme réflecteur .
le programme ARDUINO:
cette version permet un affichage de l’angle directement sur ecran LCD I2C:
# include <Wire.h>
# include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
Serial.begin(9600);
lcd.init();
lcd.backlight();
}
void loop() {
int x1 = digitalRead(2);
int x2 = digitalRead(3);
int x3 = digitalRead(4);
int x4 = digitalRead(5);
int A = 360 -((x1*8 + x2*4 + x3*2 + x4)*22.5);
lcd.clear() ;
lcd.setCursor(9,1);
lcd.print(A);
delay (50);
}
et pour conclure ce petit tuto , une petite video de démo: