Biblio­thek Adafruit_SSD1306

Lese­zeit: 5 Minu­ten

Metho­den der Biblio­thek Adafruit_SSD1306

Metho­deAnwei­sungPara­me­ter
OLED star­tenbegin(Parameter);SSD1306_SWITCHCAPVCC, Adres­se in Hexadezimal
Bild­schirm dunk­ler schaltendim(Parameter);true
false
Bild­schirm­brei­te feststellenwidth();
Bild­schirm­hö­he feststellenheight();
Bild­schirm löschenclear­Dis­play();
Bild­schirm drehensetRotation(Drehrichtung);0 = kei­ne Drehung
1 = 90° im Uhr­zei­ger­sinn drehen
2 = 180° drehen
3 = 270° im Uhr­zei­ger­sinn drehen
Bild­schirm­hin­ter­grund­far­be festlegenfillScreen(Farbe);
ein­zel­nen Pixel zeichnendrawPixel(x-Achse, y-Achse, Farbe)Far­be:
WHITE (SSD1306_WHITE)
BLACK (SSD1306_BLACK)
Bild­schirm anzeigendiso­lay();
Linie zeich­nendrawLine(StartX, Star­tY, EndeX, EndeY, Farbe);Far­be:
WHITE (SSD1306_WHITE)
BLACK (SSD1306_BLACK)
Ver­ti­ka­le Linie zeichnendrawFastVLine(StartX, Star­tY, Brei­te, Farbe);Far­be:
WHITE (SSD1306_WHITE)
BLACK (SSD1306_BLACK)
Hori­zon­ta­le Linie zeichnendrawFastVLine(StartX, Star­tY, Brei­te, Farbe);Far­be:
WHITE (SSD1306_WHITE)
BLACK (SSD1306_BLACK)
Recht­eck zeichnendrawRect(StartX, Star­tY,, Brei­te, Höhe, Farbe);Far­be:
WHITE (SSD1306_WHITE)
BLACK (SSD1306_BLACK)
abge­run­de­tes Recht­eck zeichnendrawRoundRect(StartX, Star­tY , Brei­te, Höhe, Eckenradius 
Farbe);
aus­ge­füll­tes Recht­eck zeichnenfillRect(StartX, Star­tY,, Brei­te, Höhe, Farbe);
aus­ge­füll­tes, abge­run­de­tes Recht­eck zeichnenfillRoundRect(StartX, Star­tY , Brei­te, Höhe, Eckenradius 
Farbe);
Kreis zeich­nendrawCircle(MittelpunkX, Mit­tel­punk­tY, Radi­us, Farbe);Far­be:
WHITE (SSD1306_WHITE)
BLACK (SSD1306_BLACK)
Aus­ge­füll­ten Kreis zeichnenfillCircle(MittelpunkX, Mit­tel­punk­tY, Radius);
Cur­sor setzensetCursor(x-Achse, y-Achse);
Text schrei­benprint("Text");
ein­zel­nes Zei­chen schreibenwrite(Zeichen)

So sieht es aus:

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

// Maße des Bildschirms
# define BildschirmBreite 128  
# define BildschirmHoehe 64  

# define OLED_RESET 4  

// Adresse: 0x3C oder 0x3D
# define Adresse 0x3c  

// Name des Displays und Startparameter
Adafruit_SSD1306 oled(BildschirmBreite, BildschirmHoehe, &Wire, OLED_RESET);

void setup() 
{
  // OLED starten
  oled.begin(SSD1306_SWITCHCAPVCC, Adresse);

  // Bildschirm löschen
  oled.clearDisplay();

  // Schriftfarbe und -größe
  oled.setTextColor(WHITE);

  // Textgröße (1-3)
  oled.setTextSize(2);

  // Codepage auf 437 setzen -> Sonderzeichen anzeigen
  oled.cp437(true);

  // Display dunkler stellen
  oled.dim(true);
}

void loop() 
{
  // ausgefüllte Kreise 
  int Radius = 3;
  int StartX = Radius;
  int StartY = 5;
  while (StartX < oled.width() - Radius) {
    for (int i = StartY; i < oled.height() - Radius; i += 10) {

      oled.fillCircle(StartX, i, Radius, WHITE);
      oled.display();
      delay(1);
    }
    StartX += 10;
  }
  delay(500);
  oled.clearDisplay();

  // Kreise 
  Radius = 5;
  StartX = Radius;
  while (StartX < oled.width() - Radius)
  {
    for (int i = StartY; i < oled.height() - Radius; i += 15) {

      oled.drawCircle(StartX, i, Radius, WHITE);
      oled.display();
      delay(1);
    }
    StartX += 15;
  }
  delay(500);
  oled.clearDisplay();

  // diagonale Linien   
  for (int i = 0; i < oled.width(); i += 4) 
  {
    oled.drawLine(0, 0, i, oled.height() - 1, WHITE);
    oled.display(); 
    delay(1);
  }

  for (int i = 0; i < oled.height(); i += 4)
  {
    oled.drawLine(0, 0, oled.width() - 1, i, WHITE);
    oled.display();
    delay(1);
  }
  delay(500);
  oled.clearDisplay();

  // horizontale Linie mit drawLine
  for (int i = 0; i < oled.height() - 1; i += 4) 
  {
    oled.drawLine(0, i, oled.width() - 1, i, WHITE);
    oled.display();
    delay(1);
  }
  oled.clearDisplay();
  delay(500);

   // horizontale Linien mit drawFastHLine
  for (int i = 0; i < oled.height() - 1; i += 4) 
  {
    oled.drawFastHLine(0, i, oled.width(), WHITE);
    oled.display();
    delay(1);
  }
  oled.clearDisplay();
  delay(500);

  // vertikale Linie mit drawLine
  for (int i = 0; i < oled.width() - 1; i += 4) 
  {
    oled.drawLine(i, 0, i, oled.height() - 1, WHITE);
    oled.display();
    delay(1);
  }
  oled.clearDisplay();
  delay(500);
  
  // vertikale Linien mit drawFastVLine
  for (int i = 0; i < oled.width() - 1; i += 4) 
  {
    oled.drawFastVLine(i, 0, oled.height(), WHITE);
    oled.display();
    delay(1);
  }
  oled.clearDisplay();
  delay(500);

  // Rechtecke
  for (int i = 0; i < oled.height() / 2; i += 4) 
  {
    oled.drawRect(i, i, oled.width() - 2 * i, oled.height() - 2 * i, WHITE);
    oled.display(); 
    delay(10);
  }
  delay(500);
  oled.clearDisplay();

  // abgerundete Rechtecke
  for (int i = 0; i < oled.height() / 2; i += 4) 
  {
    oled.drawRoundRect(i, i, oled.width() - 2 * i, oled.height() - 2 * i, 5, WHITE);
    oled.display(); 
    delay(10);
  }
  delay(500);
  oled.clearDisplay();

  // einzelne Pixel zufällig anordnen
  for (int i = 0; i < 500; i++) 
  {
    int x = random(1, oled.width());
    int y = random(1, oled.height());
    oled.drawPixel(x, y, WHITE);
    delay(2);
  }
  oled.display();

  delay(500);
  oled.clearDisplay();

  oled.setTextSize(2);
  oled.setCursor(0, 0);
  oled.print("Text");
  oled.display();

  delay(500);
  oled.clearDisplay();

  // Sonderzeichen
  oled.setCursor(0, 0);
  oled.print("Sonder-");
  oled.setCursor(0, 15);
  oled.print("-zeichen:");
  oled.display();
  delay(500);

  oled.clearDisplay();
  oled.setCursor(0, 0);
  oled.write("\x84");  // ä -> 132
  oled.write("\x94");  // ö -> 148
  oled.write("\x81");  // ü -> 129
  oled.write("\x8e");  // Ä -> 142
  oled.write("\x99");  // Ö -> 153
  oled.write("\x9a");  // Ü -> 154
  oled.write("\xe1");  // ß -> 224
  oled.write("\xe0");  // alpha -> 223
  oled.write("\xe4");  // Summenzeichen -> 228
  oled.write("\xe3");  // PI -> 227
  oled.write("\xea");  // Ohm -> 234
  oled.write("\xed");  // Durchschnitt -> 237
  oled.write("\xee");  // PI -> 238
  oled.write("\x10");  // Pfeil links -> 16
  oled.write("\x11");  // Pfeil rechts -> 17
  oled.write("\x12");  // Pfeil oben und unten -> 18
  oled.write("\x7b");  // { -> 123
  oled.write("\x7c");  // | -> 124
  oled.write("\x7d");  // } ~ -> 125
  oled.write("\xf8");  // ° -> 248
  oled.display();
  delay(2000);
  oled.clearDisplay();

  // Lauftext
  oled.setTextSize(2);  // Draw 2X-scale text
  oled.setTextColor(SSD1306_WHITE);
  oled.setCursor(0, 0);
  oled.println(F("Text"));
  oled.display();

  oled.startscrollright(0x00, 0x0F);
  delay(4000);
  oled.stopscroll();
  delay(500);
  oled.startscrollleft(0x00, 0x0F);
  delay(4000);
  oled.stopscroll();
  delay(500);
  oled.clearDisplay();
}

I²C-Adresse her­aus­fin­den:

// Wire-Bibliothek einbinden
# include <Wire.h>

// Zahl der gefundenen I2C-Geräte
int Zaehler = 0;

void setup() 
{
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial) {;}
  
  // mit i2C-Bus verbinden
  Wire.begin();
  Zaehler = 0;

  // Geräte abfragen, maximal 128
  for (int i = 0; i < 128; i++) 
  {
    // alle IDs scannen
    Wire.beginTransmission(i);
    if (Wire.endTransmission() == 0)
    // Gerät gefunden
    {
      Serial.print("Hexadezimal: Gerät gefunden ID 0x");
      Serial.println(i, HEX);
      Serial.print("Dezimal: Gerät gefunden: ");
      Serial.println(i, DEC);
      Zaehler ++;
    }
    delay(10);
  }

  Serial.print("Gefundene Geräte insgesamt: ");
  Serial.println(Zaehler);
}

void loop() 
{
  // nichts zu tun, das Programm läuft nur einmal
}

Hier fin­dest du einen Über­blick über die 🔗 Adaf­ruit class refe­rence SSD1306 (exter­ner Link abge­ru­fen am 22.7.22).


Letzte Aktualisierung: 23. Jul 2022 @ 11:56