Created
August 13, 2025 18:25
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /**************************************************************************** | |
| 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