Skip to content

Instantly share code, notes, and snippets.

@ypelletier
Created August 13, 2025 18:25
Show Gist options
  • Select an option

  • Save ypelletier/78a9b05d6941ae41572ceecb650c7e5e to your computer and use it in GitHub Desktop.

Select an option

Save ypelletier/78a9b05d6941ae41572ceecb650c7e5e to your computer and use it in GitHub Desktop.
Affichage sur un écran TFT de la valeur reçue sur une entrée analogique de l'Arduino.
/****************************************************************************
Affichage sur un écran TFT de la valeur reçue sur une entrée analogique de l'Arduino.
(Arduino Uno et shield TFT/LCD 320 X 240)
Tous les détails sur mon blog:
https://electroniqueamateur.blogspot.com/2025/08/shield-tft-ecran-tactile-acceder-malgre.html
******************************************************************************/
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#define TFT_CS 10
#define TFT_DC 9
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
int precedente = -100;
void setup() {
tft.begin();
tft.setRotation(1); // mode paysage
tft.fillScreen(ILI9341_BLACK);
// on dessine à l'écran les éléments qui ne changeront pas.
// on écrit "tension", en petits caractères, centré en haut de l'écran:
tft.setCursor(100, 40);
tft.setTextColor(ILI9341_GREEN);
tft.setTextSize(3);
tft.println("Tension:");
tft.setTextColor(ILI9341_YELLOW);
// enveloppe de la jauge rectangulaire
tft.drawRect( 14, 145, 304, 20, ILI9341_WHITE);
}
void loop() {
int valeur;
// mesure de la tension à l'entrée A0
valeur = map(analogRead(A0), 0, 1023, 0, 500);
if (abs(valeur - precedente) > 1) {
// on écrit la valeur numérique de la tension
tft.setCursor(80, 80);
tft.setTextSize(5);
if (valeur / 100 != precedente / 100) {
// effaçage de la valeur numérique précédente
tft.fillRect(80, 80, 54, 40, ILI9341_BLACK);
}
tft.print(valeur / 100); // partie entière
tft.print(","); // virgule
// effaçage de la valeur numérique précédente
tft.fillRect(135, 80, 70, 40, ILI9341_BLACK);
if ((valeur % 100) < 10) {
tft.print("0");
}
tft.print(valeur % 100); // partie décimale, après la virgules
tft.println(" V"); // unités de mesure
if (valeur < precedente) {
// fond de la jauge rectangulaire
//tft.fillRect( 15, 146, 302, 18, ILI9341_BLACK);
tft.fillRect( 16 + map(valeur, 0, 500, 0, 300), 146, 300 - map(valeur, 0, 500, 0, 300), 18, ILI9341_BLACK);
}
else {
// partie mobile de la jauge rectangulaire
tft.fillRect( 16, 147, map(valeur, 0, 500, 0, 300), 16, ILI9341_RED);
}
precedente = valeur;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment