CH32V003 : afficheur graphique OLED

Ce que vous allez faire

Vous allez créer les couches logicielles ("drivers") nécessaires pour piloter un module d'affichage graphique OLED monochrome avec interface I2C.

Vous devrez en particulier implémenter 2 méthodes : clear() pour effacer l'écran et line(x1, y1, x2, y2) pour tracer une ligne. Prenez le temps nécessaire pour bien traiter cet exercice car nous nous en resservirons plus tard.

Pour tester votre travail, la boucle infinie de votre application réalisera les opérations suivantes :

  1. Effacer l'écran

  2. Tracer une ligne verticale tous les 8 pixels

  3. Attendre un peu pour avoir le temps de voir le résultat

  4. Effacer l'écran

  5. Tracer une ligne horizontale tous les 8 pixels

  6. Attendre un peu

  7. Effacer l'écran

  8. Tracer une ligne diagonale tous les 8 pixels (vous n'avez pas besoin de couvrir toute la largeur de l'écran, ça vous simplifiera le code)

  9. Attendre un peu

Détails pratiques

Le module OLED que je vous ai recommandé dans les pré-requis est basé sur un contrôleur CH1116 (data sheet), qui est compatible avec le SH1106 (data sheet). La documentation de ce dernier étant un peu mieux traduite et mieux présentée, vous pouvez vous y référer.

Notez que l'abréviation un peu fantaisiste "Hz" apparaissant dans la description des modes de communication ne signifie pas "Hertz", comme on pourrait s'y attendre, mais "haute impédance" (correspondant au jargon anglais "High Z", Z étant le nom de variable classiquement utilisé dans les calculs pour l'impédance). L'état de haute impédance est un état dans lequel aucun courant ne peut ni entrer ni sortir de la broche concernée, donc idéal pour configurer les broches inutilisées.

La solution à laquelle vous allez arriver sera très proche de celle du cours CH32V003 : I2C et afficheur LCD et c'est volontaire. Dans cet exercice, vous allez devoir chercher dans la documentation tout ce que j'avais fait pour vous dans le cours précédent, donc la similitude des 2 démarches limitera la difficulté de l'exercice.

Pour le tracé de lignes, vous utiliserez l'algorithme de Bresenham.

Si vous avez aimé cet exercice, vous pouvez le prolonger en ajoutant une méthode qui affiche une image. Voici un petit smiley au format XBM, qui est sans doute ce qu'on peut faire de plus simple. Faites simplement un #include de smiley.xbm dans votre main.c et appelez votre méthode d'affichage d'image avec les informations données par smiley.xbm.


Copyright (c) 2024 Vincent DEFERT - Tous droits réservés