Go Down

Topic: aide pour utiliser écran oled i2c 128x64 (Read 409 times) previous topic - next topic

ArduinoFree

Jun 14, 2018, 08:43 am Last Edit: Jun 14, 2018, 08:58 am by ArduinoFree
Bonjour

Sur ce site
http://cyaninfinite.com/tutorials/interfacing-0-96-oled-display-with-arduino-uno/



il est expliquer 2 montage pour utiliser l'écran oled i2c 128x64
https://fr.aliexpress.com/item/Free-shipping-Yellow-blue-double-color-128X64-OLED-LCD-LED-Display-Module-For-Arduino-0-96/32665937977.html?spm=a2g0s.9042311.0.0.lNXLxt






J'ai testé les 2 montages mais rien ne s'affiche

J'ai aussi modifié dans le code ADAFRUIT ceci
Code: [Select]
-----------------------------------------------------------------------*/
   #define SSD1306_128_64                //  ligne modifiée
//   #define SSD1306_128_32
//   #define SSD1306_96_16
/*=========================================================================*/


J'ai testé également ces 2 codes
Code: [Select]
/*

PROGRAMME BASIQUE POUR TESTER L'ÉCRAN OLED 128×64 I²C

RÉFÉRENCE AliExpress DE L'ÉCRAN
http://fr.aliexpress.com/item/1Pcs-Yellow-blue-double-color-128X64-OLED-LCD-LED-Display-Module-For-Arduino-0-96/32305641669.html

VERSION ORIGINALE DU PROGRAMME
http://www.projetsdiy.fr/ssd1306-mini-ecran-oled-i2c-128x64-arduino/

LIBRAIRIE Adafruit_SSD1306
https://github.com/adafruit/Adafruit_SSD1306.git

CONNEXIONS
GND    GND
VDD    +5V
SCK    pin A5
SDA    pin A4

MICROCONTRÔLEUR
Clone Arduino Nano

REMARQUES
Il faut éditer le fichier Adafruit_SSD1306.h de la manière suivante :
- À la ligne 69, décommenter le code `#define SSD1306_128_64`
- À la ligne 70, commenter le code `#define SSD1306_128_32`

Cet écran est séparé en deux zones verticales
- Une zone de 16 px de haut avec des pixels jaunes
- Une zone de 48 px de haut avec des pixels bleus
Les deux zones sont séparées d'une largeur d'environ
1 pixel qui apparaît donc toujours noire.

La communication I²C fonctionne sans les résistances de pull-up.
Cela dit, il est sans doute préférable d'ajouter deux résistances
de 4.7 kΩ entre SCK et VDD ainsi qu'entre SDA et VDD.


mai 2016, ouilogique.com

*/

#include <Wire.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display( OLED_RESET );

#if( SSD1306_LCDHEIGHT != 64 )
#error( "Height incorrect, please fix Adafruit_SSD1306.h!" );
#endif

void setup()
{
  // Initialise la communication I²C à l'adresse 0x3C.
  display.begin( SSD1306_SWITCHCAPVCC, 0x3C );
  display.clearDisplay();

  // Affiche des textes
  afficheTextes();
}

void loop()
{

}

void afficheTextes( void )
{
  display.setTextSize( 2 );
  display.setTextColor( WHITE );
  display.clearDisplay();

  display.setCursor( 4, 0 );
  display.println( "ouilogique" );

  display.setCursor( 4, 16 );
  display.println( "ouilogique" );

  display.setTextSize( 1 );

  display.setCursor( 35, 32 );
  display.println( "ouilogique" );

  display.setCursor( 35, 40 );
  display.println( "ouilogique" );

  display.setCursor( 35, 48 );
  display.println( "ouilogique" );

  cadreEcran();
  display.display();
}

void cadreEcran( void )
{
  display.drawRect( 0, 0, display.width()-2, display.height()-2, WHITE );
}


et le code donné sur le site cité plus haut ( juste après l'image du câblage sur le arduino Rev 3)

Ceci est ma carte arduino; Je crois arduino rev 3 non ?


kamill

Bonjour,

Les deux montages sont strictement équivalent avec une carte UNO R3.
Les pins A4 A5 (SDA SCL) et les pins en haut à droite sur ta 3eme photo sont reliées.

ArduinoFree

Je ne comprends pas ta réponse.

J'ai bien câblé VCC sur A5
                    GND sur GNR
                    SCL sur A5
                    SDA sur A4

lesept

Je ne comprends pas ta réponse.

J'ai bien câblé VCC sur A5
                    GND sur GNR
                    SCL sur A5
                    SDA sur A4
C'est VCC sur 5V. Il faudrait une photo de ton montage, contrastée si possible, afin qu'on voie bien les couleurs des fils.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

#4
Jun 14, 2018, 09:44 am Last Edit: Jun 14, 2018, 09:45 am by ArduinoFree
erreur sur mon texte, j'ai bien VCC sur 5 volt

Voici les 2 photos

coté oled blanc VCC
           gris GNd
           rouge SCL
           bleu SDA



coté arduino
           blanc  5v
           gris    GND
           rouge A5
           bleu   A4


lesept

As-tu utilisé un scanner I2C pour vérifier l'adresse 0x3C ?
Code: [Select]
  // Initialise la communication I²C à l'adresse 0x3C.
  display.begin( SSD1306_SWITCHCAPVCC, 0x3C );


Sinon, le problème peut venir du fait que tu n'as pas déclaré toutes les bibliothèques nécessaires :
Code: [Select]
#include <SPI.h>            // <-- A ajouter
#include <Wire.h>
#include <Adafruit_GFX.h>   // <-- A ajouter
#include <Adafruit_SSD1306.h>
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

#6
Jun 14, 2018, 10:02 am Last Edit: Jun 14, 2018, 10:06 am by ArduinoFree
Les lignes que tu me fais ajoutées je les avais sur d'autres codes d'essai.
Je te joins le code que je teste


J'ai modifié cette ligne ( 0x3D à la place de 0x3C, car c'est un 128x64)
Code: [Select]
Serial.begin(9600);

  // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  display.begin(SSD1306_SWITCHCAPVCC, 0x3D);  // initialize with the I2C addr 0x3D (for the 128x64)
  // init done


Et pour le scaner de port , il ne m'affiche rien dans le serial
il me donne ces erreurs
Code: [Select]
Arduino : 1.8.4 (Windows 7), Carte : "Arduino/Genuino Uno"

Le croquis utilise 3626 octets (11%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 502 octets (24%) de mémoire dynamique, ce qui laisse 1546 octets pour les variables locales. Le maximum est de 2048 octets.
Erreur d'ouverture du port série « COM3 ». (Port busy)
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x7c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x7c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x7c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x7c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x7c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x7c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x7c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x7c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x7c
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x7c
Problème de téléversement vers la carte. Voir http://www.arduino.cc/en/Guide/Troubleshooting#upload pour suggestions.

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

lesept

Pour indiquer l'adresse de ton écran dans la ligne, il faut la connaitre : elle peut dépendre de plein de choses. Le mieux est d'utiliser le scanner qui se trouve dans le lien que je t'ai indiqué. Si tu veux de l'aide, tu peux copier / coller sur le forum ce que te dit la console à l'exécution du scanner.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

#8
Jun 14, 2018, 10:09 am Last Edit: Jun 14, 2018, 10:29 am by ArduinoFree
réponse  postée juste avant ta réponse




EDIT

J'ai enfin une réponse!
J'avais com1, com3 et com8
après 3 essai c'est sur le com8

Code: [Select]

Scanning...
Appareil I2C trouve a cette adresse 0x3C  !
Fin

Scanning...
Appareil I2C trouve a cette adresse 0x3C  !
Fin

Scanning...
Appareil I2C trouve a cette adresse 0x3C  !
Fin


En mettant le  code précédent
j'ai ça sur le serial
Code: [Select]
x: 39 y: 0 dy: 5
x: 89 y: 0 dy: 4
x: 2 y: 0 dy: 3
x: 88 y: 0 dy: 4
x: 67 y: 0 dy: 5
x: 24 y: 0 dy: 1
x: 12 y: 0 dy: 3
x: 51 y: 0 dy: 4
x: 23 y: 0 dy: 5
x: 24 y: 0 dy: 3


Mais rien sur l'écran
 

lesept

Il faut donc remettre 0x3C dans la déclaration de l'écran (voir réponse #5)
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

#10
Jun 14, 2018, 01:28 pm Last Edit: Jun 14, 2018, 02:30 pm by ArduinoFree
Cela marche.


En fait il a fallu scanner , modifier le texte 03xC en O3xD puis le remodifier en 03XC.

Ce soir je teste sur mon pc. J'espère que cela ira

Merci


Comment faire pour écrire sur une même ligne une donnée récupérée et un texte ?
Exemple je récupère la donnée 'temp', venant d'un sonde et après sur la même ligne je veux écrire C (pour celsius)

Code: [Select]

display.println(temp );                    // ici on récupère la température de la sonde( Keyes KY-013)  AIR
display.setTextSize(2);//text size    // mettre 2 pour 16 pixels

display.println("C");                       //Affichage du symbole <C>
delay(500);                                 // Attente 0,5 sec pour réactualiser



ce code me donne cet affichage
11,5
C

Je voudrais 11.5 C


J'ai testé ceci mais cela ne marche pas ( je dirais presque 'normaaaal'  :smiley-confuse: )
''display.println((temp) ("C") );"
Merci

fdufnews


ArduinoFree

C'est bon

Merci
Code: [Select]
display.setTextSize(1);//text size            // mettre 2 pour 16 pixels
  display.print( temp );                        // ici on met la 1° température ( Keyes KY-013)  AIR
  display.print("C");                            //Affichage du symbole <C>
  delay(500);                                    // Attente 0,5 sec pour réactualiser

lesept

A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ArduinoFree

#14
Jun 14, 2018, 03:24 pm Last Edit: Jun 14, 2018, 03:54 pm by ArduinoFree
Exact.
Petite coquille dans ma réponse, mais c'est ce que j'ai écrit dans le code

et le résultat !


Go Up