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 : Jérémy
Ecran I2C qui ne s'allume pas
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous,
Je rencontre à mon tour un problème avec un écran I²C .
Pour une question d’intégration, je souhaite changé mon écran actue ( Lien ), qui fonctionne en I²C avec une adresse imposée qui est 0x78 et qui fonctionne très bien, par celui ci (Lien) .
Sur mon nouvel écran l'adresse est sélectionnable soit 0x78 soit 0x7A .Elle est configurée au dos avec une Résistance de 0 ohms indiquant que son adresse est mise sur 0x78 .
Donc théoriquement la même adresse que mon ancien écran, tous deux fonctionne en I²C , tout deux sont driver par un SSD1306 si je me trompe pas !
Je me suis dis, normalement ça devrait roulé, car la configuration est la même , donc l'initialisation aussi etc ...
Et ben que nini , mon nouvel écran reste noir !!!!! même pas un petit sourcillement !
J'ai essayé de googler pour trouver des infos, j'ai trouvé le même écran avec différents codes qui ont des adresses différentes , j'ai donc essayé en modifiant l'adresse sans conviction.... choux blanc avec les adresses 0x3C et 0x20 , 0x7A et 0x78 .
J'ai essayé de passer l'I²C à 100Khz aussi.
Voici une partie seulement du code qui nous concerne :
Normalement apres la configuration quand j'active l'ecran je devrais voir un petit sursaut de l'écran, même si aucune donnée est envoyé, hors j'ai l'impression qu'il reste éteint ......
Auriez vous une idée pour identifier le problème ?
J'ai pensé à un soucis d'alimentation , j'alimente le tout en 4.5V pareil .
Merci de m'avoir lu
Je rencontre à mon tour un problème avec un écran I²C .
Pour une question d’intégration, je souhaite changé mon écran actue ( Lien ), qui fonctionne en I²C avec une adresse imposée qui est 0x78 et qui fonctionne très bien, par celui ci (Lien) .
Sur mon nouvel écran l'adresse est sélectionnable soit 0x78 soit 0x7A .Elle est configurée au dos avec une Résistance de 0 ohms indiquant que son adresse est mise sur 0x78 .
Donc théoriquement la même adresse que mon ancien écran, tous deux fonctionne en I²C , tout deux sont driver par un SSD1306 si je me trompe pas !
Je me suis dis, normalement ça devrait roulé, car la configuration est la même , donc l'initialisation aussi etc ...
Et ben que nini , mon nouvel écran reste noir !!!!! même pas un petit sourcillement !
J'ai essayé de googler pour trouver des infos, j'ai trouvé le même écran avec différents codes qui ont des adresses différentes , j'ai donc essayé en modifiant l'adresse sans conviction.... choux blanc avec les adresses 0x3C et 0x20 , 0x7A et 0x78 .
J'ai essayé de passer l'I²C à 100Khz aussi.
Voici une partie seulement du code qui nous concerne :
Normalement apres la configuration quand j'active l'ecran je devrais voir un petit sursaut de l'écran, même si aucune donnée est envoyé, hors j'ai l'impression qu'il reste éteint ......
Code : Tout sélectionner
#define adresse_W 0x78
#define adresse_R 0x79
#define Command 0x00
#define Data 0x40
-
-
//--------------------- Initialisation I2C ------------------
I2C1_Init(400000);
-
-
OLED_Conf();
OLED_Init();
//#####################################################################################
//########################## BOUCLE INFINIE ##################################
//#####################################################################################
while(1){
bla bla
}
//#############################################################################################
//############################ PROGRAMME SECONDAIRE ##################################
//#############################################################################################
//-------------------------------------------------------------------------------------------------
void OLED_Conf(){ // Configuration de l'écran
I2C1_Start();
I2C1_Wr (adresse_W); // Envoi l'adresse de l'esclave 0b01111000 + Write
I2C1_Wr (Command); // Command ou Data
I2C1_Wr (DISPLAYOFF); // écran éteint
I2C1_Stop();
delay_ms(10);
I2C1_Start();
I2C1_Wr (adresse_W); // Envoi l'adresse 0b01111000 + Write
I2C1_Wr (Command); // Command
I2C1_Wr(ADRESSAGE_MODE); // 0x20 Choix du Mode d'adressage Hori/vert/page
I2C1_Wr(0x00); // mode horizontal
I2C1_Stop();
delay_ms(10);
I2C1_Start();
I2C1_Wr (adresse_W); // Envoi l'adresse 0b01111000 + Write
I2C1_Wr (Command); // Command
I2C1_Wr(SSD1308_SETCONTRAST); // réglage du contraste
I2C1_Wr(0xf0); // Valeur Contraste
I2C1_Stop();
delay_ms(10);
Efface_ecran();
delay_ms(10);
I2C1_Start();
I2C1_Wr (adresse_W); // Envoi l'adresse de l'esclave 0b01111000 + Write
I2C1_Wr (Command); // Command
I2C1_Wr (DISPLAYON); // allume l'écran
I2C1_Stop();
delay_ms(10);
}
//-------------------------------------------------------------------------------------------------
// Cette fonction remplis l'écran de noir
// J'affecte la zone active à l'écran entier, et j'envoie des 0x00
void Efface_ecran(){
unsigned int LOC_Compteur=0; // Variable locale
I2C1_Start();
I2C1_Wr (adresse_W); // Envoi l'adresse 0b01111000 + Write
I2C1_Wr (Command); // Command ou Data
I2C1_Wr(ADRESS_COLONE); // Dit à l’écran qu'on lui envoie les limites de colonnes
I2C1_Wr(0); // Valeur 1ere colonne
I2C1_Wr(127); // Valeur dernière colonne
I2C1_Wr(ADRESS_PAGE); // Dit à l’écran qu'on lui envoie les limites des pages
I2C1_Wr(0); // Valeur de la première page
I2C1_Wr(7); // Valeur de la dernière page
I2C1_Stop();
I2C1_Start();
I2C1_Wr (adresse_W); // Envoi l'adresse de l'esclave 0b01111000 + Write
I2C1_Wr (Data); // Data
for (LOC_Compteur=0;LOC_Compteur<1024;LOC_Compteur++){ // Je remplis l'écran de noir
I2C1_Wr (0x00);
}
I2C1_Stop();
//-------------------------------------------------------------------------------------------------
// Cette fonction remplis l'écran de blanc
// J'affecte la zone active à l'écran entier, et j'envoie des 0x00
void Ecran_Blanc(){
unsigned int LOC_Compteur=0; // Variable locale
I2C1_Start();
I2C1_Wr (adresse_W); // Envoi l'adresse 0b01111000 + Write
I2C1_Wr (Command); // Command ou Data
I2C1_Wr(ADRESS_COLONE); // Dit à l’écran qu'on lui envoie les limites de colonnes
I2C1_Wr(0); // Valeur 1ere colonne
I2C1_Wr(127); // Valeur dernière colonne
I2C1_Wr(ADRESS_PAGE); // Dit à l’écran qu'on lui envoie les limites des pages
I2C1_Wr(0); // Valeur de la première page
I2C1_Wr(7); // Valeur de la dernière page
I2C1_Stop();
I2C1_Start();
I2C1_Wr (adresse_W); // Envoi l'adresse de l'esclave 0b01111000 + Write
I2C1_Wr (Data); // Data
for (LOC_Compteur=0;LOC_Compteur<324;LOC_Compteur++){ // Je remplis l'écran de noir
I2C1_Wr (0x255);
}
I2C1_Stop();
}
}
Auriez vous une idée pour identifier le problème ?
J'ai pensé à un soucis d'alimentation , j'alimente le tout en 4.5V pareil .
Merci de m'avoir lu
Ecran I2C qui ne s'allume pas
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour Jeremy et à tous,
il me semble qu'un ecran OLED s'alimente en 3,3V
As tu verifié si l'ecran repond bien à l'adresse 0x78
il me semble qu'un ecran OLED s'alimente en 3,3V
As tu verifié si l'ecran repond bien à l'adresse 0x78
Ecran I2C qui ne s'allume pas
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Hello Paul ,
Effectivement et en théorie il s'alimente en 3.3V min ( d'aprés la ds). cependant j'ai testé de l'alimenter directement en 3V par pile ! ça fonctionne bien. la durée de vie risque d'être sensiblement diminuée , mais pas critique dans mon application.
Je n'avais pas la place de mettre un Boost !
J'ai effectivement regardé ton post sur la détection d'adresse I²C, mais je travaille sur site et j'ai pas d'écran dispo ( sauf celuique je cherche a faire fonctionner ). J'ai tout de même regarder ton Code pour essayer de le comprendre, mais je me suis perdu dans ta méthode pour traiter la collision.
Ceci dit l'écran focntionne ! en effet je suis allez voir mon tuto , pour rechercher des indications, et j'ai remarqué la configuration de la chargePump ! On activant celle-ci l'écran c'est enfin allumé.
En lisant la DS, j'avoue de pas avoir trop compris le fonctionnement de cette dernière : Ds en page 62
Effectivement et en théorie il s'alimente en 3.3V min ( d'aprés la ds). cependant j'ai testé de l'alimenter directement en 3V par pile ! ça fonctionne bien. la durée de vie risque d'être sensiblement diminuée , mais pas critique dans mon application.
Je n'avais pas la place de mettre un Boost !
J'ai effectivement regardé ton post sur la détection d'adresse I²C, mais je travaille sur site et j'ai pas d'écran dispo ( sauf celuique je cherche a faire fonctionner ). J'ai tout de même regarder ton Code pour essayer de le comprendre, mais je me suis perdu dans ta méthode pour traiter la collision.
Ceci dit l'écran focntionne ! en effet je suis allez voir mon tuto , pour rechercher des indications, et j'ai remarqué la configuration de la chargePump ! On activant celle-ci l'écran c'est enfin allumé.
En lisant la DS, j'avoue de pas avoir trop compris le fonctionnement de cette dernière : Ds en page 62
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 40 invités