Oscilloscope basique
Sur le site
www,mon-club-elec,fr X.
HINAUL
a crée un programme
Affichage
d'une mesure analogique continue sous forme de courbe sur un
afficheur LCD graphique
Dans sont application je
le cite
Ce
programme affiche le résultat d'une conversion analogique numérique
sous forme graphique sur un afficheur LCD graphique 128x64, réalisant
un oscilloscope basique. On remarquera une fois de plus que le
langage Arduino permet un tel résultat en quelques lignes de
programme seulement.
J'ai
donc adapté son programme pour un écran SainSmart
1.8 ST7735 TFT LCD
le câblage de l’écran
et le suivant
ST7735 UNO
VCC => +5V
GND => GND
SCL => 13
SDA => 11
RS/DC => 9
RES => 8
CS => 10
Un multivibrateur et
branché sur l'entrée analogique A0
schémas avec Fritzing
Pour
le programme Arduino
Il
faut télécharger les deux librairies suivantes <ST7735.h>
<SPI.h>
https://bitbucket.org/johnmccombs/arduino-libraries/src/64e60d1637398bb8a3c6cb9adb4c7e1fcc07a4bc/ST7735/?at=default
code Arduino
#define cs 10
#define dc 9
#define rst 8 // you can
also connect this to the Arduino reset
//===Color
définitions========
#define BLACK
0x0000
#define BLUE
0x001F
#define RED
0xF800
#define GREEN
0x07E0
#define CYAN
0x07FF
#define MAGENTA
0xF81F
#define YELLOW
0xFFE0
#define WHITE
0xFFFF
//============================
#include <ST7735.h>
#include <SPI.h>
ST7735 tft = ST7735(cs,
dc, rst);
//........................
const int Voie_0=0;
//déclaration constante de broche analogique
int mesure_brute=0;//
Variable pour acquisition résultat brut de conversion analogique
numérique
int x=0, y=0; // variable
coordonnée point affiché sur LCD
int x0=0,y0=0; // variable
coordonnée dernier point affiché sur LCD
//.............................
void setup() {
tft.initR();
// initialise a ST7735R chip
tft.fillScreen(BLACK);
}
//.............................
void loop() {
// lit la tension sur la
broche et met le résultat brut (0-1023) dans la variable
mesure_brute=analogRead(Voie_0);
// adapte échelle mesure
0-1023 à hauteur écran 0-159
y=map(mesure_brute,0,1023,0,159);
// efface mesure affichage
précédent
tft.drawLine(x,0,x,158,WHITE);
// dessine ligne de x1,y1 à x2,y2
// affichage de la mesure
tft.drawLine(x0,y0,x,y,BLACK);
// dessine ligne de x1,y1 à x2,y2
x0=x; y0=y; // mémorise
point actuel
x=x++; // incrémente x à
chaque passage
if (x>127) {
x=0; // RAZ x de 127=>0
x0=0; //réinitialise
aussi x0 pour retour propre
}
delay (1); // entre 2
mesures
} // fin de la fonction
loop() - le programme recommence au début de la fonction loop sans
fin
//============FIN=============
Aucun commentaire:
Enregistrer un commentaire