Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédenteDernière révisionLes deux révisions suivantes |
python:micropython:materiel:ssd1306 [2022/08/03 11:43] – phil | python:micropython:materiel:ssd1306 [2023/06/04 11:30] – [1. Présentation] phil |
---|
{{ :micropython:logomicropython.png?nolink&100|}} | {{ :micropython:logomicropython.png?nolink&100|}} |
| |
[Mise à jour le : 8/7/2021] | [Mise à jour le : 19/5/2023] |
| |
* **Ressources** | * **Ressources** |
* <html><a href="https://docs.micropython.org/en/latest/esp32/tutorial/intro.html" target="_blank">Getting started with MicroPython on the ESP32</a></html> | * <html><a href="https://docs.micropython.org/en/latest/esp32/tutorial/intro.html" target="_blank">Getting started with MicroPython on the ESP32, RP2, etc.</a></html> |
* <html><a href="https://micropython.org/" target="_blank">MicroPython.org</a></html> | * <html><a href="https://micropython.org/" target="_blank">MicroPython.org</a></html> |
* <html><a href="https://docs.micropython.org/en/latest/index.html#" target="_blank">MicroPython documentation</a></html> | * <html><a href="https://docs.micropython.org/en/latest/index.html#" target="_blank">MicroPython documentation</a></html> |
* **Lectures connexes** | * **Lectures connexes** |
* **Installer MicroPython** - [[python:micropython:materiel:espressif|MicroPython - Les modules Espressif ESP32 et ESP8266]] | * **Installer MicroPython** - [[python:micropython:materiel:espressif|MicroPython - Les modules Espressif ESP32 et ESP8266]] |
| * **Raspberry Pi Pico** - [[:python:micropython:raspypico2040|Les modules Raspberry Pi Pico et Pico W]] |
* **Programmez** ! Juillet/Août 2019 | * **Programmez** ! Juillet/Août 2019 |
* **Elektor 489** Mai/Juin 2021 | * **Elektor 489** Mai/Juin 2021 |
{{ :arduino:gravity-i2c-oled-128x64-display.jpg?nolink&150|Gravity OLED-2864 Display}} | {{ :arduino:gravity-i2c-oled-128x64-display.jpg?nolink&150|Gravity OLED-2864 Display}} |
==== 1. Présentation ==== | ==== 1. Présentation ==== |
Les exemples de code de cette page ont été testés sur un afficheur [[arduino:afficheurs:ard0_96|Gravity OLED-2864 (128x64) de DFROBOT]] connecté à un **ESP32** et un **Raspberry Pi Pico**. Cet afficheur est piloté par un circuit SOLOMON SYSTECH <html><a href="https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf" target="_blank">SSD1306</a></html>. Sa mise en oeuvre nécessite une bibliothèque (téléchargeable à partir du lien ci-dessous). | Les exemples de code de cette page ont été testés sur un afficheur <html><a href="https://www.gotronic.fr/art-module-oled-i2c-gravity-dfr0486-26805.htm" target="_blank">Gravity OLED-2864 (128x64) de DFROBOT</a></html> et un <html><a href="https://www.gotronic.fr/art-module-afficheur-oled-0-96-tf052-28511.htm" target="_blank">Module afficheur OLED 0,96'' TF052</a></html> connectés à un **ESP32** ou à un **Raspberry Pi Pico**. Ces afficheurs sont pilotés par un circuit SOLOMON SYSTECH <html><a href="https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf" target="_blank">SSD1306</a></html>. Sa mise en oeuvre nécessite une bibliothèque (téléchargeable à partir du lien ci-dessous). |
| |
<note warning><html><a href="https://raw.githubusercontent.com/micropython/micropython/master/drivers/display/ssd1306.py" target="_blank">Télécharger</a></html> la bibliothèque SSD1306 pour MicroPython et la copier dans un fichier nommé ssd1306.py à installer dans la carte à µC. </note> | <callout type="warning" icon="true"><html><a href="https://github.com/stlehmann/micropython-ssd1306" target="_blank"><strong>Télécharger</strong></a></html> la bibliothèque SSD1306 pour MicroPython et la copier dans un fichier nommé ssd1306.py à installer dans la carte à µC. Celle bibliothèque hérite de <html><a href="https://docs.micropython.org/en/latest/pyboard/library/framebuf.html" target="_blank">framebuf</a></html>. On dispose donc des méthodes ci-dessous pour dessiner des formes sur le buffer d'impression.</callout> |
| |
* **Organisation de l'écran**{{ :python:micropython:materiel:350px-feather-micropython-oled-position.png?nolink |}} | * **Organisation de l'écran**{{ :python:micropython:materiel:350px-feather-micropython-oled-position.png?nolink |}} |
* **c** : couleur (1=point allumé, 0=point éteint) \\ | * **c** : couleur (1=point allumé, 0=point éteint) \\ |
| |
* **Méthodes de la bibliothèque SSD1306** | * **Méthodes de la bibliothèque SSD1306** (hérite de framebuf) |
| |
^ Prototype ^ Description ^ | ^ Prototype ^ Description ^ |
| **fill**( c ) | Remplit l'écran en noir (c=1) ou en blanc (c=0) | | | **fill**( c ) | Remplit l'écran en **noir (c=1)** ou en **blanc (c=0)** | |
| **fill_rect**(x,y,w,h,c) | Dessine un rectangle de largeur w et de hauteur h dans la couleur c au point (x,y) | | | **rect** ( x , y , w , h , c[, f]) | Dessine un rectangle de largeur w et de hauteur h dans la couleur c au point (x,y). Le paramètre facultatif f peut être défini sur True pour remplir le rectangle. Sinon, seul un contour d'un pixel est dessiné. | |
| **hline**(x,y,w,c) | Dessine une ligne horizontale de longueur w dans la couleur c au point (x,y) | | | **hline**(x,y,w,c) | Dessine une ligne horizontale de longueur w dans la couleur c au point (x,y) | |
| **line**(x1,y1,x2,y2,c) | Dessine une ligne dans la couleur c entre les points (x1,y1) et (x2,y2) | | | **vline**(x,y,h,c) | Dessine une ligne verticale de longueur h dans la couleur c au point (x,y) | |
| **pixel**(x,y,c) | Affiche un pixel dans la couleur c au point (x,y) | | | **line**(x1,y1,x2,y2,c) | Dessine une ligne dans la couleur c entre les points (x1,y1) et (x2,y2) | |
| **scroll**(depl.horiz, depl. vert.) | Déplace le contenu de l'écran de n points | | | **pixels** ( x , y[, c]) | Affiche un pixel dans la couleur c au point (x,y). Si c n'est pas donné, obtient la valeur de couleur du pixel spécifié. Si c est donné, définit le pixel spécifié sur la couleur donnée. | |
| **show**() | Transfert le contenu du buffer d'affichage sur l'écran | | | **scroll**(depl.horiz, depl. vert.) | Déplace le contenu de l'écran de n points | |
| **text**("text",x,y,c) | Affiche le texte text dans la couleur c au point (x,y) | | | **show**() | Transfert le contenu du buffer d'affichage sur l'écran | |
| **vline**(x,y,h,c) | Dessine une ligne verticale de longueur h dans la couleur c au point (x,y) | | | **text**("text",x,y,c) | Affiche le texte "text" dans la couleur c au point (x,y). En noir (c=1) ou en blanc (c=0). **La hauteur d'un caractère occupe 8px**. | |
| | **poly** ( x , y , coordonnées , c[, f]) | Étant donné une liste de coordonnées, dessine un polygone fermé arbitraire (convexe ou concave) à l'emplacement x, y donné en utilisant la couleur donnée.\\ Les coordonnées doivent être spécifiées sous forme de tableau d'entiers, par exemple .array('h', [x0, y0, x1, y1, ... xn, yn])\\ Le paramètre facultatif f peut être défini sur True pour remplir le polygone. Sinon, seul un contour d'un pixel est dessiné. | |
| | **ellipse**( x , y , xr , an , c[, f , m]) | Dessine une ellipse à l'emplacement donné. Les rayons xr et yr définissent la géométrie ; des valeurs égales entraînent le dessin d'un cercle. Le paramètre c définit la couleur.\\ Le paramètre optionnel f peut être défini sur True pour remplir l'ellipse sinon, seul un contour d'un pixel est dessiné. | |
| |
| |
==== 2. Programmation ==== | ==== 2. Programmation ==== |
<note important>A l'exception de scroll(), les méthodes ci-dessus "écrivent" dans le tampon d'affichage.</note> | <callout type="warning" icon="true">A l'exception de scroll(), les méthodes ci-dessus "écrivent" dans le tampon d'affichage.</callout> |
| |
=== 2.1 Configurations === | === 2.1 Configurations === |
| |
<note>Dans les exemples de cette page, les microcontrôleurs accèdent à l'afficheur via le bus I2C. Il faut au préalable le configurer et créer une instance de la classe SSD1306 comme ci-dessous.</note> | <callout type="primary" icon="true">Dans les exemples de cette page, les microcontrôleurs accèdent à l'afficheur via le bus I2C. Il faut au préalable le configurer et créer une instance de la classe SSD1306 comme ci-dessous.</callout> |
| |
// Exemple pour un **ESP32 Feather Huzzah**// | // Exemple pour un **ESP32 Feather Huzzah**// |
| |
# Configuration du bus i2c sur le Raspberry Pi Pico | # Configuration du bus i2c sur le Raspberry Pi Pico |
i2c = I2C(0) | # Accès au connecteur I2C0 du shield Grove |
| i2c = I2C(0,sda=Pin(8), scl=Pin(9),freq=400_000) |
| # Accès au connecteur I2C1 du shield Grove |
| #i2c = I2C(1,sda=Pin(6), scl=Pin(7),freq=400_000) |
... | ... |
| |
</code> | </code> |
| |
| |
{{ :python:micropython:materiel:thonny.png?nolink&70|}} | {{ :python:micropython:materiel:thonny.png?nolink&70|}} |
<note tip><html><strong><a href="https://webge.fr/doc/wikis/code/micropython/MICROPYTHON_ESP32_SSD1306_DEMO.zip" target="_blank">Télécharger</a></strong></html> le projet MICROPYTHON_ESP32_SSD1306_DEMO pour Thonny et la <html><strong><a href="https://webge.fr/doc/wikis/videos/VIDEO_MICROPYTHON_ESP32_DEMO_ SSD1306.zip" target="_blank">vidéo</a></strong></html> des démos.</note> | <callout type="tip" icon="true"><html><strong><a href="https://webge.fr/doc/wikis/code/micropython/MICROPYTHON_ESP32_SSD1306_DEMO.zip" target="_blank">Télécharger</a></strong></html> le projet MICROPYTHON_ESP32_SSD1306_DEMO pour Thonny et la <html><strong><a href="https://webge.fr/doc/wikis/videos/VIDEO_MICROPYTHON_ESP32_DEMO_ SSD1306.zip" target="_blank">vidéo</a></strong></html> des démos.</callout> |
| |
* **Démo 5 ** : affichage d'une icône avec canal alpha \\ Modifier l'exemple du site <html><a href="https://wiki.mchobby.be/index.php?title=FEATHER-MICROPYTHON-OLED" target="_blank">MCHobby</a></html> en prenant en compte le code du §2.1 pour un ESP32 ou un Raspberry Pi Pico. | * **Démo 5 ** : affichage d'une icône avec canal alpha \\ Modifier l'exemple du site <html><a href="https://wiki.mchobby.be/index.php?title=FEATHER-MICROPYTHON-OLED" target="_blank">MCHobby</a></html> en prenant en compte le code du §2.1 pour un ESP32 ou un Raspberry Pi Pico. |
| |
| |