Wiedicar (Teil 2) – Ein Display über den IIC Bus

Einleitung

Ich war schon immer ein Freund von Displays und somit soll das Wiedicar auch eines bekommen. Auf diesem Display sollen dann Statusmeldungen und ähnliches angezeigt werden.

Zu erst werden wir zwei eigene Icons für die Bluetooth-Verbindung erstellen und diese dann auf dem Display anzeigen.

Ich zeige an einem Beispiel wie ein IIC Display an den Arduino angeschlossen und angesteuert wird. Am Ende des Beitrages zeige ich euch dann den Quellcode für das Wiedicar, integriert in den Quellcode vom ersten Teil.

Teileliste

Erklärung

Das Display benötigt eine 5V Versorgungsspannung, somit schließen wir VCC an den 5V Port des Arduino an. Der GND Pin wird am GND des Arduino angeschlossen.

Für die IIC Kommunikation benötigen wir den Pin A4 für SDA und Pin A5 für SCL.

Wir brauchen für den Sketch zwei Bibliotheken, die Wire Bibliothek und die LiquidCrystal I2C Bibliothek.

Schaltplan

Schaltplan Arduino - HD44780

Quellcode

/*
 * Ein LC-Display über IIC mit dem Arduino ansteuern

 *
 * Display  ->  Arduino
 * VCC      ->  5V
 * GND      ->  GND
 * SDA      ->  A4
 * SCL      ->  A5
 * 
 * Author: Wiedi - https://robinw.de
 */

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2);

// eigene Zeichen
byte bluetooth_on[8] = {B00000,B00100,B00110,B10101,B01110,B10101,B00110,B00100};
byte bluetooth_off[8] = {B11111,B11011,B11001,B01010,B10001,B01010,B11001,B11011};

void setup() {
  // Display inititalisieren
  lcd.init();

  // Hintergrundbeleuchtung einschalten
  lcd.backlight();

  // eigene Zeichen im Speicher des Displays erstellen
  lcd.createChar(0, bluetooth_on);
  lcd.createChar(1, bluetooth_off);
}

void loop() {
  // den Cursor auf das letzte Zeichen der ersten Zeile setzen
  lcd.setCursor(15, 0);

  // schreibe das eigene Zeichen bluetooth_on
  lcd.write(byte(0)); 

  // warte eine Sekunde
  delay(1000);

  // den Cursor auf das letzte Zeichen der ersten Zeile setzen
  lcd.setCursor(15, 0);

  // schreibe das eigene Zeichen bluetooth_off
  lcd.write(byte(1)); 

  // warte eine Sekunde
  delay(1000);
}

Quellcode des Wiedicar

/*
 * Bluetoothverbindung mit dem Arduino und einem HC-05 Modul
 * 
 * HC-05  ->   Arduino
 * RX     ->  TX
 * TX     ->  RX
 * VCC    ->  3.3V
 * GND    ->  GND
 * STATE  ->  2
 * 
 * LC-Display
 * 
 * Display  ->  Arduino
 * VCC      ->  5V
 * GND      ->  GND
 * SDA      ->  A4
 * SCL      ->  A5
 * 
 * 
 * Author: Wiedi - https://robinw.de
 */
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2);

// eigene Zeichen
byte bluetooth_on[8] = {B00000,B00100,B00110,B10101,B01110,B10101,B00110,B00100};
byte bluetooth_off[8] = {B11111,B11011,B11001,B01010,B10001,B01010,B11001,B11011};

// Variablen
const int btState = 2;
char btMessage;
bool lastState = false;

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

  // Display inititalisieren
  lcd.init();

  // Hintergrundbeleuchtung einschalten
  lcd.backlight();

  // eigene Zeichen im Speicher des Displays erstellen
  lcd.createChar(0, bluetooth_on);
  lcd.createChar(1, bluetooth_off);
  
  // schreibe das eigene Zeichen bluetooth_off
  lcd.write(byte(1)); 
        
  pinMode(btState, INPUT);
}

void loop() {

  
  // Prüfen ob ein Bluetoothgerät verbunden ist
  lcd.setCursor(15, 0);

  if (digitalRead(btState) != lastState) {
    lastState = digitalRead(btState);
    if (lastState) {
      // schreibe das eigene Zeichen bluetooth_on
      lcd.write(byte(0)); 
    } else {
      // schreibe das eigene Zeichen bluetooth_off
      lcd.write(byte(1)); 
    }
  }
  
  // Wenn etwas über Bluetooth gesendet wird
  if (Serial.available() > 0) {
    // Nachricht lesen
    btMessage = Serial.read();

    // Nachricht ausgeben
    Serial.print("Nachricht: ");
    Serial.println(btMessage);
  }
}
0Shares

1 Gedanke zu „Wiedicar (Teil 2) – Ein Display über den IIC Bus

Kommentare sind geschlossen.