In diesem Beitrag möchte ich dir zeigen, wie du ein OLED Display per I²C Schnittstelle am M5Stamp Pico Mate in der Arduino IDE programmierst.
Den Mikrocontroller M5Stamp Pico Mate habe ich dir bereits in den nachfolgend aufgelisteten Beiträgen vorgestellt und gezeigt wie man diesen Programmieren kann.
- Vorstellung des M5Stamp Pico
- M5Stamp Pico Mate #1: Taster programmieren
- M5Stamp Pico Mate #2 – Simon says
- M5Stamp Pico Mate #2: Ampelschaltung
Benötigte Ressourcen für dieses Projekt
Für dieses Projekt benötige ich folgende Bauteile:
- einen M5Stamp Pico Mate,
- ein USB-Typ-C Datenkabel,
- ein OLED Display mit I²C Schnittstelle,
- diverse Breadboardkabel, männlich-männlich, 20 cm,
- ein 400 Pin Breadboard
Anschluss des OLED Displays
Der Pico Mate wird mit einem kleinen Aufkleber ausgeliefert, auf welchem man die Pinbelegung ablesen kann. Dieses erleichtert einem den Anschluss von Sensoren / Aktoren über Breadboardkabel.
OLED Display | M5Stamp Pico Mate |
---|---|
GND | GND |
VCC | 5V |
SCL | SCL, G22 |
SDA | SDA, G21 |
In dem nachfolgenden Beispiel habe ich zusätzlich einen 12×12 mm Printtaster in die Schaltung integriert welcher über GND & G26 anschlossen wurde
Programmieren des Displays in der Arduino IDE am M5Stamp Pico Mate
Den M5Stamp Pico Mate kannst du recht einfach über die Arduino IDE programmieren.
Du benötigst jedoch zum ansteuern des Displays eine Bibliothek welche du vom GitHub Repository stblassitude / Adafruit_SSD1306_Wemos_OLED herunterladen kannst. Wie du eine Bibliothek in der Arduino IDE installierst, habe ich dir bereits im Beitrag Arduino IDE, Einbinden einer Bibliothek erläutert.
//Bibliotheken für das ansteuern des OLED Displays //per I²C Schnittstelle #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); //Taster am GP26 angeschlossen #define taster 26 //Zähler für den Counter auf dem Display int counter = 0; void setup() { //Taster am internen PullUp Widerstand pinMode(taster, INPUT_PULLUP); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.display(); delay(2000); display.clearDisplay(); } void loop() { //So lange der Taster gedrückt wird, mache... if (digitalRead(taster) == LOW) { counter++; display.setTextSize(2); display.setTextColor(WHITE); //Cursor an der Position X=10 und Y=10 setzen display.setCursor(10, 10); display.clearDisplay(); //Umwandeln des Wertes der Zählervariable in eine Zeichenkette display.println(String(counter,DEC)); //Anzeigen des Wertes auf dem Display display.display(); delay(1); } }
Hier nun ein kleines Video wie ein Zähler auf dem Display incrementiert wird.