Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2585
Enregistré en : juillet 2016
Localisation : Terre

#1 Message par Temps-x » mar. 31 déc. 2019 12:40

Bonjour tout le forum,

J'ai acheté 6 écrans OLED 0.96 en 128x64(Ssd1306) et 1 écran OLED 0.96 en 132x64(Ssd1106) de couleur jaune & bleu, blanc, bleu, donc 5 en mode SPI et 1 en I²C.

Prix d'achat pour chaque écran 1,25 euro, voici son datasheet

Voici les dimensions de l'écran
Dimension OLED 096.png


Les 3 couleurs que j'ai reçu

==> jaune & bleu ==> ==> blanc ==> ==> ==> bleu
Écran OLED 0.96 128x64 - 2 spi.jpg


D'autre couleur existe, mais le prix augmente, pour l'utilisation que je vais en faire pas besoin de mettre chère.

*****************************************************************************************************************************************************************************************

Mise en fonction des écrans OLED 128x64(Ssd1306) et OLED 0.96 en 132x64(Ssd1106)

Pour la mise en fonction des écrans OLED 128x64(Ssd1306) et OLED 0.96 en 132x64(Ssd1106) je me suis servi d'un microcontrôleur Pic18F26K22, voici son datasheet

Attension si vous regardez les photos ci-dessus vous allez vous apercevoir qu'il y a différente version dans le branchement SPI, et dans le branchement de l'alimentation.

Si vous faite pas attention sur la polarité à chaque changement d'écran ça risque de fumer.... :sifflotte:

j'ai opté pour le mode SPI bit bang, ce qui permets de choisir les pattes quand veut sur le microcontrôleur, de plus ça le rends compatible
pour les microcontrôleurs ne possèdent pas du SPI

Voici mon branchement pour mode SPI

Code : Tout sélectionner

#DEFINE dc      LATA,2                 ; RA2 ==> sélection du mode : commande = 0 , donnée = 1
#DEFINE cs      LATA,1                 ; RA1 ==> activer ou désactiver la transmission
#DEFINE rst     LATA,0                 ; RA0 ==> reset de l'écran

#DEFINE sck     LATC,3                 ; RC3 ==> horloge de synchronisation 
#DEFINE mosi    LATC,5                 ; RC5 ==> envoyer les données sur écran oled 128x64

En ce qui concerne le branchement du mode SPI pour RESET de l'écran, j'ai prévu dans le code un changement de broche, en fonction de l'écran utilisé


Le code ASM a été écrit avec jens file Editor 3.95

Fichier code : Oled(Code).zip
Fichier à mettre dans le Pic : Oled(Hex).zip

La vidéo corresponds au fichier ci-dessus, avec défilement (Scroll en anglais) de l'avion.

https://youtu.be/z4NN2GZ04Xg

Dans l'exemple de cette vidéo, je traite un seule sens de défilement, mais il y en a plein d'autre que je vais vous citer.

Mode Horizontal
Gauche vers la droite
Droite vers la gauche

Mode vertical
Bas vers le haut,
Haut vers le bas

Mode diagonal
Bas vers le haut en diagonal
Haut vers le bas en diagonal

Pour un code en version I²C, sa reste similaire pour la configuration de l'écran, je vais vous mettre le code pour une version I²C, ou peut être dans le même code, :roll: hum... je vais voir si cela est possible.

Suite à une demande, j'ai réalisé un code pour Pic16F876 en I2C, je vous le mets en téléchargement ci-dessous, il n'est pas encore fini car il y a une imperfection sur l'affichage de l'image, je ne sais pas d’où ça peu venir

Image

Fichier code + fichier compilé téléchargement : ICI

J'ai voulu voir si l’imperfection d'image sur le Pic16F876A venait de la façon que j'ai fait pour gérer la mémoire programme, pour cela j'ai pris
un Pic18F26K22 avec une configuration identique en I2C

Et voila le résultat

Image

Fichier code + fichier compilé téléchargement : ICI

l y a plus aucun défaut, l'image est propre :roll: j'en conclus qu'il faut que je trouve un moyen pour gérer la mémoire programme du Pic16F876A autrement.

Pour ceux qui veulent trouver l'adresse I²C automatiquement, voici un code source que j'ai écrit avec schéma ICI

Oscilloscope en cours de réalisation

https://www.youtube.com/watch?v=NKMaj2xxP-4

Ben voila, l'oscilloscope fonction à peu près bien, le programme pourras être amélioré par la suite, mais pour l'instant je prépare ça mise en boitier.

https://youtu.be/kdsdKreREfo

Comme j'ai plus de place qu'il en fallait, j'ai rajouté un vu-mètre, ça peut servir à plein de chose, en voici un exemple

https://www.youtube.com/watch?v=SibYyGeVXz4

J'ai également créer un petit programme pour visionner les fichier Oled 128x64 dans les 2 modes que vous pouvez télécharger ICI

Exemple pour un écran Oled 128x64 et Oled 132x64

Bip bip & Coyote(blanc).jpg


Marilyn-Monroe(blanc).jpg


Popeye(blanc).jpg


Vu-mètre (5 volts).jpg


Titi & grosminet(blanc).jpg


Vous avez une option pour récupérer l'image que vous visionnez dans le format de l'écran, ce qui permet par la suite de la modifier avec un éditeur d'image comme Paint qui je vous le rappelle est disponible gratuitement sous Windows.

Le programme gère actuellement l'hexadécimal suivi de virgule comme l'exemple ci-dessous, je pense qu'il doit être compatible pour pas mal de langage.

Exemple : db 0x4D,0xC4,0xC7,0x41,0x40,0xC1,0x43,0x46,0x44,0xE6,0xA6,0xA3,0xF3,0xD1,0xF8,0xF8

Mais bon je laisse le soins à venom pour terminer cette partie, dans tout les langages.

:roll: On rajouteras par la suite différents type d'écrans au fut à mesure de la demande et du temps que je peux avoir. :wink:


==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le sam. 23 juil. 2022 02:01, modifié 84 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 0.96 128x64
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#2 Message par venom » mar. 31 déc. 2019 17:14

Bonjour,

:bravo: Belle avancer pour Temps-X. Même en période de fête ça boss dur. :langue:
Vivement la suite.






@++
Mon site web
Mon discord : venom#4888

Écran OLED 0.96 128x64
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2585
Enregistré en : juillet 2016
Localisation : Terre

#3 Message par Temps-x » mar. 31 déc. 2019 18:42

Bonsoir venom, et tou le forum,

venom a écrit :Source du message Même en période de fête ça boss dur. :langue:


Pour moi..... la programmation et l'électronique son une passion, c'est un hobby, je ne considère pas ça comme un travaille. :langue:

Je n'arrive pas à comprendre cela

Demande.jpg


Tout en anglais :furieux: ....si il y a quelqu'un pour me l'expliquer il serait le bienvenue

La suite arrive......

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 0.96 128x64
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#4 Message par Gérard » jeu. 2 janv. 2020 14:06

Bonjour à tous,

Pour comprendre, je me sers souvent de ça.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Écran OLED 0.96 128x64
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2585
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » jeu. 2 janv. 2020 17:26

Bonsoir Gérard, et tout le forum,

Merci pour ton aide, mais Google traduction, et bien d'autre, je connais, l'anglais technique c'est très dur à comprendre même quand c'est traduit ça reste incompréhensible.

Si je reprends les termes du datasheet traduire par google sa donne ça :

Définir la colonne inférieure adresse de début pour adressage de page mode
1) Définissez le quartet inférieur de l'adresse de début de colonne s'enregistrer pour le mode d'adressage de page en utilisant X [3: 0]
comme bits de données.
Le registre de ligne d'affichage initial est réinitialisé à 0000b après RÉINITIALISATION.

Définir une colonne supérieure adresse de début pour adressage de page mode
2) Définissez le quartet supérieur de l'adresse de début de colonne s'enregistrer pour le mode d'adressage de page en utilisant X [3: 0]
comme bits de données.
Le registre de ligne d'affichage initial est réinitialisé à 0000b après RÉINITIALISATION.

:roll: c'est quoi la colonne inférieure et la colonne supérieure ..... j'ai ma petite idée dessus, car j'ai fait des essais, mais je voudrais une petite
explication.

Vraiment une horreur de faire de la programmation quand on comprends pas le langage anglo-saxon :mur:

A+
Modifié en dernier par Temps-x le jeu. 2 janv. 2020 22:21, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 0.96 128x64
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#6 Message par satinas » jeu. 2 janv. 2020 20:35

Bonjour et bonne année à tous

Je n'arrive pas à comprendre cela
Tout en anglais :furieux: ....si il y a quelqu'un pour me l'expliquer il serait le bienvenue


Temps-x, ce que je comprends

En mode "Page addressing Mode" on pilote le lcd par pages.
Une page fait 8 pixels de haut sur toute la largeur du lcd, 8 pages pour un 64x128.
La page 0 contient les 8 lignes de pixels du haut.
Ensuite il y a des colonnes de pixels 0 à 127, pour un 64x128.

Pour écrire on spécifie un numéro de page, puis la première colonne à écrire.

Pous définir la page (0 à 7), on envoie :
- la commande 0b10110ppp

Pour définir la première colonne (0 à 127) on envoie :
- la commnande 0b0000LLLL (lower nibble -> 4 bits de poids faible, nibble = quartet)
- la commnande 0b0001hhhh (higher nibble -> 4 bits de poids fort)

Ensuite on envoie les datas, des segments verticaux de 8 pixels.

Set the lower nibble of the column start address register for Page Addressing Mode using X[3:0] as data bits.
peut se traduire par
définir le quartet bas de l'index de la colonne de départ pour le mode d'adressage par page, le quartet est dans X[3:0]

Écran OLED 0.96 128x64
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2585
Enregistré en : juillet 2016
Localisation : Terre

#7 Message par Temps-x » jeu. 2 janv. 2020 22:16

Bonsoir satinas, et tout le forum,

Merci ! pour ta réponse, heureusement que tu es là, je t'apprécie énormément. de plus super bien expliqué.
Je vais tester ta théorie, mais je crois que tu as raison sur tous ce que tu as dit.

Je garde ton explication précieusement, car je vais en avoir besoin

:roll: Certaine personne connaissait la réponse, mais ils ne sont pas intervenus, ce ne sais pas le pourquoi ?

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 0.96 128x64
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#8 Message par satinas » jeu. 2 janv. 2020 22:21

Pourtant tu es déjà arrivé à le faire fonctionner, et même en graphique vu la vidéo, comment as-tu fait ? :-)
J'avais travaillé sur cet afficheur, mais déjà tout oublié, le fait de relire et c'est revenu, cela doit être le cas pour d'autres.

Écran OLED 0.96 128x64
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2585
Enregistré en : juillet 2016
Localisation : Terre

#9 Message par Temps-x » jeu. 2 janv. 2020 22:30

Re

Ce qui m'a aidé, c'est le tutoriel de Jérémy, après j'ai regardé la datasheel, et ça m'a fait comprendre une grande partie.

Et comme j'avais déjà touché aux écrans Nokia, je me suis dit que c'est la même chose pour gestion ASCII

Après je suis allé voir les source en C+, puis j'ai fait un tas d'essai, des heures, et des heures, pour arrivé à ce résultat.

Rien que pour le mot Scroll il m'a fallut chercher ce que ça voulait dire, fin de compte j'ai trouvé oops défilement de l'écran

Voilà, et j'ai encore à voir pas mal de chose pour le projet que je veux faire.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 0.96 128x64
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#10 Message par satinas » jeu. 2 janv. 2020 22:48

Le problème de cet afficheur et du Nokia, c'est cette histoire de pages. On est obligé d'écrire 8 pixels à la fois.
Sur les autres lcds ont peut écrire 1 seul pixel. Cela simplifie beaucoup le graphique et l'écriture d'un texte n'importe où sur l'écran.


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité