Après de multiple recherches, je n'ai pas trouvé de solution à mon problème. Je m'explique, j'ai téléchargé un code sur Internet me permettant d'allumer un écran OLED 128*64 et depuis celui est bloqué. Je peux continuer de téléverser mes codes, mais il y a toujours une grosse partie de l'écran qui reste figé.
Photo de mon problème.
Voici le code que j'utilise actuellement.
#define SSD1306_128_64
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(-1);
void setup()
{
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextColor(WHITE);
}
void loop()
{
display.clearDisplay();
printCentered("SSD1306 TUTO", 0, 1);
displayLogo(0, 100);
printLeft("LEFT JUSTIFIED", 20, 1);
printRight("RIGHT JUSTIFIED", 30, 1);
printValue(100, 50, 2);
displayBatteryLevel(0, 0, 0);
displayLogo(112, 0);
display.display();
delay(500);
}
void printLeft(const char *s, int y, int size)
{
display.setTextSize(size);
display.setCursor(0, y);
display.print(s);
}
void printRight(const char *s, int y, int size)
{
int16_t x1, y1;
uint16_t w, h;
display.setTextSize(size);
display.getTextBounds(s, 0, 0, &x1, &y1, &w, &h);
display.setCursor(display.width() - w, y);
display.print(s);
}
void printCentered(const char *s, int y, int size)
{
int16_t x1, y1;
uint16_t w, h;
display.setTextSize(size);
display.getTextBounds(s, 0, 0, &x1, &y1, &w, &h);
display.setCursor((display.width() - w) / 2, y);
display.print(s);
}
void printValue(int value, int y, int size)
{
char s[20];
int16_t x1, y1;
uint16_t w, h;
sprintf(s, "VALUE: %d", value);
display.getTextBounds(s, 0, 0, &x1, &y1, &w, &h);
display.setTextSize(size);
display.setCursor(0, y);
display.print(s);
}
static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,
B00000001, B11000000,
B00000001, B11000000,
B00000011, B11100000,
B11110011, B11100000,
B11111110, B11111000,
B01111110, B11111111,
B00110011, B10011111,
B00011111, B11111100,
B00001101, B01110000,
B00011011, B10100000,
B00111111, B11100000,
B00111111, B11110000,
B01111100, B11110000,
B01110000, B01110000,
B00000000, B00110000
};
void displayLogo(int x, int y)
{
display.drawBitmap(x, y, logo16_glcd_bmp, 16, 16, WHITE);
}
void displayBatteryLevel(int batteryLevel, int x, int y)
{
static bool flash = false;
if (flash || batteryLevel > 10) {
display.drawRect(x, y, 6, 16, WHITE);
display.fillRect(x, y + ((16 - batteryLevel / 6)), 6, batteryLevel / 6, WHITE);
}
flash = !flash;
}
Merci




