Emoji

tools
tools/Emoji.h
tool tools experimental tools experimental

Emoji Regroupe tous les petits pictogrammes "façon favicon" utilisés dans le projet : icônes système (réglages, barre de progression, moteur, position/carte, centrale inertielle, horloge...) et icônes météo (soleil, nuage, pluie, neige, brouillard, chaud, froid). Dessinés

Méthodes publiques

Méthode Description Paramètres Retour
draw()
draw(Adafruit_GFX &display, Type type, int16_t x, int16_t y, uint8_t size, uint16_t color);
Méthode draw() Dessine un pictogramme carré sur l'écran donné. / display: : écran cible (tout écran compatible Adafruit_GFX)
type: : pictogramme à dessiner
x: : abscisse du coin supérieur gauche
y: : ordonnée du coin supérieur gauche
size: : taille du pictogramme en pixels (carré size x size)
color: : couleur de tracé (SSD1306_WHITE, ST77XX_WHITE, ...) /
drawProgressBar()
drawProgressBar(Adafruit_GFX &display, int16_t x, int16_t y, int16_t width, int16_t height, uint8_t percent, uint16_t color);

Méthodes privées


            drawSettings(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
drawMotor(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
drawPosition(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
drawIMU(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
drawClock(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
drawSun(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
drawCloud(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
drawRain(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
drawSnow(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
drawFog(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
drawCold(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
drawHot(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);;
display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);;
begin(9600);;
println("Erreur d'initialisation de l'ecran OLED !");;
while (1);;
clearDisplay();;
draw(display, EmojiType::EMOJI_SUN, 0, 0, 32, SSD1306_WHITE);;
draw(display, EmojiType::EMOJI_SETTINGS, 40, 0, 32, SSD1306_WHITE);;
display();;
delay(1000);;

                    

Code source


        #pragma once
#include <Arduino.h>
#include <Adafruit_GFX.h>

namespace crepp::tools {

/*
 * =========================
 * Emoji
 * -------------------------
 * Regroupe tous les petits pictogrammes "façon favicon" utilisés dans le
 * projet : icônes système (réglages, barre de progression, moteur,
 * position/carte, centrale inertielle, horloge...) et icônes météo
 * (soleil, nuage, pluie, neige, brouillard, chaud, froid). Dessinés
 * procéduralement (cercles/lignes/rectangles) via Adafruit_GFX plutôt que
 * par bitmap figée : ça s'adapte à n'importe quelle taille et fonctionne
 * sur tout écran compatible Adafruit_GFX (SSD1306, ST77xx, ...).
 *
 * @badge tools
 * @badge experimental
 *
 * Fonctionnalités :
 * - Dessin d'un pictogramme à une position et une taille données
 * - Pictogrammes système : réglages, barre de progression, moteur,
 *   position/carte, IMU, horloge
 * - Pictogrammes météo : soleil, nuage, pluie, neige, brouillard,
 *   froid, chaud
 * =========================
 */
class Emoji {
public:
    /*
     * =========================
     * Pictogrammes disponibles
     * =========================
     * Pas de vrais emoji Unicode (non supportés par les polices des
     * écrans embarqués) : ce sont des symboles dessinés à la main.
     */
    enum class Type : uint8_t {
        EMOJI_NONE,

        // --- Système ---
        EMOJI_SETTINGS,      // réglages (engrenage)
        EMOJI_PROGRESS_BAR,  // barre de progression
        EMOJI_MOTOR,         // moteur
        EMOJI_POSITION,      // position / carte (pin de localisation)
        EMOJI_IMU,           // centrale inertielle (puce + axes)
        EMOJI_CLOCK,         // horloge

        // --- Météo ---
        EMOJI_SUN,    // soleil
        EMOJI_CLOUD,  // nuage
        EMOJI_RAIN,   // pluie
        EMOJI_SNOW,   // neige
        EMOJI_FOG,    // brouillard
        EMOJI_COLD,   // froid (flocon)
        EMOJI_HOT     // chaud (thermomètre)
    };

    /*
     * =========================
     * Méthode draw()
     * =========================
     * Dessine un pictogramme carré sur l'écran donné.
     * @param display : écran cible (tout écran compatible Adafruit_GFX)
     * @param type : pictogramme à dessiner
     * @param x : abscisse du coin supérieur gauche
     * @param y : ordonnée du coin supérieur gauche
     * @param size : taille du pictogramme en pixels (carré size x size)
     * @param color : couleur de tracé (SSD1306_WHITE, ST77XX_WHITE, ...)
     */
    static void draw(Adafruit_GFX &display, Type type, int16_t x, int16_t y, uint8_t size, uint16_t color);

    /*
     * =========================
     * Méthode drawProgressBar()
     * =========================
     * Variante fonctionnelle de la barre de progression : dessine un
     * cadre avec un remplissage proportionnel au pourcentage donné,
     * plutôt qu'un pictogramme statique à valeur fixe.
     * @param display : écran cible
     * @param x, y : position du coin supérieur gauche
     * @param width, height : dimensions du cadre
     * @param percent : progression à afficher (0 à 100)
     * @param color : couleur de tracé
     */
    static void drawProgressBar(Adafruit_GFX &display, int16_t x, int16_t y,
                                int16_t width, int16_t height, uint8_t percent, uint16_t color);

private:
    // --- Système ---
    static void drawSettings(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);
    static void drawMotor(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);
    static void drawPosition(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);
    static void drawIMU(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);
    static void drawClock(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);

    // --- Météo ---
    static void drawSun(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);
    static void drawCloud(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);
    static void drawRain(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);
    static void drawSnow(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);
    static void drawFog(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);
    static void drawCold(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);
    static void drawHot(Adafruit_GFX &display, int16_t x, int16_t y, uint8_t size, uint16_t color);
};

/*
@example

@include
#include <crepp/tools/Emoji.h>
#include <Adafruit_SSD1306.h>
@end_include

@macro
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
@end_macro

@instance
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
@end_instance

@setup
  Serial.begin(9600);

  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("Erreur d'initialisation de l'ecran OLED !");
    while (1);
  }
@end_setup

@loop
  using EmojiType = crepp::tools::Emoji::Type;

  display.clearDisplay();
  crepp::tools::Emoji::draw(display, EmojiType::EMOJI_SUN, 0, 0, 32, SSD1306_WHITE);
  crepp::tools::Emoji::draw(display, EmojiType::EMOJI_SETTINGS, 40, 0, 32, SSD1306_WHITE);
  display.display();

  delay(1000);
@end_loop

@end_example
*/

} // namespace crepp::tools