Arduino : initiation à l’usage des radioamateurs. 3ème partie.

Notre voltmètre devient intelligent …

Nous allons maintenant nous intéresser à l’analyse de la tension détectée (voir 2ème partie) et exécuter des actions en fonction de cette tension.
Si la tension est supérieure à 13,6V on souhaite allumer une diode rouge.
On ajoute une LED (avec sa résistance) entre une borne digitale (la 2 par exemple) et la masse.
Ce montage ne présente peut être pas beaucoup d’intérêt, mais c’est une des fonctionnalités que nous allons utiliser dans notre futur Emetteur/Récepteur pour détecter la présence d’une émission et stopper le scanner.
On pourrait également piloter un relais au lieu d’une LED.

 /////////////////////////////////
// Voltmetre Arduino 50 Volts //
/////////////////////////////////

// Ajouter librairie de gestion de l'écran LCD:
# include <LiquidCrystal.h>

// initialisation des broches à utiliser pour l'écran LCD.
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// Initialisation des variables
int Tension_lue = A0; // On va lire la tension sur la borne A0 de l'arduino.
String Tension_reelle; // On va afficher cette variable après calcul.
int Led = 2; // la borne 2 s'appellera Led.

void setup() {
pinMode(Led, OUTPUT); //2 est une broche de sortie
// Préparation de notre afficheur qui comporte 16 colonnes sur 2 lignes
lcd.begin(16, 2);
// Afficher sur l'écran LCD.
lcd.print("Voltmetre 50VMAX");
}
void loop() {

// positionner le curseur colonne 0 de la ligne 1
lcd.setCursor(0, 1);

// Calcul de la tension reelle:
// Mon pont de resistances me donne un rapport de (10 000 ohms / (10 000 ohms +100 000 ohms ) = 0,9
// La conversion interne analogique vers numérique de l'Arduino me donne un rapport de (5 / 1024) = 0,0048
// Et (0,0048 / 0,9) = 0,0532 <- Voilà mon coefficient à appliquer à la tension lue.

Tension_reelle = (analogRead(Tension_lue)*0.0532);

if (analogRead(Tension_lue)*0.0532 ) < 13,6) {
// instruction exécutée si la condition est vraie
// la borne led (donc n°2) reste à l'état 0 donc éteinte.
digitalWrite(Led,LOW);}
else {
// instruction exécutée si la condition est fausse
// la borne led (donc n°2) passe à l'état 1 donc allumée.
digitalWrite(Led,HIGH);
}
lcd.print(Tension_reelle);
lcd.print(" V");
}

Quelques nouveautés en programmation.

l’instruction digitalWrite qui va nous permettre de changer l’état d’une borne numérique / logique, LOW pour mettre la borne à l’état 0 et HIGH pour mettre l’état à 1, donc à 5V.

Le test if …… else dont la syntaxe est :
if (condition) {
// instruction(s) exécutée(s) si la condition est vraie
}
else {

// instruction(s) exécutée(s) si la condition est fausse
}




Une pensée sur “Arduino : initiation à l’usage des radioamateurs. 3ème partie.

  • 30/04/2021 à 23:27
    Permalink

    excellent tuto .
    Vivement la suite !

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.