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.
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.
#!/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.
Personenzähler¶
Die Kamera macht ein Foto von x Personen, die Gesichtserkennungs-Software sagt, wie groß x ist.
Geschwindigkeitsmesser¶
Der RPi misst mittes Ultraschallsensor die Geschwindigkeit des Objekts im Kanal.
Lämpchen Lämpchen leuchte schön¶
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)
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¶
#!/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¶
-
LED, die sich per XMPP dimmen lässt.