[Programmation] Ecran OLED I2C obsuce
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Ecran OLED I2C obsuce



  1. #1
    Herissan

    Ecran OLED I2C obsuce


    ------

    Bonjour je viens vous demandez de l'aide à propos d'un ecran qui ne repond à aucunte des adresses suivante :0x78, 0x7A, 0x3C et 0x3D.Je le commande avec un 18f4550 le code à l'aire correcte etant donné qu'il marche sur proteus je suppose que c'est un probleme d'adressage il y a bien des pull up (de 10k) sur Rb0 et RB1 j'enverrai le code plus tard.Voici l'afficheur:

    -----

  2. #2
    Herissan

    Re : Ecran OLED I2C obsuce


  3. #3
    paulfjujo

    Re : Ecran OLED I2C obsuce

    bonjour,

    tu programmes avec quoi ?
    ASm
    MikroC ?
    XC8 ?


    attention à l'usage adresse device 7bits ,
    ou adresse complete 7bits + bit RW sur 8 bits

    un fonction recherche d'adresse permettrait déja de verifier si ce OLED est vu par l'I2C...
    Les R de rappel sur le bus I2C peuvent etre diminuée à 4,7K , voir 2,7K

  4. #4
    Herissan

    Re : Ecran OLED I2C obsuce

    Re je code sous mikroc pro voici des photo de l'écran:
    IMG_20220206_082608.jpg
    IMG_20220206_082629.jpg
    Sinon j'ai essayé de "scanner" le port I2C avec ce code:
    Code:
    int i=0;
    signed char _status=0;
    signed char WriteI2C( unsigned char data_out );
    
    void main() {
      OSCCON = 0b11111111;
         CMCON = 7;
         TRISA = 0b10000000;
         TRISB = 0b00000000;
         TRISC = 0b00000000;
         TRISD = 0b00000000;
         TRISE = 0b1000;
         PORTA = 0b00000000;
         PORTB = 0b00000000;
         PORTC = 0b00000000;
         PORTD = 0b00000000;
         PORTE = 0b0000;
       I2C1_Init(100000); // Init I2C Bus @ 100Khz
       UART1_init(9600);  // Setup serial at 9600bps
       Delay_ms(100);     // Wait for UART module to stabilize
    
       while(1){
         char  buffer[15];
         UART1_Write(10);
         UART1_Write(13);
         UART1_Write_Text("Start");
         UART1_Write(10);
         UART1_Write(13);
         for ( i=1; i<=127; i++)
         {
             i2c1_start();
             _status = WriteI2C(i<<1);
             I2C1_stop();
             if (_status==0)
             {
               sprinti(buffer,"Device at:%X\n", i);
               UART1_Write_Text(buffer);
               RA0_bit = 1;
               Delay_ms(1000);
               RA0_bit = 1;
             }
    
         }
         sprinti(buffer,"Complete.\n", i);
         UART1_Write_Text(buffer);
         sprinti(buffer,"Pause 5 Sec.\n", i);
         UART1_Write_Text(buffer);
         Delay_ms(10);
      }
    
    }
    mais ça n'a rien donnée
    Sinon j'ai suivie ce tuto:
    https://simple-circuit.com/mikroc-ss...crocontroller/
    Le uC s'arrète à la ligne: SSD1306_Init(SSD1306_SWITCHCAP VCC, SSD1306_I2C_ADDRESS)
    je pense que cela signifie que rien ne répond
    Dernière modification par gienas ; 06/02/2022 à 17h53. Motif: Suppression du doublon d’image inutile

  5. A voir en vidéo sur Futura
  6. #5
    paulfjujo

    Re : Ecran OLED I2C obsuce

    Pourquoi utiliser
    signed char WriteI2C( unsigned char data_out );

    et pas la fonction de la lib MikroC I2C Hardware
    exemple :
    Etat=I2C1_Wr(SSD1306_I2C_ADDRE SS)

    avec I2C Adresse complete sur 8 bits !!!

    exemple avec 18F26K42 et Oled I2C

    Code:
    char check_device(unsigned char dev_address)
    {
    static char Etat;
    Etat=0;
    I2C1_Start();
    if(I2C1_Wr(dev_address)!=0 )
     {
      UART1_Write('.'); //_CText(" is not found\r\n");
     }
     else
     {
      strConstRamCpy(txt,"\r\n Device at adresse : ");
      k=strlen(txt);
      ByteToStr(dev_address,CRam1);
      strcat(txt+k,CRam1);
      UART1_Write_Text(txt);
      UART1_Write_CText(" found OK\r\n");
      Etat=1;
      }
     I2C1_Stop();
     return (Etat);
    }
    
    ==========================
    
    dans le main programme
    
    ..... init ........... etc .............
     
      CPrint(" Init I2C1 Hardware RC3=SCL  RC4=SDA \r\n");
      I2C1_Init(100000);  // initialize I2C communication with clock frequency of 400kHz
      c1=0;
      CPrint(" Recherche OLED sur le Bus I2C \r\n");
      k=0;
      for(i=64;i<254;i=i+2) 
      {
         c1= check_device(i) ;
         if (c1>0) k++ ;
       }
      CRLF1()    ;
      if (k==0)
      {
        CPrint(" No device found  on I2C1 bus !!!!!!!!! \r\n");
        Delay_ms(3000);
        _asm reset;
      }
      Led_On_RA4=ON;
      }
     
      CPrint(" Init OLED SSD1306 LCD 128x64\r\n");
      I2C_Addr=SSD1306_I2C_ADDRESS;
      vccstate= SSD1306_SWITCHCAPVCC ; //SSD1306_EXTERNALVCC=0x01 ou   SSD1306_SWITCHCAPVCC = 0x02
      OLED_Init();
      OLED_CLS();
      CPrint(" 2 images 128x32 : Marylin Monroe et MikroE \r\n");
      SSD1306_ClearDisplay();
      SSD1306_DrawBMP(0,0, MikroE,127,32) ;



    resultat :

    Recherche OLED sur le Bus I2C
    .............................. ..............
    Device at adresse : 120 found OK
    Dernière modification par paulfjujo ; 06/02/2022 à 17h51.

  7. #6
    Herissan

    Re : Ecran OLED I2C obsuce

    Code:
    int i=0;
    signed char _status=0;
    
    void main() {
      OSCCON = 0b11111111;
         CMCON = 7;
         TRISA = 0b10000000;
         TRISB = 0b00000000;
         TRISC = 0b00000000;
         TRISD = 0b00000000;
         TRISE = 0b1000;
         PORTA = 0b00000000;
         PORTB = 0b00000000;
         PORTC = 0b00000000;
         PORTD = 0b00000000;
         PORTE = 0b0000;
       I2C1_Init(100000); // Init I2C Bus @ 100Khz
       UART1_init(9600);  // Setup serial at 9600bps
       Delay_ms(100);     // Wait for UART module to stabilize
    
       while(1){
         char  buffer[15];
         UART1_Write(10);
         UART1_Write(13);
         UART1_Write_Text("Start");
         UART1_Write(10);
         UART1_Write(13);
         for ( i=1; i<=254; i=i+2)
         {
             I2C1_Start();
             _status = I2C1_Wr(i);
    
             if (_status==0)
             {
               sprinti(buffer,"Device at:%X\n", i);
               UART1_Write_Text(buffer);
               RA0_bit = 1;
             }
              I2C1_Stop();
         }
    
      }
    
    }
    j'ai modifié et simplifié pour mon pic 18F4550 et ça ne marche pas sur proteus ni dans des conditions réels

  8. #7
    paulfjujo

    Re : Ecran OLED I2C obsuce

    à verifier si l'USB n'interfere pas avec RC3 ou RC4 ...

  9. #8
    Herissan

    Re : Ecran OLED I2C obsuce

    Non rien à signalé mais pourquoi ça poserais problème vu que je n'utilise pas ces broches ?

  10. #9
    Murayama

    Re : Ecran OLED I2C obsuce

    Bonjour!

    Solution radicale: quand vous envoyez un byte par I2C, ça donne quoi à l'oscillo?

    Sinon: quel est le sens de "obsuce"? Obscur? Vous voulez dire qu'il ne s'allume pas
    du tout? Sinon, je ne vois pas, sauf à faire commencer le mot par un z.

    Pascal
    Dernière modification par Murayama ; 07/02/2022 à 00h01.

  11. #10
    paulfjujo

    Re : Ecran OLED I2C obsuce

    Citation Envoyé par Herissan Voir le message
    Non rien à signalé mais pourquoi ça poserais problème vu que je n'utilise pas ces broches ?
    Exact, autant pour moi, mélange avec PIC sans USB ...!

    par contre à verifier ceci :
    TRISB = 0b00000000;
    The user must configure these pins as inputs by setting
    the associated TRIS bits.


    j'ai testé plusieurs modeles d'OLED SSD1306 ou similaires,
    certains ont été tres recalcitrants au niveau de l'initialisation ...
    Dans tous les cas, si on ne decouvre pas le device sur le bus .. pas la peine d'insister plus loin
    Dernière modification par paulfjujo ; 07/02/2022 à 08h54.

  12. #11
    Herissan

    Re : Ecran OLED I2C obsuce

    Je n'ai pas d'oscilo est oui je voulais dire obscure dans le sens où je ne sais rien de lui ... Sinon j'essayerai en rentrant changer mes input mais pas sur que ça change grand chose

Discussions similaires

  1. [Energie] Pompe de charge pour écran OLED!
    Par dje8269 dans le forum Électronique
    Réponses: 6
    Dernier message: 06/09/2020, 04h03
  2. Réponses: 6
    Dernier message: 09/08/2020, 16h45
  3. écran OLED I2C et arduino nano
    Par guillaume55 dans le forum Électronique
    Réponses: 6
    Dernier message: 23/02/2015, 11h55
  4. Afficher valeur ecran LCD OLED
    Par bilet38 dans le forum Électronique
    Réponses: 15
    Dernier message: 10/06/2012, 19h47
  5. Arduino => OLED ecran serie
    Par elbart dans le forum Électronique
    Réponses: 4
    Dernier message: 01/04/2012, 11h18
Découvrez nos comparatifs produits sur l'informatique et les technologies.