Voici un exemple très simple expliquant l'utilisation de la bibliothèque libre Oled4D dont j'ai parlé dans un précédent billet.
Ce programme va afficher l'image ci-dessous :
Le code source commenté est affiché en seconde partie de ce billet.
Plus d'informations :
Voici les étapes à suivre pour tester cette bibliothèque :
- Décompresser l'archive dans le dossier libraries
- Ouvrez l'environnement de développement Arduino
- Dans le menu Fichier > Exemples, il doit y avoir un menu Oled4D > Example > Demo, cliquez dessus pour l'ouvrir
- Compilez et chargez la cible
Voici une partie du code source (la déclaration de data_image à été tronquée volontairement), l'exemple va afficher un écran bleu, affiche un cercle jaune, 1 tux, réalise 4 copier / coller de l'image du tux, affiche du texte « Hello world ! » puis créé un polygone.
/* Oled4d
Programme d'exemple pour interface Arduino / Écran Oled de 4DSystems
*/
#define RED RGB(255, 0, 0)
#define GREEN RGB(0, 255, 0)
#define BLUE RGB(0, 0, 255)
#define YELLOW RGB(255, 255, 0)
#define WHITE RGB(255, 255, 255)
#define BLACK RGB(0, 0, 0)
#define SMALL FONT_5X7
#define MEDIUM FONT_8X8
#define BIG FONT_8X12
#include <NewSoftSerial.h>
#include <HardwareSerial.h>
extern HardwareSerial Serial;
#include <Oled4d.h>
NewSoftSerial serial(2, 3);
// count : 1152
#define DATA_IMG_WIDTH 24
#define DATA_IMG_HEIGHT 24
char data_image[] = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xc6, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xbe,
[...]
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
};
void setup()
{
Serial.begin(9600);
// Mode série
pinMode(2, INPUT);
pinMode(3, OUTPUT);
// Configuration de l'interface série logicielle
serial.begin(9600);
}
void loop()
{
// Créer l'objet en interface série logiciel
Oled4dSoft oled = Oled4dSoft(serial, 8);
// Pour utiliser l'uart « hardware », procéder ainsi :
//Oled4dHard oled = Oled4dHard(Serial, OLED_RESET_PIN);
// Initialise l'écran
oled.init();
// Efface l'écran
oled.clear();
// Fond d'écran bleu
oled.setBG(RGB(0, 0, 128));
// Dessine un cercle
oled.drawCircle(64, 64, 20, RGB(255, 255, 0));
// Affiche l'image
oled.displayImage(0, 0, DATA_IMG_WIDTH, DATA_IMG_HEIGHT, COLORMODE_65K, data_image);
// Copier / coller de l'image 5 fois
for (int i = 1; i < 5; i++) {
oled.screenCopyPaste(0, 0, i * DATA_IMG_WIDTH, 0, DATA_IMG_WIDTH, DATA_IMG_HEIGHT);
}
// Affiche du texte
oled.drawText(1, 3, SMALL, GREEN, "Hello world !");
// Dessine un polygone
char array[] = { 10, 32, 20, 64, 76, 120, 127, 64 };
oled.drawPolygon(sizeof(array) / 2, array, RGB(255, 128, 0));
while (1);
}
Voilà, je pense que le code est assez explicite, en cas de souci, n'oubliez pas le forum d'aide.