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 ---
- 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 ---
Modérateur : mazertoc
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
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
Les 3 couleurs que j'ai reçu
jaune & bleu blanc bleu
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....
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
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, 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
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
Fichier code + fichier compilé téléchargement : ICI
l y a plus aucun défaut, l'image est propre 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
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.
On rajouteras par la suite différents type d'écrans au fut à mesure de la demande et du temps que je peux avoir.
A+
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
Les 3 couleurs que j'ai reçu
jaune & bleu blanc bleu
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....
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, 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
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
Fichier code + fichier compilé téléchargement : ICI
l y a plus aucun défaut, l'image est propre 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
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.
On rajouteras par la suite différents type d'écrans au fut à mesure de la demande et du temps que je peux avoir.
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.
Écran OLED 0.96 128x64
Bonjour,
Belle avancer pour Temps-X. Même en période de fête ça boss dur.
Vivement la suite.
@++
Belle avancer pour Temps-X. Même en période de fête ça boss dur.
Vivement la suite.
@++
Écran OLED 0.96 128x64
Bonsoir venom, et tou le forum,
Pour moi..... la programmation et l'électronique son une passion, c'est un hobby, je ne considère pas ça comme un travaille.
Je n'arrive pas à comprendre cela
Tout en anglais ....si il y a quelqu'un pour me l'expliquer il serait le bienvenue
La suite arrive......
A+
venom a écrit :Source du message Même en période de fête ça boss dur.
Pour moi..... la programmation et l'électronique son une passion, c'est un hobby, je ne considère pas ça comme un travaille.
Je n'arrive pas à comprendre cela
Tout en anglais ....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.
Écran OLED 0.96 128x64
Écran OLED 0.96 128x64
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.
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
A+
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.
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
A+
Modifié en dernier par Temps-x le jeu. 2 janv. 2020 22:21, modifié 1 fois.
Écran OLED 0.96 128x64
Bonjour et bonne année à tous
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]
Je n'arrive pas à comprendre cela
Tout en anglais ....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
Bonsoir satinas, et tout le forum,
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
Certaine personne connaissait la réponse, mais ils ne sont pas intervenus, ce ne sais pas le pourquoi ?
A+
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
Certaine personne connaissait la réponse, mais ils ne sont pas intervenus, ce ne sais pas le pourquoi ?
A+
Écran OLED 0.96 128x64
Écran OLED 0.96 128x64
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é défilement de l'écran
Voilà, et j'ai encore à voir pas mal de chose pour le projet que je veux faire.
A+
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é défilement de l'écran
Voilà, et j'ai encore à voir pas mal de chose pour le projet que je veux faire.
A+
Écran OLED 0.96 128x64
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 63 invités