Zum Inhalt

Raspberry Pi

Langzeit-Projekte

Denk daran, deinen Code in einer Try-Schleife einzufügen.

Tipp: Die Stationen sehen cooler aus, wenn du keine herkömmlichen Mechaniken verwendest, z.B. statt einem Plastikschalter eine Wäscheklammer.

Wäscheklammer-Klavier

Mit Hilfe dieser zwei Links (1, 2) entstand 2018 dieses Wäscheklammer-Klavier.

Wäscheklammer-Klavier

Hier ist die Projektbeschreibung von Henotu und Kartoffel:

Erklärung

Wir hatten als Aufgabe, ein Python-Projekt für die 4. Klässlerinfo, aufzubauen. Meine Gruppe, Henotu und ich, KartoffelKuchenEsser, haben uns dazu entschieden ein Wäscheklammer-Klavier zu bauen.

Dabei sind die Wäscheklammern als Schalter anzusehen. Sie sind mit Kleber, an die Grundplatte, geklebt. "Geschälte" Reiszwecken, bilden die Kontakte zur Verbundleiste. Doch weiteres unter dem Punkt Schaltplan.

Programm

Der Code ist mit Kommentaren versehen und selbsterklärend.

```python

!/usr/bin/env python3

-- coding: utf-8 --

import RPi.GPIO as GPIO from time import sleep from subprocess import popen

GPIO.setmode(GPIO.BOARD)

Die GPIO-Pins als inputs zuweisen:

GPIO.setup([7,8,10,11,12,13,15,16], GPIO.IN, pull_up_down = GPIO.PUD_DOWN) print('Dieses Programm kann man mit Strg+C abbrechen, ohne das RPi kaputt zu machen.') try: while True: #Die ganzen Variablen für die inputs festlegen taster_7 = GPIO.input(7) taster_8 = GPIO.input(8) taster_10 = GPIO.input(10) taster_11 = GPIO.input(11) taster_12 = GPIO.input(12) taster_13 = GPIO.input(13) taster_15 = GPIO.input(15) taster_16 = GPIO.input(16) if taster_7 == 0: #Startet die folgenden Befehle, wenn der Taster gedrueckt wurde print('c1') #Gibt eine Ausgabe ins Terminal-Fenster popen("omxplayer -o local /home/pi/Desktop/mp3/c1.mp3", shell=True) taster_7 == 1 #Setzt den Taster nach dem Ausfuehren wieder auf "aus" if taster_8 == 0: print('d1') popen("omxplayer -o local /home/pi/Desktop/mp3/d1.mp3", shell=True) taster_8 == 1 if taster_10 == 0: print('e1') popen("omxplayer -o local /home/pi/Desktop/mp3/e1.mp3", shell=True) taster_10 == 1 if taster_11 == 0 print('f1') popen("omxplayer -o local /home/pi/Desktop/mp3/f1.mp3", shell=True) taster_11 == 1 if taster_12 == 0: print('g1') popen("omxplayer -o local /home/pi/Desktop/mp3/g1.mp3", shell=True) taster_7 == 1 if taster_13 == 0: print('a1') popen("omxplayer -o local /home/pi/Desktop/mp3/a1.mp3", shell=True) taster_8 == 1 if taster_15 == 0: print('h1') popen("omxplayer -o local /home/pi/Desktop/mp3/b1.mp3", shell=True) taster_10 == 1 if taster_16 == 0 print('c2') popen("omxplayer -o local /home/pi/Desktop/mp3/c2.mp3", shell=True) taster_11 == 1 else: sleep #Wenn keine Aktion kommt, soll nichts passieren

except KeyboardInterrupt: GPIO.cleanup() #Damit keine Fehlermeldung nach dem Schließen kommt. ```

Reaktionstester

Sobald eine LED leuchtet, muss man einen Buzzer drücken. Die Zeitdifferenz ist die Reaktionszeit.

Reaktionstester

Personenzähler

Die Kamera macht ein Foto von x Personen, die Gesichtserkennungs-Software sagt, wie groß x ist.

Personenzähler

Geschwindigkeitsmesser

Der RPi misst mittes Ultraschallsensor die Geschwindigkeit des Objekts im Kanal.

Geschwindigkeitsmesser

Lämpchen Lämpchen leuchte schön

```python import RPi.GPIO as GPIO from time import sleep

GPIO.setmode(GPIO.BOARD) GPIO.setup([7,12,13,15,19,21,23], GPIO.OUT) GPIO.setup(11, GPIO.IN, pull_up_down = GPIO.PUD_DOWN) modus = int(0)

try: while True: taster_int = GPIO.input(11) if taster_int == 1: modus += 1 sleep (.3) elif modus == 2 and taster_int == 1: modus = int(0) sleep (.3) if modus == 1: print('vorwaerts') GPIO.output(12, GPIO.HIGH) sleep(.5) GPIO.output(12, GPIO.LOW) GPIO.output(7, GPIO.HIGH) sleep(.5) GPIO.output(7, GPIO.LOW) GPIO.output(13, GPIO.HIGH) sleep(.5) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.HIGH) sleep(.5) GPIO.output(15, GPIO.LOW) GPIO.output(19, GPIO.HIGH) sleep(.5) GPIO.output(19, GPIO.LOW) GPIO.output(21, GPIO.HIGH) sleep(.5) GPIO.output(21, GPIO.LOW) GPIO.output(23, GPIO.HIGH) sleep(.5) GPIO.output(23, GPIO.LOW) taster_int = GPIO.input(11)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    elif modus == 2:
        print('rueckwaerts')
        GPIO.output(23, GPIO.HIGH)
        sleep(.5)
        GPIO.output(23, GPIO.LOW)
        GPIO.output(21, GPIO.HIGH)
        sleep(.5)
        GPIO.output(21, GPIO.LOW)
        GPIO.output(19, GPIO.HIGH)
        sleep(.5)
        GPIO.output(19, GPIO.LOW)
        GPIO.output(15, GPIO.HIGH)
        sleep(.5)
        GPIO.output(15, GPIO.LOW)
        GPIO.output(13, GPIO.HIGH)
        sleep(.5)
        GPIO.output(13, GPIO.LOW)
        GPIO.output(7, GPIO.HIGH)
        sleep(.5)
        GPIO.output(7, GPIO.LOW)
        GPIO.output(12, GPIO.HIGH)
        sleep(.5)
        GPIO.output(12, GPIO.LOW)

    elif modus == 3:
        modus = 0
        sleep(2)

    else:
        GPIO.output([7,12,13,15,19,21,23], GPIO.LOW)
        print('ausgeschaltet')
        sleep(1)

except KeyboardInterrupt: GPIO.cleanup() ```

Wer-ist-schneller-Spiel

```python

!/usr/bin/python3

import RPi.GPIO as GPIO from time import sleep from random import randint from time import time import sys GPIO.setmode(GPIO.BOARD)

GPIO.setup(15, GPIO.IN, pull_up_down = GPIO.PUD_DOWN) GPIO.setup(12, GPIO.OUT) GPIO.setup(16, GPIO.OUT) GPIO.setup(13, GPIO.OUT) GPIO.setup(11, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

def Schleife(): modus = 0 unnotig2 = 0 start = time() while True: taster_int = GPIO.input(11) taster_int_2 = GPIO.input(15) lampe_blau = 16 lampe_weiss = 12 Reaktionszeit = 0 unnotig = 0 if taster_int == 1: modus = 1 elif taster_int_2 == 1: modus = 5 else: unnotig2 += 1 if modus == 1: end = time() print (Spieler_2 + ' hat mit folgender Reaktionszeit gewonnen:') print (end - start) print '' print '' print '' GPIO.output(lampe_weiss, GPIO.HIGH) sleep(2) GPIO.output(12, GPIO.LOW) if end - start <= 0.1: print '' print '' print '' print 'Du hast Betrogen !!' print 'Deine Reaktion ist unmenschlich ...' print "Spiele bitte richtig :'(" print '' print '' print '' break elif modus == 5: end = time() print (Spieler_1 + ' hat mit folgender Reaktionszeit gewonnen:') print(end - start) print '' print '' print '' GPIO.output(lampe_blau, GPIO.HIGH) sleep(2) GPIO.output(16, GPIO.LOW) if end - start <= 0.1: print '' print '' print '' print 'Du hast Betrogen !!' print 'Deine Reaktion ist unmenschlich ...' print "Spiele bitte richtig :'(" print '' print '' print '' break else: GPIO.output(12, GPIO.LOW) GPIO.output(16, GPIO.LOW)

def Nochmal(): print '-----------------------------------------------------------------------------' print '' print '' print "Neue Runde starten = 1" print "Neues Spiel starten = 2" print '' print '' print '-----------------------------------------------------------------------------' while True: name = raw_input('Eingabe:') if name == '2' or unnotig == 1: global unnotig unnotig += 1 print '' print '' print '' print 'Neues Spiel wird geladen...' print '' sleep (1) print 'Bitte Warten...' print '' sleep (3) print 'Neue Runde !' print '' print '' print '' global Spieler_1 Spieler_1 = raw_input('Gib den Namen fuer Spieler Blau ein: ') global Spieler_2 Spieler_2 = raw_input('Gib den Namen fuer Spieler Weiss ein: ') print '' print '' print '' print 'ACHTUNG NEUE RUNDE WIRD GLEICH GESTARTET!' sleep (2) print 'Neue Runde startet in: 3' sleep (1) print 'Neue Runde startet in: 2' sleep (1) print 'Neue Runde startet in: 1' sleep (1) print 'Neue Runde wurde gestartet!' print '' print '' print '' break if name == '1': print '' print '' print '' print 'Runde startet in: 3' print '' sleep (1) print 'Runde startet in: 2' print '' sleep (1) print 'Runde startet in: 1' print '' sleep (1) print 'Runde wurde gestartet' print '' print '' print '' break

try: global unnotig unnotig = int(1) while True: GPIO.output(12, GPIO.LOW) GPIO.output(16, GPIO.LOW) GPIO.output(13, GPIO.LOW) Nochmal() GPIO.output(13, GPIO.HIGH) zeit = randint(2, 5) sleep(zeit) GPIO.output(13, GPIO.LOW) Schleife()

except KeyboardInterrupt: GPIO.cleanup() ```

Lärmanzeige

Alarmanlage für die Schublade

Verstellbare LED-Uhr

7-Segmentanzeigen, die die Uhrzeit anzeigen. Die Uhr kann man per Handy steuern, um z.B. morgens im Kinderzimmer eine falsche Uhrzeit anzuzeigen. Tipp: Steuerung per XMPP-Nachricht.

Licht-Harfe

Mittels Abstandssensor wird Abstands-Intervallen verschiedene Töne zugeordnet.

Digitales Gästebuch

Gäste können eine E-Mail schreiben, und deren Nachricht erscheint direkt auf dem Bildschirm/Beamer.

Morse-Code

Schreibe ein Programm, das Text zu Morse-Code übersetzt und die LED in entsprechendem Rhythmus blinken lässt.

LED-Kette

Anleitung zum Steuern einer LED-Kette

Weitere Projekt-Ideen