OLED Farbdisplay mit 65000 Farben über SPI mit dem Arduino UNO betreiben

In dieser Anleitung erfahren Sie, wie Sie eine farb-OLED  mit 65000 farben über SPI mit dem Arduino ansteuern können.

colo oled in use

Das OLED Display hat dabei die folgenden Eigenschaften:

  • Auflösung: 96×64 pixel
  • Farben: 65000
  • Treiberchip: ssd1331

Pinbelegung:

  • GND
  • VCC: 2,8V – 5,5V
  • D0:CLK clock
  • D1: MOSI data
  • RST: reset
  • CS: chip-select signal

Die Verschaltung ist dabei wie wie folgt vorzunehmen:

Frab OLED Anschlüsse Arduino Anschlüsse Beschreibung
GND GND Ground
VCC 5V Versorgungsspannung
SCL (D0) 13 Hardware SCL
SDA 11 SDA
RES 8 Reset
DC 9 Data
CS 10 Chip Select

Komponenten Arduino und Farb OLED

Schaltplan farb OLED

Anschließend benötigen Sie die Bibliothek “Ucglib“. Eine Installationsanleitung von Bibliotheken Innerhalb der Arduino IDE finden Sie hier.

#include <SPI.h>
#include "Ucglib.h"
/*
  Hardware SPI Pins:
    Arduino Uno		sclk=13, data=11
    Arduino Due		sclk=76, data=75
    Arduino Mega	sclk=52, data=51 
*/

Ucglib_SSD1331_18x96x64_UNIVISION_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);

void color_test(void)
{
  ucg_int_t mx;
  uint16_t c, x;
  mx = ucg.getWidth() / 2;
  //my = ucg.getHeight() / 2;
  
  ucg.setColor(0, 0, 0, 0);
  ucg.drawBox(0, 0, ucg.getWidth(), ucg.getHeight());

  ucg.setColor(255, 255, 255);
  ucg.setPrintPos(2,18);
  ucg.setPrintDir(0);
  ucg.print("42project");

  ucg.setColor(0, 127, 127, 127);
  ucg.drawBox(0, 20, 16*4+4, 5*8+4);

  for( c = 0, x = 2; c <= 255; c+=17, x+=4 )
  {
    ucg.setColor(0, c, c, c);
    ucg.drawBox(x, 22, 4, 8);
    ucg.setColor(0, c, 0, 0);
    ucg.drawBox(x, 22+8, 4, 8);
    ucg.setColor(0, 0, c, 0);
    ucg.drawBox(x, 22+2*8, 4, 8);
    ucg.setColor(0, 0, 0, c);
    ucg.drawBox(x, 22+3*8, 4, 8);
    ucg.setColor(0, c, 255-c, 0);
    ucg.drawBox(x, 22+4*8, 4, 8);   
  }
}


void setup(void)
{
  delay(1000);
  ucg.begin(UCG_FONT_MODE_TRANSPARENT);
  ucg.setFont(ucg_font_ncenR14_hr);
  ucg.clearScreen();
  color_test();
}

void loop(void)
{
  
}