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.

 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/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

 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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

  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
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#!/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