Lot­to­zah­len - Anzei­ge auf einem OLED-Display

Lese­zeit: 5 Minu­ten

Lot­to­zah­len Biblio­thek u8g2

Navi­ga­ti­on

OLED-Displays (Orga­nic Light Emit­ting Diode) benö­ti­gen im Unter­schied zu LCDs kei­ne Hin­ter­grund­be­leuch­tung, sie leuch­ten selbst. Eine OLED besteht aus zwei Elek­tro­den, von denen min­des­tens eine trans­pa­rent sein muss. Im Zwi­schen­raum befin­den sich orga­ni­sche Halb­lei­t­er­schich­ten aus natür­li­chen Farb­stof­fen. Die orga­ni­schen Schich­ten leuch­ten, wenn sie von Gleich­strom durch­flos­sen wer­den. Basis der Tech­nik ist die Ent­de­ckung der Elek­tro­lu­mi­nes­zenz: ein Fest­kör­per wird durch Anle­gen einer elek­tri­schen Span­nung dazu ange­regt Licht zu erzeu­gen.

Die für den Ardui­no gebräuch­lichs­ten Bau­for­men haben eine Grö­ße von 0,96 Zoll und 1,3 Zoll.

Sie unter­schei­den sich im ver­wen­de­ten Chip­satz:
0,96 Zoll: SSD1306
1,3 Zoll: SH1106

Benö­tig­te Bau­tei­le:

  • Berüh­rungs­sen­sor
  • OLED-Display 0,96 Zoll
  • Lei­tungs­dräh­te

Baue die Schal­tung auf.
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen

Statt A4 (SDA) und A5 (SCL) kannst du auch die mit SCL und SDA beschrif­te­ten Pins ver­wen­den.

Der Chip­satz des ver­wen­de­ten Dis­plays ist ein SSD1306 mit I2C.
Für die Ansteue­rung des OLEDs steht eine Viel­zahl von Biblio­the­ken zur Ver­fü­gung.

Die hier ver­wen­de­te Biblio­thek SSD1306Ascii muss mit ...

Sketch → Biblio­thek ein­bin­den → Biblio­the­ken ver­wal­ten

... instal­liert wer­den.

So sieht es aus:

Bin­de die benö­tig­ten Biblio­the­ken ein und defi­nie­re die Varia­blen:

# include "SSD1306Ascii.h"
# include "SSD1306AsciiWire.h"

// mögliche Adressen I2C: 0X3C+SA0  0x3C or 0x3D
# define I2C_ADDRESS 0x3C

// Name des OLED festlegen
SSD1306AsciiWire oled;

# include <ArduinoSort.h>
/*
  Bibliothek ArduinoSort
  Download:
  https://github.com/emilv/ArduinoSort/releases
  Installieren:
  Sketch -> Bibliothek einbinden -> Zip-Bibliothek hinzufügen
*/

// Minimum/Maximum der Lottozahlen
const byte Minimum = 1;
const byte Maximum = 49;

// Berührungssensor Pin 7
byte SENSOR = 7;

// Anzahl der zu ziehenden Zahlen
const byte Anzahl = 6;

// Array für die gezogenen Zahlen
byte LottoZahl[Anzahl];

Der setup-Teil:

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

  pinMode(SENSOR, INPUT);

  // Zufallsgenerator starten
  randomSeed(0);

  // OLED starten
  Wire.begin();
  Wire.setClock(400000L);
  oled.begin(&Adafruit128x64, I2C_ADDRESS);

  // Schriftart bestimmen
  oled.setFont(font5x7);

  oled.println("Lottozahlen");
}

Ver­wen­de für Bestim­mung der Spiel­zah­len und die Zie­hung der Lot­to­zah­len die Funk­ti­on ➨Zie­hung:

Der loop-Teil. Beach­te die Kom­men­ta­re.

void loop()
{
  // Array für die gespielten Zahlen
  byte SpielZahl[6];

  // Strings und Trefferzahl definieren
  String GespielteZahlen = "";
  String GezogeneZahlen  = "";
  byte Treffer = 0;
  
  byte SensorLesen = digitalRead(SENSOR);

  if (SensorLesen == HIGH)
  {
    delay(200);

    // Ziehung der "angekreuzten" Zahlen
    Ziehung();

    /*
      Array Sortieren mit ArduinoSort
      sortArray(NameArray, AnzahlElemente)
      sortArrayReverse(NameArray, AnzahlElemente)
    */
    sortArray(LottoZahl, 6);

    // String GespielteZahlen aus den Elementen des Arrays LottoZahl
    // zusammensetzen
    for (byte i = 0; i < Anzahl; i++)
    {
      GespielteZahlen = GespielteZahlen + LottoZahl[i] + " ";
      SpielZahl[i] = LottoZahl[i];
    }

    // Ausgabe OLED
    oled.clear();
    oled.println("Gespielte Zahlen");
    oled.println(GespielteZahlen);
    oled.println("---------------------------------");

    // Ziehung der Lottozahlen
    Ziehung();

    sortArray(LottoZahl, 6);

    // Vergleichen der Elemente der Arrays SpielZahl und LottoZahl
    for (byte i = 0; i < Anzahl; i++)
    {
      for (byte ii = 0; ii < Anzahl; ii++)
      {
        // Übereinstimmung gefunden -> Treffer um 1 erhöhen
        if (SpielZahl[i] == LottoZahl[ii]) Treffer ++;
      }
    }

    // String GezogeneZahlen aus den Elementen 
    // des Arrays LottoZahl zusammensetzen
    for (byte i = 0; i < Anzahl; i++)
    {
      GezogeneZahlen = GezogeneZahlen + LottoZahl[i] + " ";
    }

    // Anzeige OLED
    oled.println("Gezogene Zahlen");
    oled.println(GezogeneZahlen);
    oled.println("-----------------------------");
  
    if (Treffer == 0) oled.print("keine Treffer");
    else
    {
      oled.print(Treffer);
      oled.print(" Treffer");
    }
  }
}


Ver­wand­te Auf­ga­ben:


Letzte Aktualisierung: 23. Apr 2020 @ 8:38