Interrupteur rotatif ???

dje8269

Senior Member
J'ai relu tout votre thread parlant des encodeurs rotatifs . ca a l'air d'etre une usine a gaz quand même ;

Mais pour le moment ma préoccupation c'est cet affichage en I2C . Car j'ai deja utilisé l'I2C pour communiquer entre deux picaxes, mais pas pour un afficheur ; Savez vous si je dois utiliser hi2Cout pour afficher un valeur ? ca me ferait gagner du temps entre midi et deux . ou pendant mes pauses lol .
 

BESQUEUT

Senior Member
J'ai relu tout votre thread parlant des encodeurs rotatifs . ca a l'air d'etre une usine a gaz quand même ;
Pas vraiment : avec un encodeur de bonne qualité, PieM a proposé des solutions vraiment très simples.
Mais si l'encodeur n'est pas terrible, que le Picaxe est un peu lent (ou occupé à faire autre chose) et qu'en plus on souhaite faire tourner le bouton assez vite, il faut optimiser un maximum et là plusieurs solutions sont possibles. D'où des discussions assez techniques, mais fort intéressantes.
Mais pour le moment ma préoccupation c'est cet affichage en I2C . Car j'ai deja utilisé l'I2C pour communiquer entre deux picaxes, mais pas pour un afficheur ; Savez vous si je dois utiliser hi2Cout pour afficher un valeur ? ca me ferait gagner du temps entre midi et deux . ou pendant mes pauses lol .
La difficulté avec ces afficheurs, c'est que c'est purement graphique. Donc il faut une "bibliothèque" de fonctions pour simplifier les commandes d'affichage. Sur un microcontrôleur compilé, ce n'est pas un problème. Sur un Picaxe, il vaut mieux optimiser un peu tout pour obtenir un affichage fluide. Donc :
- on utilise un Picaxe rapide (un 28 X2 em64 dans mon cas)
- on utilise les ports hardware chaque fois que possible ; donc oui hi2Cout est préférable.
- le code n'est pas forcément très concis, mais on opte pour ce qui sera le plus rapide à l’exécution.

Vous ne pourrez pas envoyer un texte directement à l'afficheur. Vous devrez appeler un GOSUB qui s'en chargera. Donc en fait, le hi2cOut sera dans le GOSUB et vous ne le verrez pas...
Un Picaxe ne permettant pas de passer une valeur à une subroutine, il faut trouver un moyen de lui passer ce qui doit être affiché :
- si c'est un nombre, une variable est désignée pour contenir la valeur à afficher,
- idem si c'est un seul caractère (ou si le programme principal peut envoyer les caractères un par un),
- si plusieurs caractères connus d'avance (une question par exemple) il faut le mettre dans l'EEprom,
- si plusieurs caractères variables, il faut utiliser un tampon mémoire.
 
Last edited:

dje8269

Senior Member
Bonjour à tous,

Bon, ben comme d'hab, je n'ai même pas réussis a le faire s'allumer cet écran !

Mon application reste ultra simple . faire un compte a rebours , donc affiché que des chiffres ( dans ce format mm:ss ) .
Quand le compte à rebours atteint zéro , Le picaxe met une sortie à 1 ce qui activeras un octo-coupleur pour utilisé la même sonnerie que dans le jeu ( très stressante d'ailleurs).

Les infos sur ces afficheurs sont rares . Par exemple la broche RST je dois la connecter ou non ? si oui au je suppose a la masse pour la désactivée ?

Pour le moment j'ai juste branché les broches SDA et SCL entre elles et alimenté le tout . voici le programme

Sur ce lien j'ai vu que l'adresse i2c de l'équipement était 0x3C ( la derniére ligne dans les technical details)


Code:
#PICAXE 08M2

'#################################################################################
'#######################    Compte à rebours pour Jeux    ########################	
'#################################################################################

'########################  Initialisation  ########################

setfreq m4

hi2csetup i2cmaster, 0x3C , i2cslow_4, i2cbyte 	' met le 08M2 en mode maitre


'##################################################################################
'					Programme Principal
'##################################################################################

do


hi2cout (b0)	' Envoi de b0 sur l'ecran OLED
pause 1000		
inc b0		


loop
J'ai trouvé ce post mais je n'ai pas tout compris, et j'ai l'impression que le problème n'as pas été résolu ; lien
 

MGU

Senior Member
Bonjour à tous,

Bon, ben comme d'hab, je n'ai même pas réussis a le faire s'allumer cet écran !

Mon application reste ultra simple . faire un compte a rebours , donc affiché que des chiffres ( dans ce format mm:ss ) .
Quand le compte à rebours atteint zéro , Le picaxe met une sortie à 1 ce qui activeras un octo-coupleur pour utilisé la même sonnerie que dans le jeu ( très stressante d'ailleurs).

Les infos sur ces afficheurs sont rares . Par exemple la broche RST je dois la connecter ou non ? si oui au je suppose a la masse pour la désactivée ?


hi2csetup i2cmaster, 0x3C , i2cslow_4, i2cbyte ' met le 08M2 en mode maitre


]
Bonjour,

A mon humble avis, la gestion de cet afficheur n'est pas aussi simple, il faut sans doute une belle routine bien joufflue.
Regarde la fiche technique de celui ci :http://www.gotronic.fr/art-afficheur-graphique-lcd-serie-led042-11953.htm

Mais si c'est pour faire un compte à rebours, tu te compliques la vie.

Voici en primeur une , non, deux nouvelles pages de mon site:

http://electromag1.wifeo.com/afficheurs-pilotes-par-tm1637.php
http://electromag1.wifeo.com/minuterie-base-picaxe-08m2-et-afficheur-tm1637.php

J'ai pas encore terminé, le code de la minuterie à joindre, et des corrections à faire, aujourd'hui.

MM

MM
 

BESQUEUT

Senior Member
La séquence d'initialisation est bien plus compliquée que ça ! Voir mon post #21. Oui c'est compliqué !
J'ai publié ce code.
J'ai aussi une bibliothèque avec de gros chiffres si nécessaire.
 

dje8269

Senior Member
Merci michel pour tes liens,

C'est exactement ce que je souhaiterais faire, Mais avec un écran graphique, en liaison i2c.

Je conçois qu'il faudra faire une routine pour afficher des chiffres sur une écran graphique. Mais avant de créer tout les chiffres etc .... il faudrait que j'arrive a allumé un pixel lol . Ce n'est pas encore le cas ;

Sur ta vidéo, tu utilise seulement un potar pour le réglages des chiffres ? ou un encodeur incrémental ? la réactivité à l'air génial !

Merci BESQUEUT , j'étais justement en train de cherché ce lien , car j'avais souvenir d'avoir lu quelques chose comme ca ! Je fonce le relire
 

dje8269

Senior Member
Bon j'ai étudié votre code , et j'ai environ 300 questions qui me brule les lèvres .

En voici quelques unes .

Pensez vous que je puisse l'adapté à un 08M2 ?

Effectivement l'initialisation est bien plus compliqué , mais ou avez vous trouvez toutes ces infos sur l'initialisation ? car y'a un paquet de paramètres . Comme je vais essayé d'adapter votre code , à mon projet et a mon matériels, je voudrais le comprendre . votre écran est plus grand donc je suppose que les chiffres ne vont pas le faire . ça me dérange pas de refaire toutes la bibliothèque de chiffres, mais je voudrais comprendre le fonctionnement a minima .


quand vous écrivez :

Code:
symbol OLED_Address=120
symbol OCM=0x80			' OLED_CommandMode
symbol ODM=0x40			' OLED_DataMode

symbol __=0x00
symbol o_=0x0F
symbol oo=0xFF
symbol _o=0xF0
A quoi correspond OCM, ODM, "_" et "o" ?

Bon allez j'essaie d'affiché un chiffre pour commencé ou d'allumer un pixel .

Un grand merci
 

BESQUEUT

Senior Member
A quoi correspond OCM, ODM, "_" et "o" ?
C'est comme le Port Salut : c'est écrit dessus !
OCM ' Oled Command Mode : passer l'afficheur en mode Commande
ODM ' Oled Data Mode : passer l'afficheur en mode Data (c'est à dire qu'on lui envoie des pixels à afficher)
Les constantes "__" "_°" "°_" et "°°"
sont conçues pour que visuellement on puisse avoir une idée de ce à quoi ressemble chaque caractère.
Voir les sous-programmes qui dessinent chaque chiffre.
 

BESQUEUT

Senior Member
Last edited:

dje8269

Senior Member
Je commence a mieux comprendre .

Pour l'adresse du slave a rentrer dans le setup du I2C . Je lis

The slave address is following the start condition for recognition use. For the SSD1306, the slave
address is either “b0111100” or “b0111101” by changing the SA0 to LOW or HIGH (D/C pin acts as
SA0).
Je dois donc marqué ? :

hI2Csetup i2cmaster, %00111100 ,i2cfast,I2cbyte
 

BESQUEUT

Senior Member
hi2csetup i2cmaster,%01111000,i2cfast_32,i2cbyte
Voir le code cité en #49
NB : la broche SA0 est fixée par construction pour cette platine. Vous n'avez pas le choix en fait...
 

dje8269

Senior Member
Point positif on continu d'avancé ! .

J'ai donc recopier et modofié le code sur le site anglais pour un 08M2

Code:
#PICAXE 08M2
setfreq M32
dirsC=%11111101                ;make C.1 input(C.1 is decay mode)
outpinsC=%00001000        ;disable the stepper driver and stay here
pause 1000

test:
hi2csetup i2cmaster,%01111000,i2cfast_32,i2cbyte

hi2cout 0x80,(0xAE,0x00,0x00,0xB0,0x20,0x00,0xD5,0x80,0xA8,0x1F,0xD3,0x00,0x8D, _
0x14,0xA1,0x00,0xC8,0xDA,0x02,0x81,0xCF,0xD9,0xF1,0xDB,0x30,0xA4,0xA6,0xAF)
#rem
hi2cout 0x80,(0xAE)         ;turn off display(RESET=OFF)
hi2cout 0x80,(0x00,0x00)    ;low column nibble(RESET=0),high column nibble(RESET=0)
hi2cout 0x80,(0xB0)         ;start page address(RESET=0)
hi2cout 0x80,(0x20,0x00)    ;memory address mode(RESET=02 [page])
hi2cout 0x80,(0xD5,0x80)    ;oscillator frequency and divider(RESET=80)00
hi2cout 0x80,(0xA8,0x1F)    ;mux ratio(RESET=3F [64 lines])
hi2cout 0x80,(0xD3,0x00)    ;display offset,COM vertical shift(RESET=0)
hi2cout 0x80,(0x8D,0x14)    ;enable charge pump(RESET=10 [OFF])
hi2cout 0x80,(0xA1,0x00)    ;segment remap(RESET=SEG0, COL0) 00 mirror image
hi2cout 0x80,(0xC8)         ;COM output scan(RESET=C0, C8 flips display)
hi2cout 0x80,(0xDA,0x02)    ;COM pins hardware config(RESET=12[alternate])
hi2cout 0x80,(0x81,0xCF)    ;contrast CF(RESET=7F)
hi2cout 0x80,(0xD9,0xF1)    ;pre-charge period F1(RESET=22)
hi2cout 0x80,(0xDB,0x30)    ;Vcom deselect(RESET=20)
hi2cout 0x80,(0xA4)         ;turn all on ignore RAM A5/RAM A4(RESET=A4)
hi2cout 0x80,(0xA6)         ;normal display A6/inverted A7(RESET=A6)
hi2cout 0x80,(0xAF)         ;turn on display
#endrem

hi2cout 0x40,( _
0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, _
0x03, 0x03, 0xFB, 0xFB, 0x03, 0x03, 0x03, 0x03, 0xFB, 0xFB, 0x03, 0x03, 0x03, 0x03, 0xFB, 0xFB, _
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, _
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, _
0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, _
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, _
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, _
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, _
0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, _
0x80, 0x80, 0xBF, 0xBF, 0xB0, 0xB0, 0xB0, 0xB0, 0xBF, 0xBF, 0x80, 0x80, 0x80, 0x80, 0xBF, 0xBF, _
0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, _
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, _
0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, _
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, _
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, _
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, _
0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, _
0x01, 0x01, 0xFD, 0xFD, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFD, 0xFD, _
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, _
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, _
0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, _
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, _
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, _
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, _
0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, _
0xC0, 0xC0, 0xDF, 0xDF, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xC0, 0xC0, 0xC0, 0xC0, 0xDF, 0xDF, _
0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, _
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, _
0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, _
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, _
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, _
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF)
Et bien au moins l'écran affiche quelques choses : plein de points sans cohérences les uns entre les autres . Donc mon afficheur fonctionne c'est déjà pas mal .

Ce que je pensais avoir compris ne fonctionne pas ;

Dans le code du dessus ; on as 16 colonnes et 32 lignes . Les 32 lignes correspondent certainement a mes 32 lignes sur l'écran . Les 16 colonnes, sont des chiffres de 8bit ( %00000000 jusqu'à %11111111) je pensais que chaque bit correspondais à l'état d'un pixel . Donc je me suis permis d'écrire :

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, _
Sur la première ligne, en pensant que tout les pixels allaient pouvoir s'allumer sur la première ligne . et ben non ca n'a rien changer ???!!!
 

BESQUEUT

Senior Member
Chaque valeur correspond à 2 pixels et non 8...
Mais peu importe : il y a un problème dans la séquence d'initialisation.
Il faut peut-être ajouter une petite pause entre l'initialisation et le début d'envoi des données...
Avez-vous essayé le code en #1 ?
 
Last edited:

dje8269

Senior Member
Avez-vous essayé le code en #1 ?
Je suis justement en train de travailler dessus, car il est plus clair . En effet avec ce code , j'obtiens de jolies lignes horizontales .

J'arrive pour la première fois en changeant des valeurs a changer des pixels ...... YES!!!!

PS: j'ai mis un 20M2 plutôt que mon 08M2 pour la phase d'apprentissage .

J'ai donc maintenant compris le système de pixel, a force de test .

Chaque valeur correspond à 2 pixels et non 8...
???!!! d'après mes test ce n'est pas exact . en effet quand j'écris "0xFF" celui ci m'allume 8 pixels , quand j'écris "0x00" aucun et quand j'écris "0x55" un pixel sur 2 est allumé ( 4 allumés et 4 eteins) .

Par contre , l'afficheur fonctionne en colonne, et non en ligne comme je le pensais au départ .

Code:
hi2cout 0x40,( _
[COLOR="#FF0000"]0xFF, 0xFF, 0xFF[/COLOR], 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, _
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, _
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, _
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, _
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, _
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, _
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, _
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
Chaque chiffre correspond à 1 colonne de huit pixel de haut ( ligne verticale comme i ) . Dans l'exemple ci dessus , j'ai donc affiché 3 barres verticales de 8 pixel de haut . grâce au FF qui corresponde à %11111111 .

Le problème c'est que cela s'affiche en bas et a gauche de l'écran ( toujours dans l'exemple du haut) . je n'utilise donc que 1 quart de l'écran en hauteur .
 

BESQUEUT

Senior Member
2 pixels par octet : d'après mes test ce n'est pas exact . en effet quand j'écris "0xFF" celui ci m'allume 8 pixels , quand j'écris "0x00" aucun et quand j'écris "0x55" un pixel sur 2 est allumé ( 4 allumés et 4 eteins) .
Autant pour moi ! Ce comportement n'est valable que pour mon afficheur qui permet 16 nuances de gris par pixel, d'où les 4 bits par pixel)
Vous avez certainement raison, mais du coup il vous faudra une bibliothèque pour générer les caractères (10 chiffres et le : )
 

BESQUEUT

Senior Member
Il doit y avoir des commande pour dire à quel endroit on commence à écrire.
Sinon, je pense que quand vous arrivez au bout de la ligne, vous revenez au début des 8 lignes suivantes.
Essayez avec des boucles imbriquées pour envoyer des paquets de trames.
Par exemple, vous pouvez considérer qu'un caractère de 8x5 pixels, c'est 5 octets plus un caractère 0x00 pour séparer les caractères.
En envoyant 680 trames de ce genre, vous devriez couvrir l'écran.
 

dje8269

Senior Member
Vous avez certainement raison
Je n'irais pas jusque la quand même . lol

mais du coup il vous faudra une bibliothèque pour générer les caractères (10 chiffres et le : )
Ca c'est a ne pas en douter ! . Ce sera laborieux et long mais pas de problème je suis pas fenéant ! .

Par contre, je n'arrive pas a faire une colonne de 32 pixel de haut ?! elle ne fais que 8 pixel de haut . Auriez vous une idée du pourquoi du comment ?

dans le thread en anglais, le dernier post , je crois comprendre que la personne baisse les bras ? et repasse en communication serie non ???
 

BESQUEUT

Senior Member
dans le thread en anglais, le dernier post , je crois comprendre que la personne baisse les bras ? et repasse en communication serie non ???
Non, au contraire : il considère que ce code est tellement bien qu'il est inutile de s'acharner à essayer de faire mieux...
NB : le sujet du thread était d'améliorer un code fonctionnel mais pas optimal.
voir #56
L'afficheur fonctionne en lignes du 8 pixels de haut. C'est pratique pour écrire les caractères successifs. Tous les n pixels vous avez écrit un caractère, puis vous mettez quelques 0x00 pour espacer, puis le caractère suivant, etc..
Suivant l'initialisation, ça peut revenir tout seul à la ligne quand on atteint le bord droit.
Voir chapitre 10 : il y a différentes façons d'adresser les pixels (Set Memory Addressing Mode) en fonction de ce que vous voulez faire : texte petits, gros, graphiques...
En tout cas, il y a une commande pour choisir la colonne (Set Column Address) et une pour choisir la ligne (Set Display Start Line). Donc vous devriez pouvoir commencer à écrire où vous voulez.
 
Last edited:

dje8269

Senior Member
Non, au contraire : il considère que ce code est tellement bien qu'il est inutile de s'acharner à essayer de faire mieux...
Rohhh, mon anglais est vraiment catastrophique !!!!

Enfin ca fonctionne !!! avec le tout dernier code . j'ai effectué un reset hard mise a la masse de la broche reset sur l'afficheur . et une jolie figure c'est affiché , j'ai traficoter le tout pour essayer et c'est parfait ;

J'ai maintenant un écran remplis. et je comprends la façon dont on affiche les pixels .

Mais je ne sais pas comment faire pour faire commencer mes pixels a un certains endroits! plutôt qu'au début . Car si je fabrique dans une routine les chiffres , il faudrat bien que je les affiches a partir d'un certains endroit

Ce soir je met quelques photos
 

BESQUEUT

Senior Member
Rohhh, mon anglais est vraiment catastrophique !!!!
J'ai aussi eu quelque mal à comprendre les expressions
to beat this dead horse
et
Just to REALLY beat this to death
Heureusement linguee est d'un grand secours...

Enfin ca fonctionne !!! avec le tout dernier code . j'ai effectué un reset hard mise a la masse de la broche reset sur l'afficheur . et une jolie figure c'est affiché , j'ai traficoter le tout pour essayer et c'est parfait ;
Alors ça, ça fait vraiment plaisir :) !
Sur le mien, c'est en rajoutant une petite pause entre l'initialisation et le début d'envoi des données que j'ai pu avoir un fonctionnement fiable à chaque mise sous tension.
On pourrait aussi raccorder le reset au Picaxe pour pouvoir faire ça par programme avec un petit délai après la mise sous tension et un autre avant d'envoyer la séquence d'initialisation.
Je trouve qu'un OLED est vraiment plus lisible même en plein jour qu'un LCD, et même que des afficheurs LEDs à segments. Mais bon, c'est affaire de goûts et de couleurs...
J'ai maintenant un écran remplis. et je comprends la façon dont on affiche les pixels .

Mais je ne sais pas comment faire pour faire commencer mes pixels a un certains endroits! plutôt qu'au début . Car si je fabrique dans une routine les chiffres , il faudrat bien que je les affiches a partir d'un certains endroit
Ca se joue au niveau des commandes du chapitre 10. Mais d'abord, il faut décider de quelle façon adresser les pixels avec la commande
"Set Memory Addressing" (voir ligne hi2cout 0x80,(0x20,0x00) ;memory address mode(RESET=02 [page]))
Avec cette séquence d'initialisation, on est en mode 00 c'est à dire "Horizontal addressing mode"
Mais ce n'est pas forcément la méthode la plus appropriée en fonction de vos besoins.
Vous pourriez peut-être tester les 2 autres modes pour être en mesure de choisir ce qui vous convient le mieux.
Ce soir je met quelques photos
Pensez à publier le code et donnez la taille de la matrice de pixels envisagée pour chaque chiffre.
 
Last edited:

dje8269

Senior Member
to beat this dead horse
Oui , on pourrait traduire cela comme quelques chose : battre un cheval mort lol .

Sur le mien, c'est en rajoutant une petite pause entre l'initialisation et le début d'envoi des données que j'ai pu avoir un fonctionnement fiable à chaque mise sous tension.
J'ai aussi quelques petits bugs a la mise sous tension . des fois plein de petit point s'affichent a l'écran plutôt que la figure attendu
Set Memory Addressing" (voir ligne hi2cout 0x80,(0x20,0x00) ;memory address mode(RESET=02 [page]))
Avec cette séquence d'initialisation, on est en mode 00 c'est à dire "Horizontal addressing mode"
Mais ce n'est pas forcément la méthode la plus appropriée en fonction de vos besoins.
Je ne savais pas qu'il y avait plusieurs mode . j'ai vraiment de grosse lacune en anglais !!! car en effet ce mode est tres bien pour ecrire du texte sur 4 lignes mais dans mon cas ca va me gener pour afficher mes 4 gros chiffres .

Pensez à publier le code et donnez la taille de la matrice de pixels envisagée pour chaque chiffre.
Oui oui bien sur , je vais même ouvrir un nouveau sujet pour le projet total de compte a rebours sur écran OLED , car la on est un peu hors sujet . ainsi on pourras lié l'écran et l'encodeur rotatif .

Je vais tester les autres modes de ce pas ;
 
Top