Bezüglich der Automaten-Hardware – Beleuchtung und Adressierung via Display – haben wir uns für eine Open-Source-Lösung entschieden. Das an einer Holzkiste angebrachte Display und der LED-Streifen werden energieautark mit einer Powerbank im Inneren des Automaten betrieben.

Verbindung des i2c-Backpacks am LCD-Display mit dem Mikrokontroller MAKER UNO
Zutaten

  • Cytron Maker UNO (Arduino-Variante)
  • LCD-Display 1602 mit i2c-Bus – zusammengebaut und verlötet

  • Modulabmessungen: 98 mm x 60 mm x 14 mm
  • Auflösung: 20 Zeichen x 4 Zeilen
  • Hintergrundbeleuchtung: Blau
  • Betriebsspannung: 3,3 V und 5 V
  • Betriebstemperatur: von -20°C bis +70°C

  • Female-to-Male-Wires
Verbindung Display – Mikrokontroller

Programmierung

Zur Programmierung von Arduino und Display benötigst Du die Arduino-IDE und die Library LiquidCrystal I2C

1. Arduino IDE > Reiter „Werkzeuge“ > „Bibliotheken verwalten“

2. Bibliothek „LiquidCrystal I2C“ im Suchfeld eingeben 

3. „LiquidCrystal I2C“ > Installieren

Programmiercode

// libraries to be included

include LiquidCrystal_I2C.h

include Wire.h

LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 20, 4); // Display: 20x04, physical address: 0x27 char array2[] = " HALLO! "; char array1[] = " VIEL SPASS "; char array3[] = " BEIM LESEN!!! "; void setup() { lcd.init(); lcd.backlight(); delay(250); lcd.noBacklight(); delay(1000); lcd.backlight(); delay(500); lcd.clear(); } void loop() { lcd.clear(); // Clears the LCD screen and positions the cursor in the upper-left corner lcd.setCursor(0, -1); // Sets the cursor for ( int positionCounter1 = 0; positionCounter1 < 14; positionCounter1++) { lcd.scrollDisplayLeft(); // Scrolls the content of the display one space to the left. lcd.print(array2[positionCounter1]); // Shows array with 12 characters delay(150); } delay(1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Ich bin ein Automat"); delay(1000); lcd.setCursor(0, 1); lcd.print("von TAKOTOKA."); delay(1000); lcd.setCursor(0, 2); lcd.print("Ich zeige Comics"); delay(1000); lcd.setCursor(0, 3); lcd.print("- und verkaufe sie!"); delay(1000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("1. 2-Euro-Muenze"); delay(1000); lcd.setCursor(0, 1); lcd.print("2. Klappe aufziehen"); delay(1000); lcd.setCursor(0, 2); lcd.print("3. Comic entnehmen"); delay(1000); lcd.setCursor(0, 3); lcd.print("4. Klappe schliessen"); delay(1000); lcd.setCursor(0, 0); lcd.clear(); lcd.setCursor(0, 0); lcd.print("5. Bei Versagen:"); delay(1000); lcd.setCursor(0, 1); lcd.print("Knopf druecken"); delay(1000); lcd.clear(); lcd.setCursor(0, 1); lcd.print("& nochmals ziehen"); delay(1000); lcd.setCursor(0, 2); lcd.print("oder"); delay(1000); lcd.clear(); lcd.setCursor(0, 2); lcd.print("ausgegebene Muenze"); delay(1000); lcd.setCursor(0, 3); lcd.print("erneut einwerfen!"); delay(1500); lcd.clear(); lcd.setCursor(24, 3); for ( int positionCounter1 = 0; positionCounter1 < 19; positionCounter1++) { lcd.scrollDisplayLeft(); lcd.print(array1[positionCounter1]); } lcd.setCursor(-3, -2); for ( int positionCounter1 = 0; positionCounter1 < 17; positionCounter1++) { lcd.scrollDisplayLeft(); lcd.print(array3[positionCounter1]); delay(150); } delay(1500); lcd.clear(); lcd.setCursor(0, 0); lcd.print(" automat.blog"); delay(1000); lcd.setCursor(0, 1); lcd.print(" & "); delay(1000); lcd.setCursor(0, 2); lcd.print(" takotoka.com"); delay(1500); }
HAPPY CODING!

Das Takotoka-Team