// ---------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------
// Fichier: Arduino13-Etud-ADC.ino
// Auteur:
// ____ _ ___ __ _ __
// / _ \(_)__ ______ __ / _\/ / ___ ____(_)__ __ _____/ /
// / ___/ / -_) _/ _/ -_) / /_/ _ \/ _ \/ / / / _ \/_ \/ _/ _ /
// /__/ /_/\__/_//_/ \__/ \___/_//_/\___/___/_/_//_/_/_/_/ \__/
//
// Date: 25-04-2022
// Revision : A
// Compilateur: ARDUINO V1.8.12
// Description: Programme pour démontrer l'utilisation des entrées analogique et des
// afficheurs 7Segment.
// La pin du milieu d'un pot branché sur la pin A7 du module ARDUINO NANO
// et les deux autres pins du pot sont branchées une sur le Vcc et le GND.
//
// ---------------------------------------------------------------------------------------
// ------- Définition des constantes ---------------------------------------------------
#define LEDR 2 // Indique que le mot LEDR equivaut a D2
#define LEDJ 3 // Indique que le mot LEDJ equivaut a D3
#define LEDV 4 // Indique que le mot LEDV equivaut a D4
#define LEDB 5 // Indique que le mot LEDB equivaut a D5
#define SEGA 6 // Indique que le mot "SEGA" equivaut a la sortie sur D6
#define SEGB 7 // Indique que le mot "SEGB" equivaut a la sortie sur D7
#define SEGC 8 // Indique que le mot "SEGC" equivaut a la sortie sur D8
#define SEGD 9 // Indique que le mot "SEGD" equivaut a la sortie sur D9
#define SEGE 10 // Indique que le mot "SEGE" equivaut a la sortie sur D10
#define SEGF 11 // Indique que le mot "SEGF" equivaut a la sortie sur D11
#define SEGG 12 // Indique que le mot "SEGG" equivaut a la sortie sur D12
// ---------------------------------------------------------------------------------------
// ------- Définition des variables globales -------------------------------------------
bool a; //
bool r; //
bool bl; //
bool bSW0; //
bool bSW1; //
bool bSW2; //
bool bSW3; //
bool bSW4; //
int iValADC; //
// ---------------------------------------------------------------------------------------
// ------- Déclaration des fonctions ---------------------------------------------------
void Affiche7Seg(int val);
// ---------------------------------------------------------------------------------------
// ------- Configuration des périphériques ---------------------------------------------
void setup()
{
Serial.begin(115200); // initialisation de la connexion série
// IMPORTANT : la fenêtre terminal côté PC doit être réglée sur la même valeur
pinMode(A0, INPUT); // Indique que de la pin A0 est en Entrée
pinMode(A1, INPUT); // Indique que de la pin A1 est en Entrée
pinMode(A2, INPUT); // Indique que de la pin A2 est en Entrée
pinMode(A3, INPUT); // Indique que de la pin A3 est en Entrée
pinMode(A4, INPUT); // Indique que de la pin A4 est en Entrée
pinMode(LEDR, OUTPUT); // Indique que de la pin D2 est en Sortie
pinMode(LEDJ, OUTPUT); // Indique que de la pin D3 est en Sortie
pinMode(LEDV, OUTPUT); // Indique que de la pin D4 est en Sortie
pinMode(LEDB, OUTPUT); // Indique que de la pin D5 est en Sortie
pinMode(SEGA, OUTPUT); // Indique que de la pin D6 est en Sortie
pinMode(SEGB, OUTPUT); // Indique que de la pin D7 est en Sortie
pinMode(SEGC, OUTPUT); // Indique que de la pin D8 est en Sortie
pinMode(SEGD, OUTPUT); // Indique que de la pin D9 est en Sortie
pinMode(SEGE, OUTPUT); // Indique que de la pin D10 est en Sortie
pinMode(SEGF, OUTPUT); // Indique que de la pin D11 est en Sortie
pinMode(SEGG, OUTPUT); // Indique que de la pin D12 est en Sortie
}
// ---------------------------------------------------------------------------------------
// ------- Programme principal ---------------------------------------------------------
void loop()
{
iValADC = analogRead(A7); // Lire la valeur analogique de la pin A7 (0 et 1023)
AfficheSerie(iValADC); // l'affiche sur la fenêtre du terminal PC
Affiche7Seg(iValADC >> 6); // Affiche les 4 bits les plus significatif sur le 7Segment
LireBoutonEtDEL();
delay(200); // Délai pour ralentir la vitesse des affichages
}
// ---------------------------------------------------------------------------------------
// -------- Les fonctions ----------------------------------------------------------------
// ---------------------------------------------------------------------------------------
// Fonction : LireBoutonEtDEL Par : Pierre Chouinard
// Prototype : void LireBoutonEtDEL(void) Date : 01-05-2021
// Description : Fonction qui lit l'état de 4 boutons et retourne sur 4 DEL l'état lue
//----------------------------------------------------------------------------------------
void LireBoutonEtDEL(void)
{
bSW0 = digitalRead(A0);
bSW1 = digitalRead(A1);
bSW2 = digitalRead(A2);
bSW3 = digitalRead(A3);
bSW4 = digitalRead(A4);
digitalWrite(LEDR, bSW0);
digitalWrite(LEDJ, bSW1);
digitalWrite(LEDV, bSW2);
digitalWrite(LEDB, bSW3);
}
// ---------------------------------------------------------------------------------------
// Fonction : AfficheSerie Par : Pierre Chouinard
// Prototype : void AfficheSerie(int iVal) Date : 01-05-2021
// Description : Fonction qui affiche sur le port serie la valeur recu en parametre en
// décimale en hexadécimale et en binaire
//----------------------------------------------------------------------------------------
void AfficheSerie(int iVal)
{
Serial.print(iVal); // Affiche la valeur decimale de iVal sur un terminal serie
Serial.print(", 0x"); // Affiche ( , 0X )sur un terminal serie
Serial.print(iVal, HEX); // Affiche la valeur binaire de iVal sur un terminal serie
Serial.print(", 0b"); // Affiche ( , 0b ) sur un terminal serie
Serial.print(iVal, BIN); // Affiche la valeur binaire de iVal sur un terminal serie
Serial.print(". SW "); // Affiche ( . SW ) sur un terminal serie
Serial.print(bSW4); // Affiche la valeur binaire du bouton SW3
Serial.print(bSW3); // Affiche la valeur binaire du bouton SW2
Serial.print(bSW2); // Affiche la valeur binaire du bouton SW1
Serial.print(bSW1); // Affiche la valeur binaire du bouton SW0
Serial.println(bSW0); // Affiche la valeur binaire du bouton SW0
}
// ---------------------------------------------------------------------------------------
// Fonction : Affiche7Seg Par : Pierre Chouinard
// Prototype : void AfficheSerie(int iVal) Date : 08-03-2020
// Description : Fonction qui affiche sur le 7Segment la valeur recu en parametre en
// hexadecimale de 0 à F
//----------------------------------------------------------------------------------------
void Affiche7Seg(int val)
{
bool a; // Declare "a" une variable Booleen locale
bool b; // Declare "b" une variable Booleen locale
bool c; // Declare "c" une variable Booleen locale
bool d; // Declare "d" une variable Booleen locale
bool e; // Declare "e" une variable Booleen locale
bool f; // Declare "f" une variable Booleen locale
bool g; // Declare "g" une variable Booleen locale
val = val & 0x0F;
if(val == 0) {a=0; b=0; c=0; d=0; e=0; f=0; g=1;}
if(val == 1) {a=1; b=0; c=0; d=1; e=1; f=1; g=1;}
if(val == 2) {a=0; b=0; c=1; d=0; e=0; f=1; g=0;}
if(val == 3) {a=0; b=0; c=0; d=0; e=1; f=1; g=0;}
if(val == 4) {a=1; b=0; c=0; d=1; e=1; f=0; g=0;}
if(val == 5) {a=0; b=1; c=0; d=0; e=1; f=0; g=0;}
if(val == 6) {a=0; b=1; c=0; d=0; e=0; f=0; g=0;}
if(val == 7) {a=0; b=0; c=0; d=1; e=1; f=1; g=1;}
if(val == 8) {a=0; b=0; c=0; d=0; e=0; f=0; g=0;}
if(val == 9) {a=0; b=0; c=0; d=0; e=1; f=0; g=0;}
if(val == 10){a=0; b=0; c=0; d=1; e=0; f=0; g=0;}
if(val == 11){a=1; b=1; c=0; d=0; e=0; f=0; g=0;}
if(val == 12){a=0; b=1; c=1; d=0; e=0; f=0; g=1;}
if(val == 13){a=1; b=0; c=0; d=0; e=0; f=1; g=0;}
if(val == 14){a=0; b=1; c=1; d=0; e=0; f=0; g=0;}
if(val == 15){a=0; b=1; c=1; d=1; e=0; f=0; g=0;}
// ----------- Activer les sorties du 7Segment ---------------------------------------
digitalWrite(SEGA, a); // Si a vaux 1 active la sortie SEGA sinon la désactive
digitalWrite(SEGB, b); // Si b vaux 1 active la sortie SEGB sinon la désactive
digitalWrite(SEGC, c); // Si c vaux 1 active la sortie SEGC sinon la désactive
digitalWrite(SEGD, d); // Si d vaux 1 active la sortie SEGD sinon la désactive
digitalWrite(SEGE, e); // Si e vaux 1 active la sortie SEGE sinon la désactive
digitalWrite(SEGF, f); // Si f vaux 1 active la sortie SEGF sinon la désactive
digitalWrite(SEGG, g); // Si g vaux 1 active la sortie SEGG sinon la désactive
}
// ---------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------
// ___
// (_ '
// / //)
// ---------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------