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)
- paulfjujo
Expert- Messages : 2589
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
venom a écrit :paulfjujo a écrit : en fin d'année ..ce serait plutot pour 2022
Et oui Temps-X le temps passe vite. C'est bientôt 2022 Il faut relever la tête des pics et de l'ASM
@++
the last trial ..
verification avec 8 lignes de 21 chars et offset X=2
Code : Tout sélectionner
message
db "12345-A-9012345678901" ; ‚ 0
db "123456-B-012345678901" ; ‚ 22
db "1234567-C-12345678901" ; ‚ 44
db "12345678-D-2345678901" ; ‚ 66
db "123456789-E-345678901" ; ‚ 88
db "1234567890-F-45678901" ; ‚ 110
db "12345678901-G-5678901" ; ‚ 132
db "123456789012-H-567890" ; ‚ 154
===========================================
locate 0,2,0 ; macro : se placer à la hauteur de l'écran, se placer à la largeur de l'écran
print 21,0,0,0,0 ; macro : longueur de la donnée, emplacement du départ de la donnée à lire
locate 1,2,0
print 21,22,0,0,0
locate 2,2,0
print 21,44,0,0,0
locate 3,2,0
print 21,66,0,0,0
locate 4,2,0
print 21,88,0,0,0
locate 5,2,0
print 21,110,0,0,0
locate 6,2,0
print 21,132,0,0,0
locate 7,2,0
print 21,154,0,0,0
en haut ,à droite .. un residu de 2 pixels ?
2 + 128 +2=132 !
enlevé avec une RAZ OLED sur 132 pixels au lieu de 128
Code : Tout sélectionner
cls_oled
locate 0,0,0
movlw D'8'
movwf loop7
movlw D'132' ; was 128
movwf loop8
...etc
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Bonsoir paulfjujo, venom, et tout le forum,
après le code ASM, c'est autour du temps, une de plus, si ça continu je vais finir comme - - - - - -
Ben ouais, et j'en sais quelque chose...
Il faudrait savoir combien de pixel comporte ton écran sur une longueur, en affichage réelle.
Il est possible que ton écran est gardé des impuretés, le mieux c'est de le débrancher du Pickit3 et coupé l'alimentation, est de refaire l'essai.
Ses écran gardes la mémoire même après les avoir débranché, mais par prudence je vais refaire le même test que toi.
ce qui change dans le mode CLS, c'est c'est 3 lignes, c'est tout, ça permet de revenir au point de départ avant d'atteindre la longueur de 129 pixels
Mon CLS fait 128x64 pour les deux type d'écrans(reste à voir si ton écran fonctionne pas d'une manière différente, avec ses chinois va savoir)
Ce que s'obtient avec ton code ASM ci-dessus (post 51) avec écran Oled 132x64 (1106)
Ce que s'obtient avec ton code ASM ci-dessus (post 51) avec écran Oled 128x64 (1306)
Voici les deux réunis
Dans tout les cas le graphique s'affiche bien, donc, le reste doit suivre, nota tu peux le refaire en C, chez moi tout est ok.
J'ai refait le programme pour Pic18F27K42, en SPI software, ça fonction bien. j'affiche les 8 figures sans aucune erreur.
A+
paulfjujo a écrit :Source du message en fin d'année ..ce serait plutot pour 2022
après le code ASM, c'est autour du temps, une de plus, si ça continu je vais finir comme - - - - - -
venom a écrit :Source du message Et oui Temps-X le temps passe vite.
Ben ouais, et j'en sais quelque chose...
paulfjujo a écrit :Source du message en haut ,à droite .. un residu de 2 pixels ?
Il faudrait savoir combien de pixel comporte ton écran sur une longueur, en affichage réelle.
Il est possible que ton écran est gardé des impuretés, le mieux c'est de le débrancher du Pickit3 et coupé l'alimentation, est de refaire l'essai.
Ses écran gardes la mémoire même après les avoir débranché, mais par prudence je vais refaire le même test que toi.
ce qui change dans le mode CLS, c'est c'est 3 lignes, c'est tout, ça permet de revenir au point de départ avant d'atteindre la longueur de 129 pixels
Mon CLS fait 128x64 pour les deux type d'écrans(reste à voir si ton écran fonctionne pas d'une manière différente, avec ses chinois va savoir)
Code : Tout sélectionner
cls_oled
incf posy,F ; avance d'une ligne en dessous de la première
clrf posx ; longueur à zéro
rcall position_oled ; faire appelle à la fonction effectuant cette manipulation
Ce que s'obtient avec ton code ASM ci-dessus (post 51) avec écran Oled 132x64 (1106)
Ce que s'obtient avec ton code ASM ci-dessus (post 51) avec écran Oled 128x64 (1306)
Voici les deux réunis
Dans tout les cas le graphique s'affiche bien, donc, le reste doit suivre, nota tu peux le refaire en C, chez moi tout est ok.
J'ai refait le programme pour Pic18F27K42, en SPI software, ça fonction bien. j'affiche les 8 figures sans aucune erreur.
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Bonjour,
J’ai entrepris d’utiliser un 16f876 pour commander ces afficheurs. Je me suis inspiré du programme en tête de de ce sujet (merci pour les commentaires vraiment complet).
Actuellement, je simule sous Proteus et utilise MPLAB IDE
Je n’ai pas encore testé en réel les modules, je viens de les recevoir et j’ai été surpris pour la taille minuscule !
Il me reste cependant quelques interrogations sur ce module sdd1306 et sur les données du programme Oled.ASM
La table ascii
Le contenu de la Table m’a interrogé sur son contenu. En la dépouillant j’ai constaté qu’il n’y a que la moitié de la table qui est utilisé pour avoir les 127 symboles d’une table ascii.
A quoi correspond le reste ?
La fonction agrandissement des caractères par le SDD1306 est-elle possible ?
La gestion du graphique
Si j’ai compris, il est nécessaire d’avoir 128 * 64 case mémoire pour pouvoir utiliser cette fonction ?
Avec mon 16f876, je suis mal partie, mais pas vraiment indispensable pour mon projet
Passer a un 18f ?
Mes soucis c’est le prix (projet a plusieurs dizaine d’exemplaire, la taille et le format (pas de cms pour moi)
Si vous avez une solution, je suis preneur
Cordialement
Francois
J’ai entrepris d’utiliser un 16f876 pour commander ces afficheurs. Je me suis inspiré du programme en tête de de ce sujet (merci pour les commentaires vraiment complet).
Actuellement, je simule sous Proteus et utilise MPLAB IDE
Je n’ai pas encore testé en réel les modules, je viens de les recevoir et j’ai été surpris pour la taille minuscule !
Il me reste cependant quelques interrogations sur ce module sdd1306 et sur les données du programme Oled.ASM
La table ascii
Le contenu de la Table m’a interrogé sur son contenu. En la dépouillant j’ai constaté qu’il n’y a que la moitié de la table qui est utilisé pour avoir les 127 symboles d’une table ascii.
A quoi correspond le reste ?
La fonction agrandissement des caractères par le SDD1306 est-elle possible ?
La gestion du graphique
Si j’ai compris, il est nécessaire d’avoir 128 * 64 case mémoire pour pouvoir utiliser cette fonction ?
Avec mon 16f876, je suis mal partie, mais pas vraiment indispensable pour mon projet
Passer a un 18f ?
Mes soucis c’est le prix (projet a plusieurs dizaine d’exemplaire, la taille et le format (pas de cms pour moi)
Si vous avez une solution, je suis preneur
Cordialement
Francois
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
- paulfjujo
Expert- Messages : 2589
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir
en effet 127 char sont suffisant pour les codes ascii
ce genre d'afficheur GRAPHIQUE demande beaucoup de RAM ..
128x64 pixels => 128x8 bytes
En rom on peut stocker d'autre format de police de characteres..
Un 18 F27K42 ?
128Ko de programme
8192 byte de RAM
moins cher maintenant qu'un 18F26K22
francois77 a écrit :La gestion du graphique
Si j’ai compris, il est nécessaire d’avoir 128 * 64 case mémoire pour pouvoir utiliser cette fonction ?
en effet 127 char sont suffisant pour les codes ascii
ce genre d'afficheur GRAPHIQUE demande beaucoup de RAM ..
128x64 pixels => 128x8 bytes
En rom on peut stocker d'autre format de police de characteres..
Un 18 F27K42 ?
128Ko de programme
8192 byte de RAM
moins cher maintenant qu'un 18F26K22
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Bonsoir francois77, et tout le forum,
Le faire avec un Pic16f876, c'est possible mais tout dépend du projet.
On n''est plus sur un écran LCD ou tout les caractères existe déjà en Gram avec c'est écran il faut créer c'est propre caractère.
La plus petite fonts fait 5 x 8bits, bien sur tu peux en créer d'autre bien plus grosses, ou prendre les fonts existant sur le nets
Mais la taille de ton programme va augmenter,
En supposant que tu prennes la plus petite Fonts 5 x 8bits = 5 octets pour 255 caractères tu auras 255 x 5 octets = 1275 octets
Si tu double la talle de tes caractères, tu multiplies par 1275 octets x 2 = 2550 octets
Sachant que ton microcontrôleur fait 8192 octets de taille programmes et que tu vas au moins utiliser 2000 octets pour écriture de ton programme
2550 octets +2000 octets = 4550 octets
Reste 8192 octets - 4550 octets = 3642 octets (1 image fait 1024 octets )
Le reste et libre de création, car le clavier c'est toi qui le fait
ouais, comme je te l'explique plus haut
Pas toujours, ça c'est pour remplir un écran, tu n'est pas obliger d'avoir une image qui remplisse l'écran, voir en Post #1 ou j'ai fait une vidéo avec l'avion
Je connais pas ton projet, mais si tu nous l'explique on pourras voir si on peu le réaliser avec ton Pic
Ne t'inquiète pas pour le CMS les Pic18F on aussi des gros boiter, quand au prix tous dépend du Pic.
Ton écran c'est du SPI ou I²C
Ta bien fait de prendre ASM pour ton microcontrôleur, car avec MikroC ou autre langage de haut niveau tu pourrais dire adieu à ton projet, car toute la place serait occupé pour des fonctions simple
A+
Le faire avec un Pic16f876, c'est possible mais tout dépend du projet.
francois77 a écrit :Source du message En la dépouillant j’ai constaté qu’il n’y a que la moitié de la table qui est utilisé pour avoir les 127 symboles d’une table ascii.
On n''est plus sur un écran LCD ou tout les caractères existe déjà en Gram avec c'est écran il faut créer c'est propre caractère.
La plus petite fonts fait 5 x 8bits, bien sur tu peux en créer d'autre bien plus grosses, ou prendre les fonts existant sur le nets
Mais la taille de ton programme va augmenter,
En supposant que tu prennes la plus petite Fonts 5 x 8bits = 5 octets pour 255 caractères tu auras 255 x 5 octets = 1275 octets
Si tu double la talle de tes caractères, tu multiplies par 1275 octets x 2 = 2550 octets
Sachant que ton microcontrôleur fait 8192 octets de taille programmes et que tu vas au moins utiliser 2000 octets pour écriture de ton programme
2550 octets +2000 octets = 4550 octets
Reste 8192 octets - 4550 octets = 3642 octets (1 image fait 1024 octets )
francois77 a écrit :Source du message A quoi correspond le reste ?
Le reste et libre de création, car le clavier c'est toi qui le fait
francois77 a écrit :Source du message La fonction agrandissement des caractères par le SDD1306 est-elle possible ?
ouais, comme je te l'explique plus haut
francois77 a écrit :Source du message Si j’ai compris, il est nécessaire d’avoir 128 * 64 case mémoire pour pouvoir utiliser cette fonction ?
Pas toujours, ça c'est pour remplir un écran, tu n'est pas obliger d'avoir une image qui remplisse l'écran, voir en Post #1 ou j'ai fait une vidéo avec l'avion
francois77 a écrit :Source du message Avec mon 16f876, je suis mal partie, mais pas vraiment indispensable pour mon projet
Je connais pas ton projet, mais si tu nous l'explique on pourras voir si on peu le réaliser avec ton Pic
Ne t'inquiète pas pour le CMS les Pic18F on aussi des gros boiter, quand au prix tous dépend du Pic.
Ton écran c'est du SPI ou I²C
Ta bien fait de prendre ASM pour ton microcontrôleur, car avec MikroC ou autre langage de haut niveau tu pourrais dire adieu à ton projet, car toute la place serait occupé pour des fonctions simple
A+
Modifié en dernier par Temps-x le ven. 20 mai 2022 19:30, modifié 1 fois.
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Bonjour,
Merci pour vos retours extra rapides
Pour compléter mon post précèdent, je dois avouer que j’avais eu l’idée au départ de faire une bibliothèque générale pour le pilotage des modules SSD1306 qui englobe les fonctions texte et les fonctions graphiques à l’identique d’un banal 2x16 lignes.
Pas assez de place sur mon 16f876 et encore car en ajoutant un eprom cela deviendrait possible mais peut-être pas très rapide
Pour l’instant j’arrive à piloter la fonction texte avec la fonte 5x8 sans trop de problème en mode SPI
J’ai commencé à écrire ma propre font en 16x8, car je n’ai pas trouvé sur le net de bibliothèque prête à l’emploi.
Si vous avez des liens ou une méthode pour faire des polices sur mesure je suis preneur
Pour mon projet en cours j’ai la solution de faire une police limité de type numérique + 3 caractères
Exemple 101,1 Mhz (pilotage d’un module TEA 5767). La table résultante sera de faible en taille.
Matériel
J’ai à dispo 3 modules 2 SPI et 1 I2C
Pour l’instant, pilotage uniquement du module SPI, on verra plus tard pour l’I2C
Maquette
J’ai une maquette que je pilote avec un ICD3, mais je vais en refaire une nouvelle car l’ancienne commence à être fatiguée a force de faire des motifs, de plus l’alimentation du module écran est en 3.3v.
Le PIC
Pour le pic18f, à voir j’ai déjà piloté un 18f4520 donc cela devrait être possible de le refaire.
Le problème c’est le prix qui est nettement plus chère qu’un 16f876 et mon est objectif est de sortir une carte pour moins de 10€
Globalement je pense que vous avez raison sur le mauvais choix d'un 16f876, mais je l'ai a dispo et c'est un peu un challenge pour moi de le faire tourner avec cette ecran. De plus l'interet de ce passage en 16f est une bonne solution pour comprendre les procedures du SSD1306
Merci vos retours d’info, je reviendrais pour vous tenir au courant de l’avancement du projet.
Il me reste la table à constituer et quelques routines pour les afficher
Cordialement
Francois
Merci pour vos retours extra rapides
Pour compléter mon post précèdent, je dois avouer que j’avais eu l’idée au départ de faire une bibliothèque générale pour le pilotage des modules SSD1306 qui englobe les fonctions texte et les fonctions graphiques à l’identique d’un banal 2x16 lignes.
Pas assez de place sur mon 16f876 et encore car en ajoutant un eprom cela deviendrait possible mais peut-être pas très rapide
Pour l’instant j’arrive à piloter la fonction texte avec la fonte 5x8 sans trop de problème en mode SPI
J’ai commencé à écrire ma propre font en 16x8, car je n’ai pas trouvé sur le net de bibliothèque prête à l’emploi.
Si vous avez des liens ou une méthode pour faire des polices sur mesure je suis preneur
Pour mon projet en cours j’ai la solution de faire une police limité de type numérique + 3 caractères
Exemple 101,1 Mhz (pilotage d’un module TEA 5767). La table résultante sera de faible en taille.
Matériel
J’ai à dispo 3 modules 2 SPI et 1 I2C
Pour l’instant, pilotage uniquement du module SPI, on verra plus tard pour l’I2C
Maquette
J’ai une maquette que je pilote avec un ICD3, mais je vais en refaire une nouvelle car l’ancienne commence à être fatiguée a force de faire des motifs, de plus l’alimentation du module écran est en 3.3v.
Le PIC
Pour le pic18f, à voir j’ai déjà piloté un 18f4520 donc cela devrait être possible de le refaire.
Le problème c’est le prix qui est nettement plus chère qu’un 16f876 et mon est objectif est de sortir une carte pour moins de 10€
Globalement je pense que vous avez raison sur le mauvais choix d'un 16f876, mais je l'ai a dispo et c'est un peu un challenge pour moi de le faire tourner avec cette ecran. De plus l'interet de ce passage en 16f est une bonne solution pour comprendre les procedures du SSD1306
Merci vos retours d’info, je reviendrais pour vous tenir au courant de l’avancement du projet.
Il me reste la table à constituer et quelques routines pour les afficher
Cordialement
Francois
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Bonsoir,
Faire des fonts c'est très long, tu peux en trouver chez Arduino, je n'ai pas encore décortiquer tout ce que j'ai téléchargé, de plus c'est en langage Arduino, qui ressemble bizarrement à MicroC téléchargement ICI
Attention, sur Arduino la lecture de ton écran se fait en mode 1, pas en mode 2
Quand au Pic16F876, il est suffisamment rapide pour ton écran, pas besoin d'une bête de course pour se genre d'écran
Pour faire une station de ratio ça suffit amplement, j'ai regardé rapidement la datasheet du TEA 5767 il fonctionne en I²C
Quand au logiciel pour créer les fonts tu peux utiliser FastLCD, le seule problème c'est qu'il faut savoir s'en servir.
Voici un lien ou tu peux le télécharger ICI il est protégé par un mot de passe qui est : 320volt.com
J'ai commencé un programme pour Pc pour ce genre d'écran mais j'ai pas fini, il fonctionne bien mais reste plein de truc à finir.
A+
francois77 a écrit :Source du message Si vous avez des liens ou une méthode pour faire des polices sur mesure je suis preneur
Faire des fonts c'est très long, tu peux en trouver chez Arduino, je n'ai pas encore décortiquer tout ce que j'ai téléchargé, de plus c'est en langage Arduino, qui ressemble bizarrement à MicroC téléchargement ICI
Attention, sur Arduino la lecture de ton écran se fait en mode 1, pas en mode 2
Quand au Pic16F876, il est suffisamment rapide pour ton écran, pas besoin d'une bête de course pour se genre d'écran
Pour faire une station de ratio ça suffit amplement, j'ai regardé rapidement la datasheet du TEA 5767 il fonctionne en I²C
Quand au logiciel pour créer les fonts tu peux utiliser FastLCD, le seule problème c'est qu'il faut savoir s'en servir.
Voici un lien ou tu peux le télécharger ICI il est protégé par un mot de passe qui est : 320volt.com
J'ai commencé un programme pour Pc pour ce genre d'écran mais j'ai pas fini, il fonctionne bien mais reste plein de truc à finir.
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
- Claudius
Passioné- Messages : 260
- Âge : 69
- Enregistré en : septembre 2015
- Localisation : ELANCOURT (78 - YVELINES)
- Contact :
Bonjour,
Pour la simple raison qu'il n'y a pas de langage Arduino (dixit) ... c'est du Langage C et/ou du C++ que la famille Arduino et consort supportent de base
Pour infos, tous mes projets sous Arduino & ESP32 sont développés, testés, instrumentés et simulés sous un bon vieux Linux en C et C++
(gain de temps de centaines d'heures de travail en évitant de flasher à tout bout de champ ;-)
NB: La simulation d'un périphérique se faisant en s'aidant d'une instrumentation de son protocole de communication (i.e. I2C, SPI, UART, etc.) en s'assurant point par point que sa datasheet est parfaitement respectée
Temps-x a écrit:
... de plus c'est en langage Arduino, qui ressemble bizarrement à MicroC téléchargement ici...
Pour la simple raison qu'il n'y a pas de langage Arduino (dixit) ... c'est du Langage C et/ou du C++ que la famille Arduino et consort supportent de base
Pour infos, tous mes projets sous Arduino & ESP32 sont développés, testés, instrumentés et simulés sous un bon vieux Linux en C et C++
(gain de temps de centaines d'heures de travail en évitant de flasher à tout bout de champ ;-)
NB: La simulation d'un périphérique se faisant en s'aidant d'une instrumentation de son protocole de communication (i.e. I2C, SPI, UART, etc.) en s'assurant point par point que sa datasheet est parfaitement respectée
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Bonsoir Claudius, et tout le forum,
Mon flaire légendaire ne s'était pas trompée,
Sans trop de discours, je dirais chacun son truc...,
A+
Claudius a écrit :Source du message c'est du Langage C et/ou du C++ que la famille Arduino et consort supportent de base
Mon flaire légendaire ne s'était pas trompée,
Claudius a écrit :Source du message Pour infos, tous mes projets sous Arduino & ESP32 sont développés, testés, instrumentés et simulés sous un bon vieux Linux en C et C++ (gain de temps de centaines d'heures de travail en évitant de flasher à tout bout de champ ;-)
Sans trop de discours, je dirais chacun son truc...,
A+
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Bonjour,
Pour le fun, j'ai essayé de comprendre le fonctionnement de la table fontmono 9 pt 7
Je n’arrive pas à faire la liaison entre les 2 tables. Pour moi on devrait trouver 1FFF en position 834 835
Si vous avez une idée je suis preneur
Pour mon appli je vais créer ma propre table lorsque j’aurais fait la maquette afin d’avoir un vrai visuel de l’afficheur
A+
Francois
Ps : dommage de ne pas pouvoir transmettre un fichier Excel
Pour le fun, j'ai essayé de comprendre le fonctionnement de la table fontmono 9 pt 7
Je n’arrive pas à faire la liaison entre les 2 tables. Pour moi on devrait trouver 1FFF en position 834 835
Si vous avez une idée je suis preneur
Pour mon appli je vais créer ma propre table lorsque j’aurais fait la maquette afin d’avoir un vrai visuel de l’afficheur
A+
Francois
Ps : dommage de ne pas pouvoir transmettre un fichier Excel
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 41 invités