Arduino - Sketch und Schaltung für I2C-LCD-Display (16 x 2, DFR0063) sowie einem Taster / Schalter

warning: fread(): Length parameter must be greater than 0 in /var/www/elchs-kramkiste.de/lapurd/includes/common.inc(1695) : eval()'d code on line 19.

Nachdem ich mich wegen der anhaltenden Probleme mit der seriellen Ausgabe der Arduino-Boards UNO und Mega 256 auf dem PC auf die Ausgabe auf ein LCD-Display konzentriert habe, habe ich mit den Vorbereitungen für die zukünftige Verwendung begonnen.

Als erstes Ergebnis kann ich hier die mit Fritzing erstellte Schaltung und einen Sketch vorlegen:

Zweck der Schaltung und des Sketches ist die Ausgabe von Programm-Meldungen auf einem LCD-Display. Verwendet wird hier ein I2C-Display von DFRobot, welches nur 2 Leitungen (neben "+" und "-") benötigt. Das lässt genug Pins frei für die noch anstehenden Ausbauten.

Hinweise: Der am Schalter / Taster angebrachte 10 K Widerstand sorgt dafür, dass immer ein definierter Zustand (An / Aus) vorliegt. Sie können gefahrlos diesen Widerstand entfernen, um die Auswirkungen selbst zu erfahren. Die dargestellt rote LED muss nicht angeschlossen werden, da auf PIN 13 der meisten Arduino-Boards dort sowieso eine LED geschaltet ist.

Hier die Schaltung:

Fritzing-Schaltbild
Schaltbild - für große Darstellung bitte hier klicken.

Und hier der dazugehörige Sketch:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>  // DFROBOT DFR0063

/*          * * M Y   N O T E S  * *
   *************************************************
 - please push the reset-button after connecting the arduino board to usb / voltage
 - atm keine deutschen Umlaute möglich
   **************************************************
 * Button1 circuit:
 * pushbutton attached to pin 2 from +5V
 * 10K resistor attached to pin 2 from ground (um das Prellen zu unterdrücken, 
   erfordert aber nachdrückliches "PUSH" des Buttons
   **************************************************
*/

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 
                                   // for a 16 chars and 2 line display
int i = 1;
int bt1state = 0;                  // status of button 1

const int led1pin = 13;            // control-LED connected to pin 13
const int bt1pin  =  2;            // button 1 connected to pin 2

void setup() {
  lcd.init();                      // initialize the lcd 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.clear();
  lcd.print("Hello");
  pinMode(led1pin, OUTPUT);
  delay(500);
  lcd.clear();
}

void loop() {
    bt1state = digitalRead(bt1pin);
    if (bt1state == HIGH) {               // button 1 is pressed
      lcd.clear();                        // clear the LCD display
      digitalWrite(led1pin, HIGH);        // set LED on PIN 13 on
      lcd.print("Button 1 ON");
      delay(1000);
    } else {                              // button 1 is NOT pressed
      lcd.clear();                        // clear the LCD display
      digitalWrite(led1pin, LOW);         // set LED on PIN 13 off
      lcd.print("Button 1 OFF");
      delay(1000);
    }
}

Dieser Code ist frei verfügbar unter der GNU GPL.