(update property name) |
|||
(2 révisions intermédiaires par un autre utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | {{ | + | {{Tuto Details |
− | |Main_Picture= | + | |Main_Picture=Du_pixelart_sur_vos_écrans_OLED_pixelart_wiki.jpg |
|Licences=Attribution (CC BY) | |Licences=Attribution (CC BY) | ||
|Description=<translate><!--T:1--> | |Description=<translate><!--T:1--> | ||
Ligne 17 : | Ligne 17 : | ||
|IsTranslation=0 | |IsTranslation=0 | ||
}} | }} | ||
− | {{ | + | {{Introduction |
|Introduction=<translate><!--T:2--> Dessiner sur des écrans OLED ? Ça peut paraitre compliqué, mais avec un peu d'entrainement, on peut faire un paquet de choses comme son propre logo, voir de l'animation ou même des jeux vidéos !</translate> | |Introduction=<translate><!--T:2--> Dessiner sur des écrans OLED ? Ça peut paraitre compliqué, mais avec un peu d'entrainement, on peut faire un paquet de choses comme son propre logo, voir de l'animation ou même des jeux vidéos !</translate> | ||
}} | }} | ||
− | {{ | + | {{TutoVideo |
|VideoType=Youtube | |VideoType=Youtube | ||
|VideoURLYoutube=https://www.youtube.com/watch?v=JfFld6lq_7o | |VideoURLYoutube=https://www.youtube.com/watch?v=JfFld6lq_7o | ||
}} | }} | ||
− | {{ | + | {{Materials |
|Step_Picture_00=Filtration_sur_sable_par_arduino_3.jpg | |Step_Picture_00=Filtration_sur_sable_par_arduino_3.jpg | ||
|Step_Picture_01=Du_pixelart_sur_vos_écrans_OLED_0.91_I2C_OLED_128x32-_Blue_4-1000x750.png | |Step_Picture_01=Du_pixelart_sur_vos_écrans_OLED_0.91_I2C_OLED_128x32-_Blue_4-1000x750.png | ||
Ligne 33 : | Ligne 33 : | ||
- Écran OLED monochrome</translate> | - Écran OLED monochrome</translate> | ||
|Tools=<translate></translate> | |Tools=<translate></translate> | ||
− | |ExternalAttachmentsLinks={{ | + | |ExternalAttachmentsLinks={{ExternalAttachmentsLinks |
|ExternalAttachmentsLinks=https://github.com/maditnerd/oled_xbm | |ExternalAttachmentsLinks=https://github.com/maditnerd/oled_xbm | ||
− | }}{{ | + | }}{{ExternalAttachmentsLinks |
|ExternalAttachmentsLinks=https://create.arduino.cc/editor/madnerd/0a94bf35-ada8-4695-9f56-d62ea2ed4cff/preview | |ExternalAttachmentsLinks=https://create.arduino.cc/editor/madnerd/0a94bf35-ada8-4695-9f56-d62ea2ed4cff/preview | ||
− | }}{{ | + | }}{{ExternalAttachmentsLinks |
|ExternalAttachmentsLinks=https://create.arduino.cc/editor/madnerd/f616433a-3f8a-483c-8ca2-6447dac0314c/preview | |ExternalAttachmentsLinks=https://create.arduino.cc/editor/madnerd/f616433a-3f8a-483c-8ca2-6447dac0314c/preview | ||
− | }}{{ | + | }}{{ExternalAttachmentsLinks |
|ExternalAttachmentsLinks=https://create.arduino.cc/editor/madnerd/b4c53d85-5579-4953-89d4-29e0a3b4228c/preview | |ExternalAttachmentsLinks=https://create.arduino.cc/editor/madnerd/b4c53d85-5579-4953-89d4-29e0a3b4228c/preview | ||
− | }}{{ | + | }}{{ExternalAttachmentsLinks |
|ExternalAttachmentsLinks=https://create.arduino.cc/editor/madnerd/7deed5b1-6f4d-4cd6-b662-0e2a88a93974/preview | |ExternalAttachmentsLinks=https://create.arduino.cc/editor/madnerd/7deed5b1-6f4d-4cd6-b662-0e2a88a93974/preview | ||
}} | }} | ||
}} | }} | ||
− | {{ | + | {{Separator}} |
− | {{ | + | {{Tuto Step |
|Step_Title=<translate><!--T:5--> Choisir son image</translate> | |Step_Title=<translate><!--T:5--> Choisir son image</translate> | ||
|Step_Content=<translate><!--T:6--> | |Step_Content=<translate><!--T:6--> | ||
Ligne 58 : | Ligne 58 : | ||
|Step_Picture_00=Du_pixelart_sur_vos_écrans_OLED_112885.png | |Step_Picture_00=Du_pixelart_sur_vos_écrans_OLED_112885.png | ||
}} | }} | ||
− | {{ | + | {{Tuto Step |
|Step_Title=<translate><!--T:9--> Convertir son image en pixel art</translate> | |Step_Title=<translate><!--T:9--> Convertir son image en pixel art</translate> | ||
|Step_Content=<translate><!--T:10--> | |Step_Content=<translate><!--T:10--> | ||
Ligne 91 : | Ligne 91 : | ||
|Step_Picture_02=Du_pixelart_sur_vos_écrans_OLED_brush.png | |Step_Picture_02=Du_pixelart_sur_vos_écrans_OLED_brush.png | ||
}} | }} | ||
− | {{ | + | {{Tuto Step |
|Step_Title=<translate><!--T:17--> Convertir son pixel art en code arduino</translate> | |Step_Title=<translate><!--T:17--> Convertir son pixel art en code arduino</translate> | ||
|Step_Content=<translate><!--T:18--> | |Step_Content=<translate><!--T:18--> | ||
Ligne 116 : | Ligne 116 : | ||
};</translate> | };</translate> | ||
}} | }} | ||
− | {{ | + | {{Tuto Step |
|Step_Title=<translate><!--T:22--> Afficher votre image</translate> | |Step_Title=<translate><!--T:22--> Afficher votre image</translate> | ||
|Step_Content=<translate><!--T:23--> | |Step_Content=<translate><!--T:23--> | ||
Ligne 151 : | Ligne 151 : | ||
|Step_Picture_01=Du_pixelart_sur_vos_écrans_OLED_hackter_logo.jpg | |Step_Picture_01=Du_pixelart_sur_vos_écrans_OLED_hackter_logo.jpg | ||
}} | }} | ||
− | {{ | + | {{Tuto Step |
|Step_Title=<translate><!--T:26--> Animation - Position</translate> | |Step_Title=<translate><!--T:26--> Animation - Position</translate> | ||
|Step_Content=<translate><!--T:27--> | |Step_Content=<translate><!--T:27--> | ||
Ligne 201 : | Ligne 201 : | ||
|Step_Picture_03=Du_pixelart_sur_vos_écrans_OLED_mariocann.jpg | |Step_Picture_03=Du_pixelart_sur_vos_écrans_OLED_mariocann.jpg | ||
}} | }} | ||
− | {{ | + | {{Tuto Step |
|Step_Title=<translate><!--T:33--> Animation - Images multiples</translate> | |Step_Title=<translate><!--T:33--> Animation - Images multiples</translate> | ||
|Step_Content=<translate><!--T:34--> | |Step_Content=<translate><!--T:34--> | ||
Ligne 249 : | Ligne 249 : | ||
|Step_Picture_00=Du_pixelart_sur_vos_écrans_OLED_hackster_anim.png | |Step_Picture_00=Du_pixelart_sur_vos_écrans_OLED_hackster_anim.png | ||
}} | }} | ||
− | {{ | + | {{Notes |
|Notes=<translate><!--T:36--> Si vous voulez être informés des prochains tutoriels suivez moi sur twitter : https://twitter.com/m4dnerd</translate> | |Notes=<translate><!--T:36--> Si vous voulez être informés des prochains tutoriels suivez moi sur twitter : https://twitter.com/m4dnerd</translate> | ||
}} | }} | ||
− | {{ | + | {{Tuto Status |
|Complete=Published | |Complete=Published | ||
}} | }} |
Auteur Rémi Sarrailh (µsini) | Dernière modification 9/12/2019 par Clementflipo
arduino, esp8266, esp32, oled, u8g2, pixel, pixelart Du_pixelart_sur_vos_écrans_OLED_pixelart_wiki.jpg fr none Technique 0
Youtube
Nous allons utiliser un écran 128x32 (les écrans en 128x64 sont aussi très répandus si vous voulez plus d'espace), il nous faut donc choisir une petite image.
Les sprites de la GameBoy sont très faciles à convertir, mais gardez à l'esprit que nous sommes limités au noir et blanc, là ou la gameboy est capable d'afficher 4 nuances de gris.
Vous pouvez télécharger des sprites sur https://www.spriters-resource.com/ comme point de départ.
Pour notre premier exemple, nous allons utiliser le logo d'hackster.io
Nous allons
Redimensionner l'image à la taille la plus proche de votre écran (128x32) : Image --> Redimensionner l'image à une nouvelle taille
Puis augmenter la taille de votre canvas à 128x32 : Image --> Redimensionner le tableau
Dans les préréglages des brosses, choisissez Pixel Art
Puis redessiner l'image.
Sauvegarder votre image au format XBM
Ouvrez le fichier XBM avec un éditeur de texte et changez le nom des variables
Fichier XBM
#define _width 128 #define _height 32 static char _bits[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00... };
Fichier logo.h
#define logo_width 128 #define logo_height 32 static const unsigned char logo[] U8X8_PROGMEM = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00... };
Nous allons utiliser la bibliothèque U8g2 (elle est compatible avec beaucoup d'écrans)
#include <Wire.h> //I2C #include <U8g2lib.h> #include "logo.h" //I2C SSD1306 128x32 (search U8g2 examples for other display) U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE); void setup() { u8g2.begin(); //Start Screen drawLogo(); } void loop() { } void drawLogo() { u8g2.firstPage(); do { u8g2.drawXBMP(0, 0, logo_width, logo_height, logo); } while ( u8g2.nextPage() ); }
J'ai aussi mis les fichiers PNG et XBM dans un dossier res/ dans mon code afin de savoir ce qu'il y a dans logo.h et de pouvoir le modifier ultérieurement.
Téléversez votre code et voilà !
Une autre façon d'animer une image et d'utiliser plusieurs images.
Au lieu de changer la position X, nous allons utiliser une condition SWITCH et augmenter la valeur animation_state.
void drawAnimation() { u8g2.firstPage(); do { switch (animation_state) { case 0: u8g2.drawXBMP(0, 0, logo_width, logo_height, logo_1); break; case 1: u8g2.drawXBMP(0, 0, logo_width, logo_height, logo_2); break; case 2: u8g2.drawXBMP(0, 0, logo_width, logo_height, logo_3); break; case 3: u8g2.drawXBMP(0, 0, logo_width, logo_height, logo_4); break; case 4: u8g2.drawXBMP(0, 0, logo_width, logo_height, logo_5); break; case 5: u8g2.drawXBMP(0, 0, logo_width, logo_height, logo_6); break; } } while ( u8g2.nextPage() ); }
Afin que notre animation soit complète, il nous faut l'inverser, pour cela, nous allons utiliser le booléen (vrai/faux) animation_direction afin que l'animation aille dans le sens inverse.
drawAnimation(); if (animation_direction) { animation_state--; } else { animation_state++; } if (animation_state == 5) { animation_direction = true; } if (animation_state == 0) { animation_direction = false; }
Si on combine les deux techniques, on peut créer des animations plus complexe : https://www.youtube.com/watch?v=iB52FujIK-A
Si vous voulez être informés des prochains tutoriels suivez moi sur twitter : https://twitter.com/m4dnerd
Published
Vous avez entré un nom de page invalide, avec un ou plusieurs caractères suivants :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #