A propos LCD12864R

Bonjour skywood.
On s’est déjà causé pour un PB sur Linux mint. Suite à un texte sur skyduino , j’ai fait l’acquisition de 3 de ces écrans pour améliorer l’affichage de mes montages gps.
Avec ton code cela a marché du premier coup.
Mais j’ai eu des problèmes avec l’affichage des variables multiples et compliquées du Gps et après des essais avec "dtostrf" j’ai abdiqué.
En fouillant sur le net j’ai trouvé une autre solution à partir de "u8g.print" qui m’a "sauvé la vie".
J’ai pu tout ré afficher et je souhaite te montrer une photo et le code si cela t’intéresse ou pour aider d’autres "bricoleurs " comme moi.
Je prépare un compteur de véhicule et j'aurai certainement des questions sur la sauvegarde des variables et la qualité de l'affichage.
Merci

GPSLcd1268_02_ino.ino (7.19 KB)

Salut,

Du coup t'as pas besoin aide ? :grin:

Hs: le texte blanc sur bleu c'est classe quand même 8)

Bonjour skywood

Oh, on a toujours besoin d'aide !!!
Comment trouves tu mon code ? Connaissais tu "u8g.print" . c'est super simple et intéressant pour tous ceux qui vont venir sur cet écran.

Et puis j'ai mis un pb dessous sur l'effacement des caractères dans des "if".

Merci et @+

chris4775:
Comment trouves tu mon code ?

C'est pas mal mais ya des trucs qui me semblent louches.

Serial.print("blabla"); // Bof
Serial.print(F("blabla")); // Mieux !
// Note : optimisation pas valable pour les U8Glib::print()
// Donne moi une seule bonne raison d'utiliser un timer pour recevoir les données du port série ?
// Si tu veut traiter les caractères entrant du port série il y a SerialEvent pour cela ;)
SIGNAL(TIMER0_COMPA_vect) 
{
  char c = GPS.read();
#ifdef UDR0
  if (GPSECHO)
    if (c) UDR0 = c;  
#endif
}
uint32_t timer = millis(); // GROSSE BOULETTE

// Mieux
uint32_t timer = 0; // C'est le 1er tour de boucle avec le if (millis() - timer > 2000) qui va faire le boulot
// Bof très moyen
if (GPSECHO)
      if (c) Serial.print(c);

// Mieux
#ifdef GPSECHO
      if (c) Serial.print(c);
#endif
// Condition timer > millis() impossible si ton code est correctement pensé
if (timer > millis())  timer = millis(); // à supprimer
// Bof 
if (millis() - timer > 2000) { 
    timer = millis();
    // ... Traitement
}

// Mieux
if (millis() - timer > 2000) { 
    // ... Traitement
    timer = millis();
}

chris4775:
Connaissais tu "u8g.print" . c'est super simple et intéressant pour tous ceux qui vont venir sur cet écran.

Oui je connais, suffit de lire la doc :stuck_out_tongue:

chris4775:
Et puis j'ai mis un pb dessous sur l'effacement des caractères dans des "if".

Pas vu c'est où ?

Merci skywood,

Tu vois qu'on doit en apprendre tous les jours. je vais essayer tout cela et te tiendrai au courant.
Pour l'effacement c'est réglé c'était encore une grosse "co......ie" de ma part sur un test if....
@+