d1 mini qui avec ecran oled 64*48 qui reste bloquer

Bonjours,
J’ai un gros problème avec mon d1 mini.
Cela fais deux semaines que j’essaie de trouver résoudre le problème.
mon écran reste sur cette image que je n’ai jamais mis, elle reste même si je change de code(jai déjà change toute les librairies(réinstallé)) et je trouve pas comment résoudre ce probléme

L'image : |426x500 Si tu ne l'y as jamais mise c'est qu'elle y était déjà. Il est neuf ?

As-tu essayé un des sketches d'exemple de ta bibliothèque graphique ?

oui je l’ai deja mis en route avec l’écran et une fois quand je televerser le code il m’apparait ca

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include “Adafruit_SSD1306.h”
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

// SSID et mot de passe des réseaux à tester - SSID and password of the networks to check
// Ajoutez autant de réseau que désiré - Add as network as desired
String ssids[3] = {“yourSSID1”,“yourSSID2”,“yourSSID3”};
String passwords[3] = {“pwdSSID1”,“pwdSSID2”,“pwdSSID3”};

// IP du serveur de test - Test server IP
const char* host = “xxx.xxx.xxx.xxx”;
// Port du serveur - Server Port
const int port = 8080;

#define OLED_RESET 0 // GPIO0
Adafruit_SSD1306 display(OLED_RESET);

// Initialisation des Objets - Init objects
WiFiClient wifi;
HTTPClient http;

// Fonction de connexion au réseau WiFi
void setup_wifi(String ssid, String password) {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

// Il faut convertir la String en char* - need to convert String to char*
WiFi.begin(ssid.c_str(), password.c_str());
// Connexion au réseau WiFi - connecting to WiFi network
int count = 0;
while (WiFi.status() != WL_CONNECTED) {
count++;
delay(500);
Serial.print(".");
if ( count > 10 ) { return; }
}

Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}

void setup() {
pinMode(A0, INPUT); // Le convertisseur A/N A0 sera utilisé pour mesurer la tension de la batterie - Set A0 converter as input to measure the battery tension
Serial.begin(115200);

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 64x48)
display.display();
}

float getLevel(){
float raw = analogRead(A0);
int level = map(raw, 140, 227, 0, 100); // Avec une résistance 1M5 - With a 1M5 resistor
Serial.print("A0 "); Serial.println(raw);

if ( level < 0 ) { level = 0; }
if ( level > 100 ) { level = 100; }
Serial.print("Level: "); Serial.println(level);
return level;
}

float getVoltage(){
float raw = analogRead(A0);
float volt = map(raw, 140, 227, 338, 511); // Avec une résistance 1M5 - With a 1M5 resistor
volt = volt / 100;
Serial.print("A0 "); Serial.println(raw);
Serial.print("Voltage "); Serial.println(volt);
return volt;
}

void loop() {
byte available_networks = WiFi.scanNetworks();
if ( available_networks > 0 ) {
for (int network = 0; network < available_networks; network++) {
//delay(1000);
int level = getLevel();
long rssi = WiFi.RSSI(network);
int bars = getBarsSignal(rssi);
Serial.print(“RSSI:”);
Serial.println(rssi);

display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);

// Affiche le nom du réseau, la qualité du signal et le niveau de la batteri - display network name, signal Strength and battery level
display.print(“SSID “); display.println(WiFi.SSID(network));
display.print(“RSSI:”); display.println(rssi);
display.print(“Bat.”); display.print(level); display.println(”%”);

// Affiche les barres de réception du signal - display signal quality bars
for (int b=0; b <= bars; b++) {
// display.fillRect(59 + (b5),33 - (b5),3,b5,WHITE);
display.fillRect(10 + (b
5),48 - (b5),3,b5,WHITE);
}

display.display();
delay(2000);

// Vérifie si la connexion au serveur fonctionne - Check if connexion is correct with the server
for ( int i = 0 ; i < 3 ; i++ ) {
String _ssid = ssids*;*
String _pwd = passwords*;
String _currentSSID = WiFi.SSID(network);
if ( _currentSSID == _ssid) {
checkServerConnexion(_ssid,pwd);
_
}*

* } *
* } *
* } else {*
* displayMessage(“No Signal !”, 1000, 1);*
* }*
}
void checkServerConnexion(String ssid, String password){
* Serial.println(“Checking server connexion…”);*
* displayMessage(“Checking server connexion…”, 250, 1);*
* setup_wifi(ssid, password);
String status = ssid;
_
http.setTimeout(1000);*

* http.begin(host,port, “/checkconnexion”);*
* int httpCode = http.GET();*
* Serial.print("HTTP Code "); Serial.println(httpCode);*
* if (httpCode) {*
* if (httpCode == 200) {*
* Serial.println(“Connexion OK”);*
* _status += " OK";
displayMessage(status, 2000,2);
_
} else {*

* Serial.println(“Connexion KO”);*
* _status += " KO!";
displayMessage(status, 2000, 2);
_
}*

* } else {*
* Serial.println(“Connexion KO”);*
* _status += " KO!";
displayMessage(status, 2000, 2);
_
}*

* Serial.println(“closing connection”);*
* http.end();*
}
void displayMessage(String message, int duration, int Size){
* display.clearDisplay();*
* display.setTextSize(Size);*
* display.setTextColor(WHITE);*
* display.setCursor(0,0);*
* display.println(message);*
* display.display();*
* delay(duration);*
}
int getBarsSignal(long rssi){
* // 5. High quality: 90% ~= -55db*
* // 4. Good quality: 75% ~= -65db*
* // 3. Medium quality: 50% ~= -75db*
* // 2. Low quality: 30% ~= -85db*
* // 1. Unusable quality: 8% ~= -96db*
* // 0. No signal*
* int bars;*

* if (rssi > -55) {*
* bars = 5;*
* } else if (rssi < -55 & rssi > -65) {*
* bars = 4;*
* } else if (rssi < -65 & rssi > -75) {*
* bars = 3;*
* } else if (rssi < -75 & rssi > -85) {*
* bars = 2;*
* } else if (rssi < -85 & rssi > -96) {*
* bars = 1;*
* } else {*
* bars = 0;*
* }*
* return bars;*
}

Ok. D'abord il faut que tu édites ton message pour mettre le code entre balises CODE, voir les messages épinglés du forum pour savoir comment faire.

Ensuite, tu as trouvé ce code quelque part. Il doit y avoir des explications, car tu dois le modifier pour renseigner certaines parties. Notamment les SSID et password des réseaux que tu testes.

Le code en l'état actuel teste 3 réseaux. Tu peux modifier ça si tu veux. Mais tu dois surtout renseigner les tableaux des lignes

String ssids[3] = {"yourSSID1","yourSSID2","yourSSID3"};
String passwords[3] = {"pwdSSID1","pwdSSID2","pwdSSID3"};

Si tu n'as pas 3 réseaux, tu peux renseigner le premier ou les deux premiers éléments de chaque tableau et conserver le troisième tel quel.

Il faut aussi renseigner l'adresse IP du 'host', ligne

const char* host = "xxx.xxx.xxx.xxx";

Mais là je ne sais pas ce qu'il faut mettre... Voir les instructions.

tibobri:
oui je l’ai deja mis en route avec l’écran et une fois quand je televerser le code il m’apparait ca

[ Code]#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include “Adafruit_SSD1306.h”
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

// SSID et mot de passe des réseaux à tester - SSID and password of the networks to check
// Ajoutez autant de réseau que désiré - Add as network as desired
String ssids[3] = {“yourSSID1”,“yourSSID2”,“yourSSID3”};
String passwords[3] = {“pwdSSID1”,“pwdSSID2”,“pwdSSID3”};

// IP du serveur de test - Test server IP
const char* host = “xxx.xxx.xxx.xxx”;
// Port du serveur - Server Port
const int port = 8080;

#define OLED_RESET 0 // GPIO0
Adafruit_SSD1306 display(OLED_RESET);

// Initialisation des Objets - Init objects
WiFiClient wifi;
HTTPClient http;

// Fonction de connexion au réseau WiFi
void setup_wifi(String ssid, String password) {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

// Il faut convertir la String en char* - need to convert String to char*
WiFi.begin(ssid.c_str(), password.c_str());
// Connexion au réseau WiFi - connecting to WiFi network
int count = 0;
while (WiFi.status() != WL_CONNECTED) {
count++;
delay(500);
Serial.print(".");
if ( count > 10 ) { return; }
}

Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}

void setup() {
pinMode(A0, INPUT); // Le convertisseur A/N A0 sera utilisé pour mesurer la tension de la batterie - Set A0 converter as input to measure the battery tension
Serial.begin(115200);

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 64x48)
display.display();
}

float getLevel(){
float raw = analogRead(A0);
int level = map(raw, 140, 227, 0, 100); // Avec une résistance 1M5 - With a 1M5 resistor
Serial.print("A0 "); Serial.println(raw);

if ( level < 0 ) { level = 0; }
if ( level > 100 ) { level = 100; }
Serial.print("Level: "); Serial.println(level);
return level;
}

float getVoltage(){
float raw = analogRead(A0);
float volt = map(raw, 140, 227, 338, 511); // Avec une résistance 1M5 - With a 1M5 resistor
volt = volt / 100;
Serial.print("A0 "); Serial.println(raw);
Serial.print("Voltage "); Serial.println(volt);
return volt;
}

void loop() {
byte available_networks = WiFi.scanNetworks();
if ( available_networks > 0 ) {
for (int network = 0; network < available_networks; network++) {
//delay(1000);
int level = getLevel();
long rssi = WiFi.RSSI(network);
int bars = getBarsSignal(rssi);
Serial.print(“RSSI:”);
Serial.println(rssi);

display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);

// Affiche le nom du réseau, la qualité du signal et le niveau de la batteri - display network name, signal Strength and battery level
display.print(“SSID “); display.println(WiFi.SSID(network));
display.print(“RSSI:”); display.println(rssi);
display.print(“Bat.”); display.print(level); display.println(”%”);

// Affiche les barres de réception du signal - display signal quality bars
for (int b=0; b <= bars; b++) {
// display.fillRect(59 + (b5),33 - (b5),3,b5,WHITE);
display.fillRect(10 + (b
5),48 - (b5),3,b5,WHITE);
}

display.display();
delay(2000);

// Vérifie si la connexion au serveur fonctionne - Check if connexion is correct with the server
for ( int i = 0 ; i < 3 ; i++ ) {
String _ssid = ssids*;*
String _pwd = passwords*;
String _currentSSID = WiFi.SSID(network);
if ( _currentSSID == _ssid) {
checkServerConnexion(_ssid,pwd);
_
}*

* } *
* } *
* } else {*
* displayMessage(“No Signal !”, 1000, 1);*
* }*
}
void checkServerConnexion(String ssid, String password){
* Serial.println(“Checking server connexion…”);*
* displayMessage(“Checking server connexion…”, 250, 1);*
* setup_wifi(ssid, password);
String status = ssid;
_
http.setTimeout(1000);*

* http.begin(host,port, “/checkconnexion”);*
* int httpCode = http.GET();*
* Serial.print("HTTP Code "); Serial.println(httpCode);*
* if (httpCode) {*
* if (httpCode == 200) {*
* Serial.println(“Connexion OK”);*
* _status += " OK";
displayMessage(status, 2000,2);
_
} else {*

* Serial.println(“Connexion KO”);*
* _status += " KO!";
displayMessage(status, 2000, 2);
_
}*

* } else {*
* Serial.println(“Connexion KO”);*
* _status += " KO!";
displayMessage(status, 2000, 2);
_
}*

* Serial.println(“closing connection”);*
* http.end();*
}
void displayMessage(String message, int duration, int Size){
* display.clearDisplay();*
* display.setTextSize(Size);*
* display.setTextColor(WHITE);*
* display.setCursor(0,0);*
* display.println(message);*
* display.display();*
* delay(duration);*
}
int getBarsSignal(long rssi){
* // 5. High quality: 90% ~= -55db*
* // 4. Good quality: 75% ~= -65db*
* // 3. Medium quality: 50% ~= -75db*
* // 2. Low quality: 30% ~= -85db*
* // 1. Unusable quality: 8% ~= -96db*
* // 0. No signal*
* int bars;*

* if (rssi > -55) {*
* bars = 5;*
* } else if (rssi < -55 & rssi > -65) {*
* bars = 4;*
* } else if (rssi < -65 & rssi > -75) {*
* bars = 3;*
* } else if (rssi < -75 & rssi > -85) {*
* bars = 2;*
* } else if (rssi < -85 & rssi > -96) {*
* bars = 1;*
* } else {*
* bars = 0;*
* }*
* return bars;*
}
[/quote]

alors je l'ai trouve ici https://projetsdiy.fr/scanner-wifi-oled-portbale-esp8266-force-signal-serveur/ au début le fonctionnait sans problème et une fois j'ai téléverser le code ah il m'apparait ca et ne t'inquiète pas j'ai rempli l'ip et le ssid et le password

L'image que tu vois c'est le logo Adafruit. Cette image s'affiche lors de l'initialisation de l'afficheur. Si tu veux la supprimer il faut modifier la librairie ou changer le contenu du fichier splash.h Le plus simple c'est peut-être d'effacer l'écran après l'init pour y afficher l'image que tu veux.

d'accord on fais comment svp( je viens de commencer avec les écrans et les d1 mini )

Je disais de modifier ton premier message, et d'utiliser les balises code.

Pas de refaire un nouveau message et d'utiliser les balises quote.

Est-ce qu'il se passe quelque chose après l'affichage de cette image ? Tu devrais voir du texte dans la console série de l'IDE. Peux-tu le copier dans ta réponse ?

Pour effacer l'écran, ajoute

display.clearDisplay();

après la ligne

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

Il y a aussi des changements à faire dans la déclaration de l'objet display il y a maintenant un constructeur qui permet de déclarer les dimensions de l'afficheur (voir dans la librairie la syntaxe correcte). Le format d'écran par défaut est de 128x64 or le tien fait 64x48 donc il y a une partie de l'affichage qui se passe hors de la zone d'affichage.

voici l'erreur qui apparait quand je met le code [ Code]display.begin(SSD1306_SWITCHCAPVCC, 0x3C);[ /Code] sketch_aug30b:1:1: error: 'display' does not name a type display.begin(SSD1306_SWITCHCAPVCC, 0x3C); ^ exit status 1 'display' does not name a type et parails pour l'autre code

C'est cette ligne, le constructeur, qui définit 'display' :

Adafruit_SSD1306 display(OLED_RESET);

Vérifie qu'elle se trouve bien en haut de ton sketch. Elle peut être différente de celle ci, selon le message de fdufnews

Il n'y aurait pas d'autres erreurs? L'option afficher les messages détaillés est activé?

Non aucune erreur et j'ai vérifié cette ligne est bien dans mon programme. [ Code]Adafruit_SSD1306 display(OLED_RESET);[ /Code]

Le constructeur que tu utilises est obsolète. Pour un afficheur en interface I²C, le constructeur recommandé est le suivant Adafruit_SSD1306(uint8_t w, uint8_t h, TwoWire *twi = &Wire, int8_t rst_pin = -1, uint32_t clkDuring = 400000UL, uint32_t clkAfter = 100000UL); Il faudrait utiliser:

Adafruit_SSD1306 display(64, 48, &Wire, OLED_RESET);

voici l'erreur qui aparait quand je remplace [ Code]Adafruit_SSD1306 display(OLED_RESET);[ /Code] par [ Code]Adafruit_SSD1306 display(64, 48, &Wire, OLED_RESET);[ /Code] l'erreur : scann_wifi:20:1: error: 'display' does not name a type display.begin(SSD1306_SWITCHCAPVCC, 0x3C); ^ Plusieurs bibliothèque trouvées pour "Adafruit_SSD1306.h" Utilisé : C:\Users*\Documents\Arduino\libraries\Adafruit_SSD1306 Non utilisé : C:\Users*\Documents\Arduino\libraries\Adafruit_SSD1306-esp8266-64x48 Non utilisé : C:\Users*\Documents\Arduino\libraries\Adafruit_SSD1306_Wemos_Mini_OLED Non utilisé : C:\Users*\Documents\Arduino\libraries\arduino_454026 Plusieurs bibliothèque trouvées pour "ESP8266WiFi.h" Utilisé : C:\Users*\Documents\Arduino\libraries\ESP8266WiFi Non utilisé : C:\Users*\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WiFi exit status 1 'display' does not name a type