0

Problème avec drawRect() (Ecran TFT 320x480)
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

Problème avec drawRect() (Ecran TFT 320x480)

by Maxkcirtap on Mon Jan 13, 2020 11:24 am

Bonjour à toute l'équipe Adafruit,
Afin de palier le manque de place d'un écran LCD classique 4 X 20 caractères, je viens d'acquérir votre très bel écran Adafruit TFT 3.5 - 320x480. J'ai suivi votre Tutoriel, très bien documenté, c'est remarquable, notamment pour le câblage !

Tout fonctionne donc normalement au niveau du texte, sur Arduino MEGA 2560-R3, pour l'affichage des données du capteur DHT22, testé a titre d'essais.

J'ai toutefois voulu tracer un rectangle, en utilisant la syntaxe de votre Tutoriel avec la fonction drawRect(). Et là, impossible !
La compilation Arduino renvoie une erreur : " expected primary-expression before numeric constant "

Après plusieurs recherche sur le NET, je n'ai pas compris mon erreur. Aurais-je oublié une bibliothèque ?
Pouvez-vous m'aider ?
Cordialement.
Patrick.

Voici le code :
Code: Select all | TOGGLE FULL SIZE
#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>
#include <Adafruit_HX8357.h>

#include <SPI.h>
#include <Wire.h>
#include <util.h>

// These are 'flexible' lines that can be changed
#define TFT_CS 10
#define TFT_DC 9
#define TFT_RST 8 // RST can be set to -1 if you tie it to Arduino's reset

//Capteur de Température et d'humidité
#include "DHT.h" //DHT22 : Temp + Humidité
#define DHTPIN 6 // broche datas du capteur
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);//déclaration du capteur

float hum = 0;
float temp = 0;
float farh = 0;
float hif = 0;
float hic = 0;

// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
Adafruit_HX8357 tft = Adafruit_HX8357(TFT_CS, TFT_DC, TFT_RST);

// SoftSPI - note that on some processors this might be *faster* than hardware SPI!
//Adafruit_HX8357 tft = Adafruit_HX8357(TFT_CS, TFT_DC, MOSI, SCK, TFT_RST, MISO);


void setup() {
  Serial.begin(115200);

  Serial.println("HX8357D Test!");
  tft.begin();
  tft.fillScreen(HX8357_BLACK);

    Wire.begin();
 
  //Température et humidité
    Serial.println("DHTxx test!");
    dht.begin();
}

void loop(void) {
  uint8_t rotation=3; //De 0 à 3)
  {
    tft.setRotation(rotation);
   
    delay(1000);

  //Capteur DHT22
   delay(2000);// La lecture du capteur prend 250ms
   hum = dht.readHumidity();//on lit l'hygrometrie
   temp = dht.readTemperature();//on lit la temperature en celsius (par defaut)
   // pour lire en farenheit, il faut le paramère (isFahrenheit = true) :
   farh = dht.readTemperature(true);
   delay(2000);
   //On verifie si la lecture a echoue, si oui on quitte la boucle pour recommencer.
   if (isnan(hum) || isnan(temp) || isnan(farh))
   {
     Serial.println("Failed to read from DHT sensor!");
     return;
   }
   
   // Calcul de l'indice de temperature en Farenheit
   hif = dht.computeHeatIndex(farh, hum);
   // Calcul de l'indice de temperature en Celsius
   hic = dht.computeHeatIndex(temp, hum, false);
    }
 
    //Affichage Datas DHT22
    //tft.setTextColor(WHITE, BLUE);
    tft.setCursor(70, 0);
    tft.setTextColor(HX8357_BLUE); tft.setTextSize(3);
    tft.println("Temperature DHT22");
    tft.println();
   
    tft.setTextColor(HX8357_YELLOW); tft.setTextSize(2);
    tft.setCursor(0, 30);
    tft.print("HUMIDITE : ");
    tft.setTextColor(HX8357_YELLOW, HX8357_BLACK);
    tft.print(hum);
    tft.println(" %");

     tft.setTextColor(HX8357_GREEN); tft.setTextSize(2);
     
     tft.setCursor(0, 50);
     tft.print("TEMPERATURE : ");
     tft.setTextColor(HX8357_GREEN, HX8357_BLACK);
     tft.print(temp);
     tft.print("C");
     //tft.print(farh);
     //tft.println(" *F");

     tft.setTextColor(HX8357_RED); tft.setTextSize(2);
     
     tft.setCursor(0, 70);
     tft.print("INDICE TEMPERATURE : ");
     tft.setTextColor(HX8357_RED, HX8357_BLACK);
     tft.print(hic);
     tft.print("C ");
     //tft.print(hif);
     //tft.println(" *F");

     tft.setCursor(0,90);
     tft.setTextColor(HX8357_CYAN,HX8357_CYAN);
     tft.println("TEST COULEUR CYAN :");

     tft.setCursor(0,110);
     tft.setTextColor(HX8357_WHITE,HX8357_WHITE);
     tft.println("TEST COULEUR WHITE :");
     
     
     tft.drawRect(uint16_t 0, uint16_t 130, uint16_t 200, uint16_t 40, uint16_t WHITE);  //Cette ligne ne trace pas le rectangle et génère une erreur de compilation...
     
}
   












.
Attachments
Test_tft_Adafruit.JPG
Test_tft_Adafruit.JPG (150.19 KiB) Viewed 25 times

Maxkcirtap
 
Posts: 3
Joined: Mon Mar 28, 2016 3:34 pm

Re: Problème avec drawRect() (Ecran TFT 320x480)

by adafruit_support_bill on Mon Jan 13, 2020 1:42 pm

When calling a function, you do not need to specify the argument types. You can simply pass the values as below:
Code: Select all | TOGGLE FULL SIZE
tft.drawRect(0, 130, 200, 40, WHITE);

adafruit_support_bill
 
Posts: 75806
Joined: Sat Feb 07, 2009 10:11 am

Please be positive and constructive with your questions and comments.