Utiliser le charactère degré ?

Bonjour à tous,

Dans un petit projet j'utilise les librairies adafruit Adafruit_GFX.h et Adafruit_SSD1306.h pour afficher une température sur un écran OLED relié a une wemos D1 mini Pro.

Je souhaite afficher le caractère degré mais je n'y arrive pas...

Voici mon sketch:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_SSD1306.h"
#include "TomThumb.h"

#define OLED_RESET 0  // GPIO0
Adafruit_SSD1306 display(OLED_RESET);

void setup()   {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

  // Clear the buffer.
  display.clearDisplay();
  
  // draw a single pixel
  display.setFont(&TomThumb);
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,11); 
  display.print((char)167);
}

void loop() {

}

Pour afficher autre chose aucun problème mais je bute sur ces notions d'ascii. J'utilise la police TomThub provenant de chez adafruit avec le paramètre extend a 1.

Merci de votre aide.

bonjour,

° est le caractère 176 il me semble a vérifier s'il est bien dans la police et au bon endroit

sinon l'astuce que j'ai souvent utilisée c'est de modifier un des caractères non utilisé dans la police et de le transformer en °

ligne 163 dans la table

163 0x40, 0xA0, 0x40, /* 0xB0 degree */

voir ce post

Merci pour vos réponses.
J'ai testé:

display.print(" \xB0");

et

display.print('\xDF');

Ca ne fonctionne pas...

C'est :

display.print("\xA7");

Cordialement.

Pierre

Bonjour, cela ne marche pas non plus... Je me demande si cela ne vient pas directement de la librairie. Du coup j'ai modifié le caractère "*" pour qu'il m'affiche le caractère degré.

C'est étrange, chez moi, ça affiche bien le "degré" SAUF que j'ai moi aussi modifié ce caractère qui normalement représente un petit rond souligné en un rond non souligné. Cela se traduit dans le fichier "glcdfont.c" par :

/* 0x26, 0x29, 0x29, 0x29, 0x26, */
 0x06, 0x09, 0x09, 0x09, 0x06, // ligne A7

Je pense que j'avais fait cette modification pour plus de clarté de lecture et je ne pense pas que cela influe sur son fonctionnement.

Cordialement.

Pierre

Bonjour,
Je profitais d'avoir sous la main un afficheur connecté à la plaque d'essai .. ben pour essayer l'astuce de ChPr.
Et ça marche bien en modifiant lcdfont.c.

Inrepublica utilise la police tom_thumb , il faut faire la modification à ce niveau là.

D'ailleurs Inrepublica, il ne manque pas la ligne suivante dans sketch à la fin du setup?

display.display();

A++

Désolé, je n'avais pas pris garde que vous utilisiez la fonte "tomthumb". J'en étais resté à la fonte "glcdfont" qui respecte la suite ASCII alors que cela n'a pas l'air d'être le cas de la fonte "tomthumb".

Pour autant, dans cette fonte, le caractère \xB0 semble bien être le caractère "degré". Qu'avez-vous comme affichage pour cette valeur ?

Cordialement.

Pierre

Voici le code que j'utilise: Wemos_test_oled_texte/test_oled_texte.ino at master · inrepublica/Wemos_test_oled_texte · GitHub

Et voici le résultat:

Il y a bien le symbole degré pour la police standard, mais rien avec tomthumb...

Je ne comprends pas, voici (voir image jointe) ce que j'obtiens avec la fonte standard (glcdfont.c) en taille 1.

Cordialement.

Pierre.

Avec la police standard j'ai bien le caractère qui s'affiche, mais avec tomthumb impossible...

Mais pourquoi vouloir absolument utiliser cette police ? Apparemment, la police glcdfont.c a le même aspect.

Cordialement.

Pierre

Parce qu'elle est beaucoup plus petite! Sur un écran de 64*48 c'est assez indispensable! Ce que je ne pige pas c'est pourquoi, alors que dans la police le degré est prévu!

Dans le fichier omThumb.h remplacez

#define TOMTHUMB_USE_EXTENDED 0

par

#define TOMTHUMB_USE_EXTENDED 1

Cordialement.

Pierre

Bonjour, oui j'ai déjà passé ce paramètre 1 -> Wemos_test_oled_texte/TomThumb.h at master · inrepublica/Wemos_test_oled_texte · GitHub

Mais ça ne marche pas...

Il doit y avoir certainement une instruction qui empêche l'utilisation de la partie étendue.

Cordialement.

Pierre.