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