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 en BASIC et PASCAL !

Modérateur : Gérard

Oled 128x64 piloté avec un PIC en Mikrobasic
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2617
Enregistré en : juillet 2016
Localisation : Terre

#11 Message par Temps-x » dim. 19 févr. 2023 18:03

Bonsoir pspic, et tout le forum,

Tu peux refaire la même chose en basic, ta juste à recopier ce qui est fait dans mon fichier code, et le traduire en basic.

Si tu ne comprends pas certaine ligne je peux les traduire on t’expliquant chaque détaille.

PS : content pour toi que ça fonction :wink:

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

Oled 128x64 piloté avec un PIC en Mikrobasic
pspic
Passioné
Passioné
Messages : 357
Âge : 77
Enregistré en : septembre 2017
Localisation : 68

#12 Message par pspic » lun. 20 févr. 2023 07:42

Tu peux refaire la même chose en basic, ta juste à recopier ce qui est fait dans mon fichier code, et le traduire en basic.
Si tu ne comprends pas certaine ligne je peux les traduire on t’expliquant chaque détaille.

Bonjour Temps-x,
Ta proposition m'intéresse, car je n'ai pas encore réussi à afficher le moindre pixel en MikroBasic.
Merci pour ta persévérance.
J'ai testé ce code, mais ne fonctionne pas.

Code : Tout sélectionner

program TestOled2
'PIC 18F46K22, osc 16 MHz, librairie I2C
'SCL sur RC3 et SDA sur RC4
dim bc as byte

dim Soft_I2C_Scl  as sbit at RC3_bit
    Soft_I2C_Sda  as sbit at RC4_bit
    Soft_I2C_Scl_Direction as sbit at TRISC3_bit
    Soft_I2C_Sda_Direction as sbit at TRISC4_bit

 Const Tab1 as byte[23] = ($D5, $80,$A8,$3F,$D3,$00,$40,$8D,$14,$20,$00,$A1,$C8,$DA,$12,$81,$7F,$D9,$F1,$DB,$40,$A4,$A6)
'
'Main sub procedure
main:
 I2C1_Init(100000)           ' Init Soft I2C
 delay_ms(1000)
     I2C1_Start()
      I2C1_Wr($78)          'Adresse module
      I2C1_Wr($00)          'Mode commande
      I2C1_Wr($AE)          'Eteindre l'écran
      delay_ms(200)
       for bc = 0 to 22
        I2C1_Wr(Tab1[bc])
        delay_ms(10)
       next bc
      Delay_ms(20)
      I2C1_Wr($AF)       'Allumer l'écran
      I2C1_Wr($40)       'Envoi donnée
     I2C1_Stop()
end.


Pierre

Oled 128x64 piloté avec un PIC en Mikrobasic
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#13 Message par francois77 » lun. 20 févr. 2023 08:34

Bonjour,

il me semble qu'il manque des données dans ta séquence d'init

Config_Ecran:
da 0xAE,0xD5,0x80,0xA8,0x3F,0xD3,0x00,0x40
da 0x8D,0x14,0x20,0x00,0xA1,0xC8,0xDA,0x12
da 0x81,0x7F,0xD9,0xF1,0xDB,0x40,0xA4,0xA6
da 0xAF,0x21,0x00,0x7F,0x22,0x00,0x07,0x2E

A+
Francois

Oled 128x64 piloté avec un PIC en Mikrobasic
pspic
Passioné
Passioné
Messages : 357
Âge : 77
Enregistré en : septembre 2017
Localisation : 68

#14 Message par pspic » lun. 20 févr. 2023 10:24

Bonjour Francois,
J'ai rectifié la table d'init, mais sans résultat.

Oled 128x64 piloté avec un PIC en Mikrobasic
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#15 Message par satinas » lun. 20 févr. 2023 15:09

Bonjour,
Tu n'envoies pas de données après la commande 0x40. D'autre part je pense qu'il vaut mieux séparer init et affichage.
Essaie cela, il doit afficher quelque chose, peut être pas au bon endroit car les pages et colonnes ne sont pas sélectionnées.

Code : Tout sélectionner

 
main:
  I2C1_Init(100000)     ' Init Soft I2C
  delay_ms(1000)

  I2C1_Start()
  I2C1_Wr($78)          'Adresse module
  I2C1_Wr($00)          'Mode commande
  I2C1_Wr($AE)          'Eteindre l'écran
  delay_ms(200)
  for bc = 0 to 22
    I2C1_Wr(Tab1[bc])
    delay_ms(10)
  next bc
  Delay_ms(20)
  I2C1_Wr($AF)          'Allumer l'écran
  I2C1_Stop()
  delay_ms(1000)

  I2C1_Start()
  I2C1_Wr($78)          'Adresse module
  I2C1_Wr($40)          'Envoi données
  for bc = 0 to 7
    I2C1_Wr($ff)
  next bc
  I2C1_Stop()
 
  boucler ...
end

Oled 128x64 piloté avec un PIC en Mikrobasic
pspic
Passioné
Passioné
Messages : 357
Âge : 77
Enregistré en : septembre 2017
Localisation : 68

#16 Message par pspic » lun. 20 févr. 2023 18:58

Bonjour,
)
il me semble qu'il manque des données dans ta séquence d'init
Config_Ecran:
da 0xAE,0xD5,0x80,0xA8,0x3F,0xD3,0x00,0x40
da 0x8D,0x14,0x20,0x00,0xA1,0xC8,0xDA,0x12
da 0x81,0x7F,0xD9,0xF1,0xDB,0x40,0xA4,0xA6
da 0xAF,0x21,0x00,0x7F,0x22,0x00,0x07,0x2E

Dans l'exemple de Temps-x qui fonctionne je trouve cette séquence 0xD5
Const Tab1 as byte[23] =
($D5, $80, $A8, $3F, $D3, $00, $40,$8D,
$14, $20, $00, $A1, $C8, $DA, $12, $81,
$7F, $D9, $F1, $DB, $40, $A4, $A6)
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Oled 128x64 piloté avec un PIC en Mikrobasic
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#17 Message par francois77 » lun. 20 févr. 2023 19:45

bonsoir

Les explications des codes qui viens au départ de Temps-x

Ma config avec un 16f876 qui fonctionnent parfaitement et qui est la même que Temps-x (oled.asm)

Config_Ecran:
da 0xAE,0xD5,0x80,0xA8,0x3F,0xD3,0x00,0x40
da 0x8D,0x14,0x20,0x00,0xA1,0xC8,0xDA,0x12
da 0x81,0x7F,0xD9,0xF1,0xDB,0x40,0xA4,0xA6
da 0xAF,0x21,0x00,0x7F,0x22,0x00,0x07,0x2E

; Explication codage init
; 0xAE mettre hors fonction l'écran
; 0xD5 display clock div & param
; 0x80
; 0xA8 set multiplex & param
; 0x3
; 0xD3 set display offset & param
; 0x00
; 0x40 set start line
; 0x8D active l'élévation de tension pour l'écran
; 0x14 de 7 volts minimum à 15 vols maximum
; 0x20 sélection de la façon du balayage de l'écran méthode 1,
; 0x00 méthode 2, méthode 3 j'ai choisi la méthode 2
; 0xA1 segremap (A0/A1, flip horizontally)
; 0xC8 comscandec (C0/C8, flip vertically)
; 0xDA set compins () . . . . . (default)
; 0x12
; 0x81 contrast minimum 0x00 à un maximum de 0xFF
; 0x7F réglage au milieu de sa valeur
; 0xD9 set precharge
; 0xF1
; 0xDB set vcom detect
; 0x40
; 0xA4 display allon_resume . . (default)
; 0xA6 normal display . . . . . (default)
; 0xAF mettre l'écran en fonction
; 0x21 Dit à l'écran qu'on lui envoie les limites de colonnes
; 0x00 Valeur 1ere colonne
; 0x7F Valeur dernière colonne
; 0x22 Dit à l'écran qu'on lui envoie les limites des pages
; 0x00 Valeur de la première page
; 0x07 Valeur de la dernière page
; 0x2E désactive le défilement de l'écran

a+

Oled 128x64 piloté avec un PIC en Mikrobasic
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#18 Message par satinas » lun. 20 févr. 2023 20:13

Il n'a encore envoyé aucune data à l'afficheur, pourquoi voulez-vous qu'il affiche quoi que ce soit ?
Ou alors on n'a pas tout le programme.

Oled 128x64 piloté avec un PIC en Mikrobasic
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#19 Message par francois77 » lun. 20 févr. 2023 20:26

Bonsoir Satinas,

J'essaie de l'aider ....

Il faut dire que je ne comprends pas tout en C

A+

Oled 128x64 piloté avec un PIC en Mikrobasic
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#20 Message par paulfjujo » lun. 20 févr. 2023 20:32

francois77 a écrit :
Il faut dire que je ne comprends pas tout en C




exit because parce que c'est du basic !
Aide toi, le ciel ou FantasPic t'aidera


Retourner vers « Langage BASIC & PASCAL »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 41 invités