L’affichage sous forme de courbe des mesures analogiques continues est une technique très utile pour visualiser et analyser des données. Elle permet de représenter graphiquement des informations complexes et de les comparer facilement. Dans cet article, nous allons examiner en détail l’utilisation de l’oscilloscope simple multivoies pour afficher des mesures analogiques continues sous forme de courbe. Nous verrons comment cette technique peut être utilisée pour analyser et interpréter des données, et comment elle peut être appliquée à différents domaines.
Affichage sous forme de courbe de 3 mesures analogiques continues (oscillo simple multivoies)
Présentation
Ce programme affiche sous forme de 3 courbes simultanées sur un afficheur TFT couleur le résultat de la mesure de la tension issue de 3 résistances variables.
Ce programme utilise les fonctionnalités suivantes :
- Utilise un afficheur TFT 65536 couleurs Graphique 132×176 type S65
- la conversion analogique numérique 10bits sur les voies analogiques analog 0, analog 4, analog 5.
Matériel Nécessaire
L’espace de développement Arduino
- … pour éditer, compiler le programme et programmer la carte Arduino.

Le matériel suivant pour réaliser le montage associé
- une plaque d’essai pour montage sans soudures,

- des straps,

- trois résistances variables linéaires de 10 KOhms,



- un module avec afficheur couleur TFT 176×132

Acheté ici ( 35 Euros TTC seulement !) : http://www.watterott.com/en/Arduino-S65-Shield
Documentation ici : Module d’affichage à écran couleur Arduino S65 shield
Librairie pour afficheur TFT couleur S65
Instructions de montage
Le module S65 Shield est à enficher directement broche à broche sur la carte Arduino réalisant ainsi les connexions suivantes :
- broche S65_DAT du module sur la broche 11 de la carte Arduino
- broche S65_CLK du module sur la broche 13 de la carte Arduino
- broche S65_RS du module sur la broche 4 de la carte Arduino
- broche S65_RST du module sur la broche 17 de la carte Arduino
- broche S65_CS du module sur la broche 16 de la carte Arduino
Les résistances sont connectées sur les 3 voies analogiques suivantes :
- Broche Analog 0 (=broche 14) en entrée Analogique
- Broche Analog 4 (=broche 18) en entrée Analogique
- Broche Analog 5 (=broche 19) en entrée Analogique
Le schéma théorique du montage

Le schéma théorique du montage
Le circuit du montage

Le schéma du montage à réaliser
Explication du programme
Structure globale du programme
Ce programme simple comprend :
- une entête déclarative
- une partie « configuration » qui ne sera exécutée qu’une fois (fonction setup( ) )
- une partie constituée d’une boucle sans fin que le programme répètera à l’infini ( fonction loop( ) ) : c’est le coeur du programme.
Déroulement du programme
Le programme se déroule de la façon suivante :
- Après avoir pris en compte les instructions de la partie déclarative,
- puis après avoir exécuté la partie configuration ( fonction setup( ) ),
- le programme bouclera sans fin ( fonction loop ( ) ), exécutant de façon répétée le code compris dans la boucle sans fin.

Le déroulement du programme
Au niveau de la partie déclarative :
Inclusion des librairies utilisées
- On inclut les librairies des fonctionnalités utilisées :
- Inclusion de la librairie pour l’afficheur TFT couleur S65 :
#include <S65Display.h> // Inclusion de la librairie pour afficheur TFT couleur S65
Déclaration de constantes utiles
- On déclare les constantes utiles dans le programme :
Déclaration des constantes de broches
- Déclaration des constantes pour les broches utilisées dans le programme :
const int Voie_0=0; //declaration constante de broche analogique const int Voie_4=4; //declaration constante de broche analogique const int Voie_5=5; //declaration constante de broche analogique
Déclaration des variables globales
- Déclaration des variables globales du programmes :
- Déclaration des variables globales utilisées pour la conversion analogique-numérique
int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique
-
- Déclaration des variables globales utilisées pour les tracés des 3 courbes
//--- variable graphe 1 --- int x1_graph=0, y1_graph=0; int xo1_graph=0, yo1_graph=0; //--- variable graphe 2 --- int x2_graph=0, y2_graph=0; int xo2_graph=0, yo2_graph=0; //--- variable graphe 3 --- int x3_graph=0, y3_graph=0; int xo3_graph=0, yo3_graph=0;
Déclarations des objets utiles pour les fonctionnalités utilisées
- Déclaration des objets utiles pour les fonctionnalités utilisées :
- Déclaration d’un objet afficheur TFT couleur S65 :
S65Display lcd; // Création d'un objet afficheur S65 appelé lcd
Au niveau de la fonction d’initialisation setup( ) :
Initialisation des fonctionnalités utilisées :
- On initialise les différentes fonctionnalités utilisées :
- Initialisation de l’afficheur TFT couleur S65
lcd.init(4); // initialise l'afficheur TFT couleur S65 avec communication SPI à Fosc/4 = 4 Mhz lcd.clear(RGB(255,0,0)); // efface ecran en rouge delay (1000); // pause lcd.clear(RGB(0,255,0)); // efface ecran en vert delay (1000); // pause lcd.clear(RGB(0,0,255)); // efface ecran en bleu
Au niveau de la boucle principale, la fonction loop ( ) :
- On réalise une boucle de défilement des abscisses à l’intérieur de laquelle on réalise l’affichage des 3 graphes séparément :
for (int i=0; i<S65_WIDTH-1; i++) { // boucle défilement écran 0 à 175 //---- ligne d'effacement du point précédent - même couleur que fond --- lcd.drawLine(i, 0, i, 131, RGB( 0,0,255)); //attention - max x = 131 //------- graphe 1 -------- // O,0 est le coin sup gauche de l'écran - La 1ère ligne est 0 x1_graph=i; // largeur = 176 x hauteur = 132 mesure_brute = analogRead (Voie_0); // mesure 0 - 1023 y1_graph=map(mesure_brute,0,1023,1,132); // --- affichage sous forme de courbe continue --- lcd.drawLine(xo1_graph, S65_HEIGHT-yo1_graph, x1_graph, S65_HEIGHT-y1_graph, RGB(255,255,0)); xo1_graph=x1_graph; // mémorise n-1 yo1_graph=y1_graph; // mémorise y-1 //------- graphe 2 -------- // O,0 est le coin sup gauche de l'écran - La 1ère ligne est 0 x2_graph=i; // largeur = 176 x hauteur = 132 mesure_brute = analogRead (Voie_4); // mesure 0 - 1023 y2_graph=map(mesure_brute,0,1023,1,132); // --- affichage sous forme de courbe continue --- lcd.drawLine(xo2_graph, S65_HEIGHT-yo2_graph, x2_graph, S65_HEIGHT-y2_graph, RGB(255,0,0)); // rouge xo2_graph=x2_graph; // mémorise n-1 yo2_graph=y2_graph; // mémorise y-1 //------- graphe 3 -------- // O,0 est le coin sup gauche de l'écran - La 1ère ligne est 0 x3_graph=i; // largeur = 176 x hauteur = 132 mesure_brute = analogRead (Voie_5); // mesure 0 - 1023 y3_graph=map(mesure_brute,0,1023,1,132); // --- affichage sous forme de courbe continue --- lcd.drawLine(xo3_graph, S65_HEIGHT-yo3_graph, x3_graph, S65_HEIGHT-y3_graph, RGB(0,255,0)); // vert xo3_graph=x3_graph; // mémorise n-1 yo3_graph=y3_graph; // mémorise y-1 delay(50); } xo1_graph=0; // réinitialise xo_graph à la sortie de boucle xo2_graph=0; // réinitialise xo_graph à la sortie de boucle xo3_graph=0; // réinitialise xo_graph à la sortie de boucle
- Le programme recommence en boucle les instructions de la fonction loop( ).
Se reporter aux commentaires présents dans le programme pour plus de détails.
Mise en oeuvre du programme
Préparation du montage et programmation de la carte Arduino :
- Commencer par réaliser le montage indiqué sur plaque d’expérimentation
- Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle
Fonctionnement
- L’écran affiche les 3 courbes simultanément.
Le programme complet en langage Arduino :
A copier/coller directement dans l’éditeur Arduino
// --- Programme Arduino --- // par X. HINAULT - Le 17/03/2010 // www.mon-club-elec.fr // Code sous licence GNU GPL : // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, // or any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. // // --- Que fait ce programme ? --- /* Affiche sous forme de 3 courbes simultanées sur un afficheur TFT couleur le résultat de la mesure de la tension de 3 résistances variables.*/ // --- Fonctionnalités utilisées --- // Utilise un afficheur TFT 65536 couleurs Graphique 132x176 type S65 // Utilise la conversion analogique numérique 10bits sur les voies analogiques analog 0, analog 4, analog 5. // --- Circuit à réaliser --- // Le module S65 Shield est à enficher directement broche à broche // sur la carte Arduino réalisant ainsi les connexions suivantes : // > broche S65_DAT du module sur la broche 11 de la carte Arduino // > broche S65_CLK du module sur la broche 13 de la carte Arduino // > broche S65_RS du module sur la broche 4 de la carte Arduino // > broche S65_RST du module sur la broche 17 de la carte Arduino // > broche S65_CS du module sur la broche 16 de la carte Arduino // Broche Analog 0 (=broche 14) en entrée Analogique // Broche Analog 4 (=broche 18) en entrée Analogique // Broche Analog 5 (=broche 19) en entrée Analogique //**************** Entête déclarative ******* // A ce niveau sont déclarées les librairies, les constantes, les variables... // --- Inclusion des librairies utilisées --- #include <S65Display.h> // Inclusion de la librairie pour afficheur TFT couleur S65 // --- Déclaration des constantes --- // --- constantes des broches --- const int Voie_0=0; //declaration constante de broche analogique const int Voie_4=4; //declaration constante de broche analogique const int Voie_5=5; //declaration constante de broche analogique // --- Déclaration des variables globales --- int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique //--- variable graphe 1 --- int x1_graph=0, y1_graph=0; int xo1_graph=0, yo1_graph=0; //--- variable graphe 2 --- int x2_graph=0, y2_graph=0; int xo2_graph=0, yo2_graph=0; //--- variable graphe 3 --- int x3_graph=0, y3_graph=0; int xo3_graph=0, yo3_graph=0; // --- Déclaration des objets utiles pour les fonctionnalités utilisées --- S65Display lcd; // Création d'un objet afficheur S65 appelé lcd //**************** FONCTION SETUP = Code d'initialisation ***** // La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme void setup() { // debut de la fonction setup() // --- ici instructions à exécuter au démarrage --- lcd.init(4); // initialise l'afficheur TFT couleur S65 avec communication SPI à Fosc/4 = 4 Mhz lcd.clear(RGB(255,0,0)); // efface ecran en rouge delay (1000); // pause lcd.clear(RGB(0,255,0)); // efface ecran en vert delay (1000); // pause lcd.clear(RGB(0,0,255)); // efface ecran en bleu // ------- Broches en sortie ------- // ------- Broches en entrée ------- // ------- Activation du rappel au + interne des broches en entrée si nécessaire ------- } // fin de la fonction setup() // ******************************************************************************** //*************** FONCTION LOOP = Boucle sans fin = coeur du programme ************* // la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension void loop(){ // debut de la fonction loop() // --- ici instructions à exécuter par le programme principal --- for (int i=0; i<S65_WIDTH-1; i++) { // boucle défilement écran 0 à 175 //---- ligne d'effacement du point précédent - même couleur que fond --- lcd.drawLine(i, 0, i, 131, RGB( 0,0,255)); //attention - max x = 131 //------- graphe 1 -------- // O,0 est le coin sup gauche de l'écran - La 1ère ligne est 0 x1_graph=i; // largeur = 176 x hauteur = 132 mesure_brute = analogRead (Voie_0); // mesure 0 - 1023 y1_graph=map(mesure_brute,0,1023,1,132); // --- affichage sous forme de courbe continue --- lcd.drawLine(xo1_graph, S65_HEIGHT-yo1_graph, x1_graph, S65_HEIGHT-y1_graph, RGB(255,255,0)); xo1_graph=x1_graph; // mémorise n-1 yo1_graph=y1_graph; // mémorise y-1 //------- graphe 2 -------- // O,0 est le coin sup gauche de l'écran - La 1ère ligne est 0 x2_graph=i; // largeur = 176 x hauteur = 132 mesure_brute = analogRead (Voie_4); // mesure 0 - 1023 y2_graph=map(mesure_brute,0,1023,1,132); // --- affichage sous forme de courbe continue --- lcd.drawLine(xo2_graph, S65_HEIGHT-yo2_graph, x2_graph, S65_HEIGHT-y2_graph, RGB(255,0,0)); // rouge xo2_graph=x2_graph; // mémorise n-1 yo2_graph=y2_graph; // mémorise y-1 //------- graphe 3 -------- // O,0 est le coin sup gauche de l'écran - La 1ère ligne est 0 x3_graph=i; // largeur = 176 x hauteur = 132 mesure_brute = analogRead (Voie_5); // mesure 0 - 1023 y3_graph=map(mesure_brute,0,1023,1,132); // --- affichage sous forme de courbe continue --- lcd.drawLine(xo3_graph, S65_HEIGHT-yo3_graph, x3_graph, S65_HEIGHT-y3_graph, RGB(0,255,0)); // vert xo3_graph=x3_graph; // mémorise n-1 yo3_graph=y3_graph; // mémorise y-1 delay(50); } xo1_graph=0; // réinitialise xo_graph à la sortie de boucle xo2_graph=0; // réinitialise xo_graph à la sortie de boucle xo3_graph=0; // réinitialise xo_graph à la sortie de boucle } // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin // ******************************************************************************** //*************** Autres Fonctions du programme ************* // --- Fin programme ---
Articles similaires:
- Affichage continu sous forme de courbe d’une tension analogique sur un écran TFT couleur
- Affichage continu sous forme de courbe d’une tension analogique sur un écran TFT couleur et affichage de la valeur de la tension mesurée.
- Mélangeur RVB à 3 résistances variables modifiant la couleur d’un écran couleur TFT
- Mini-oscilloscope à écran couleur TFT 320×240 mono-voie
- Afficher le résultat brut d’une conversion analogique-numérique dans la fenêtre Terminal du PC
Articles Liés
- Affichage continu sous forme de courbe d'une tension analogique sur un écran TFT couleur et affichage de la valeur de la tension mesurée.
L'affichage continu sous forme de courbe d'une tension analogique sur un écran TFT couleur est…
- Analyseur logique 4 voies à affichage graphique sur écran couleur 320x240
L'analyseur logique 4 voies à affichage graphique sur écran couleur 320x240 est un outil puissant…
- Affichage du résultat de la mesure de 3 voies analogiques sous forme graphique dans une interface Processing.
L'affichage graphique des résultats de mesures analogiques est un outil précieux pour les scientifiques et…