Profilwalze mit Kühlschmiermitteldüse


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Mathe-Spiel für Anfänger
Raspberry Pi steuert LCD-Display über I2C-Bus


Bevor man auf dem Raspberry Pi den I2C-Bus nutzen kann, muss er, da er standardgemäß deaktiviert ist, aktiviert werden. Die Beschreibung der Vorgehensweise findet man unter diesem Link:

I2C aktivieren und testen


In der folgenden Schaltung steuert Raspberry Pi über den I2C-Bus ein 2x16 LCD-Display an. Die Aufgabe ist unkompliziert. Mit drei Tastern, S1, S2 und S3 werden drei verschiedene Text-Anzeigen auf dem Display generiert. Das Betätigen jeden dieser Taster verursacht auf dem Display eine andere Anzeige.
Als Display kommt ein 2x16 LCD-Display mit dem HD44780 Controller (oder kompatibel) zum Einsatz. Auf dem Display kann man zwei Textzeilen mit jeweils 16 Zeichen darstellen.

Display

Display Frontansicht

Das Problem bei dem Display besteht darin, dass es keine I2C-Schnittstelle hat. Deswegen ist eine Erweiterung notwendig. An das Display wird zusätzlich ein Interface-Modul mit dem Mikrochip PCF8574T angelötet. Auf diesem Weg wird das Display I2C-fähig gemacht.

Interface Modul

Interface Modul FC-113

Solche Module (FC-113) von unterschiedlichen Herstellern sind im Handel problemlos erhältlich. Die kleine Zusatzplatine kann an das Display direkt angelötet werden. Sie stellt dann vier Anschlüsse, zwei für Spannungsversorgung und zwei für den I2C-Bus, zur Verfügung. Mit einem Jumper kann die Hintergrundbeleuchtung ein- bzw. ausgeschaltet werden. Mit einem Poti lässt sich der Kontrast des Displays einstellen. Das Modul, genau wie das LCD-Display, arbeitet mit 5 V.

Display mit Interface-Modul

Display mit Interface-Modul


Die weitere Schwierigkeit, die überwunden werden muss, ist die Pegelanpassung. Das LCD-Display arbeitet mit 5 V, Raspberry Pi zieht es jedoch vor, mit 3,3 V zu arbeiten. Das sind immerhin ~30% Unterschied. Schicken wir zum Raspi 5V-Signale, kann er beschädigt werden. Wir müssen also dafür sorgen, dass die Signale von Raspi von 3,3 V auf 5 V hochtransferiert werden. Die Signale von Display zum Raspi von 5 V auf 3,3 V gedrückt werden. Hierzu kann man selbst eine Zwischenschaltung bauen oder einfach auf fertige Module zurückgreifen. Genauso machen wir es hier. Die Verbindungen SDA und SCL vom Display-Interface zu Raspi werden getrennt, dazwischen wird ein Level Converter geschaltet.

Level Konverter

Level Konverter

Die Palette der Komponenten werden neben dem Raspi selbst drei einfache Taster abschließen.
Die Testschaltung wird nach diesem Plan erstellt:

Schaltplan

Schaltplan

Fertig aufgebaute Testschaltung könnte dann so aussehen:

Testschaltung

Testschaltung

Das Programm

In dem Programm wird die Bibliothek RPLCD verwendet, die davor installiert werden muss. Informationen über die Bibliothek findet man im Internet unter der Adresse https://pypi.org/project/RPLCD/. Sie wird mit

sudo pip install RPLCD

Installiert. Zusätzlich wird die Bibliothek smbus oder smbus2 benötigt.Sie wird mit

sudo apt install python-smbus

oder

sudo pip install smbus2

installiert.
Der Programmablauf wird mit drei Tasten gesteuert. Die eigentlichen einfachen mathematischen Aufgaben (Addition, Multiplikation, Division und Subtraktion) werden mit der Taster „3“ generiert. Sobald der Taster betätigt wird, erscheint auf dem Display eine neue mathematische Aufgabe. Jetzt hat man Zeit, um die Aufgabe zu lösen. Mit erneutem Betätigen des Tasters erscheint auf dem Display die richtige Lösung. So kann man sein Ergebnis mit der richtigen Lösung vergleichen. Auf diese Weise kann man auf spielerische Weise prüfen, wie gut man im Kopfrechnen ist. So die Art der Aufgaben als auch die Schwierigkeitsstufe können bei Bedarf geändert werden. Die Aufgaben werden mit dem Zufallsgenerator (random) erzeugt.

Das Programm:

# -----------------------------------------------
# Mathe-Spiel für Anfänger
# Display 2x16, I2C-Bus
# Raspberry Pi 3B
# Python 3
# -----------------------------------------------

from RPLCD.i2c import CharLCD
import time
import random
import RPi.GPIO as GPIO

lcd=CharLCD('PCF8574',0x27)

GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)

GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def Scrolltext():
    Satz1 = 'Mit Taster S3 werden dir Rechenaufgaben gestellt. '
    Satz2 = 'Schau, ob du sie loesen kannst!'
    SatzL = '                 '
    Satz = SatzL + Satz1 + Satz2 + SatzL
    for i in range (1, len(Satz) - 16, 1):
        lcd.cursor_pos =(1,0)
        lcd.write_string(Satz [i:16+i])
        time.sleep(0.4)

def Aufgabe():
    a = random.randint (1,99)
    b = random.randint (1,9)
    c = random.randint (1,9)
    d = random.randint (1,4)
    lcd.cursor_pos =(1,0)
    if (d == 1):               #Addition
        Ergebnis = a + b
        lcd.write_string(str(a) + ' + ' + str(b) + ' = ')
    if (d == 2):               #Multiplikation
        Ergebnis = b * c
        lcd.write_string(str(b) + ' * ' + str(c) + ' = ')
    if (d == 3):               #Subtraktion
        Ergebnis = a - c
        lcd.write_string(str(a) + ' - ' + str(c) + ' = ')
    if (d == 4):               #Division
        Ergebnis = c
        lcd.write_string(str(b*c) + ' : ' + str(b) + ' = ')         
    time.sleep (1)
    while True:
        if GPIO.input(18) == GPIO.LOW:
            lcd.write_string(str(Ergebnis))
            time.sleep (1)
            break

while True:
    if GPIO.input(12) == GPIO.LOW:
        lcd.clear()
        lcd.cursor_pos =(0,0)
        lcd.write_string('Wilkommen')
        lcd.cursor_pos =(1,0)
        lcd.write_string('bei Raspberry Pi')

    if GPIO.input(16) == GPIO.LOW:
        lcd.clear()
        lcd.cursor_pos =(0,1)
        lcd.write_string('Mathe - Spiele')
        Scrolltext()
        lcd.cursor_pos =(1,2)
        lcd.write_string('Start mit S3')

    if GPIO.input(18) == GPIO.LOW:
        lcd.clear()
        lcd.cursor_pos =(0,0)
        lcd.write_string('Wieviel ist?')
        Aufgabe()
# ----------------------------------------------------------
        

Kurzvideo

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz