Installation SSD1306 Display am Wemos S2 Pico (Display zeigt nur Pixel an)

Installation SSD1306 Display am Wemos S2 Pico (Display zeigt nur Pixel an)
Inhaltsverzeichnis

1. Installation der Librarys (Adafruit, U8g2)

Ich habe hier zwei Librarys rausgesucht die man verwenden kann. Welche Ihr benutz bleibt euch überlassen. Um die Librarys zu istallieren geht Ihr in der Arduino IDE auf Sketch -> Bibliothek einbinden -> Bibliotheken verwalten, oder Tastenkombination Strg + Umschalt + I

Nun sucht Ihr im Suchfeld nach Adafruit SSD1306 und installiert diese Library.

Für die zweite Library sucht Ihr im Suchfeld nach U8g2 und installiert diese Library.

2. Beispielsketch

2. 1. Beispielsketch mit Adafruit Library

Das erste Beispiel in mit der Adafruit Library erstellt.

Wichtig ist in Zeile 12 das der OLED_RESET auf 18 steht. Das ist der Resetpin für das Display. Wenn dieser nicht gesetzt ist kann es zu dem Pixelen im Display führen.

Die Adresse in Zeile 13 ist beim Wemos Lolin S2 Pico 0x3c.

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

#define SleftEEN_WIDTH 128 // OLED display width, in pixels
#define SleftEEN_HEIGHT 32 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
// The pins for I2C are defined by the Wire-library. 

#define OLED_RESET     18 // Reset pin # (or -1 if sharing Arduino reset pin)
// See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
#define SleftEEN_ADDRESS 0x3C 
Adafruit_SSD1306 display(SleftEEN_WIDTH, SleftEEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
  if(!display.begin(SSD1306_SWITCHCAPVCC, SleftEEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }

  delay(100); // Display Adafruit logo for a bit :)
  display.clearDisplay();

  //display.setRotation(2); // Uncomment to rotate display 180 degrees
  display.setTextSize(1);   // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE); // Draw white text
  display.cp437(true);      // Use full 256 char 'Code Page 437' font

  display.setCursor(0, 0);  // 0,0 / 8 / 16 / 24 are the 21 char lines
  display.print("arduino-");
  display.setCursor(0, 8);
  display.print("projekte.info");
  display.display();
}

void loop() {
  delay(100);      
}
				
			

Nach dem der Sketch hochgeladen wurde wird das Display nun richtig angezeigt.

2. 2. Beispielsketch mit U8g2 Library

Bei zweiten Sketch mit der U8g2 Library könnt Ihr einfach den Standard Sketch nehmen.

Ihr muss das passende Display einkommentieren und den Reset Pin auf 18 setzten. Ich habe das hier mal in gekürzter Form erstellt.

				
					#include <Arduino.h>
#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>

U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ 18); 

void setup(void) {
  u8g2.begin();
}

void loop(void) {
  u8g2.clearBuffer();					// clear the internal memory
  u8g2.setFont(u8g2_font_ncenB08_tr);	// choose a suitable font
  u8g2.drawStr(0,10,"Hello World!");	// write something to the internal memory
  u8g2.sendBuffer();					// transfer internal memory to the display
  delay(1000);  
}

				
			
Folgende Bauteile wurden verwendet: