7.5 SPIEL - 10 Sekunden

Um Ihre Konzentration auf die Probe zu stellen, bauen Sie mit mir ein Spielgerät. Kreieren Sie einen Zauberstab, indem Sie den Kipp-Schalter mit einem Stab verbinden. Wenn Sie den Zauberstab schütteln, beginnt die 4-stellige 7-Segment-Anzeige mit dem Zählen. Schütteln Sie ihn erneut, stoppt das Zählen. Um zu gewinnen, muss der angezeigte Zählerstand bei 10.00 stehen bleiben. Spielen Sie das Spiel mit Ihren Freunden, um herauszufinden, wer der Zeitmagier ist.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist natürlich praktisch, ein komplettes Set zu kaufen. Hier ist der Link dazu:

Name

ARTIKEL IN DIESEM KIT

LINK

Kepler Kit

450+

Kepler Kit

Sie können die Teile auch separat unter den folgenden Links erwerben.

SN

KOMPONENTE

ANZAHL

LINK

1

Raspberry Pi Pico W

1

BUY

2

Micro-USB-Kabel

1

3

Steckbrett

1

BUY

4

Jumperkabel

Mehrere

BUY

5

Widerstand

5(4-220Ω, 1-10KΩ)

BUY

6

4-stellige 7-Segment-Anzeige

1

7

74HC595

1

BUY

8

Neigungsschalter

1

Schaltplan

sch_10_second

  • Diese Schaltung basiert auf 5.3 Zeitmesser, ergänzt durch einen Kipp-Schalter.

  • GP16 ist hoch, wenn der Kipp-Schalter aufrecht ist; niedrig, wenn gekippt.

Verkabelung

wiring_game_10_second

Code

Bemerkung

  • Öffnen Sie die Datei 7.5_game_10_second.py im Pfad kepler-kit-main/micropython oder kopieren Sie diesen Code in Thonny. Klicken Sie dann auf „Aktuelles Skript ausführen“ oder drücken Sie einfach F5.

  • Vergessen Sie nicht, den „MicroPython (Raspberry Pi Pico)“-Interpreter in der unteren rechten Ecke auszuwählen.

  • Für detaillierte Anleitungen verweisen wir auf Code direkt öffnen und ausführen.

import machine
import time

SEGCODE = [0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f]

sdi = machine.Pin(18,machine.Pin.OUT)
rclk = machine.Pin(19,machine.Pin.OUT)
srclk = machine.Pin(20,machine.Pin.OUT)

placePin = []
pin = [10,13,12,11]
for i in range(4):
    placePin.append(None)
    placePin[i] = machine.Pin(pin[i], machine.Pin.OUT)

def pickDigit(digit):
    for i in range(4):
        placePin[i].value(1)
    placePin[digit].value(0)

def clearDisplay():
    hc595_shift(0x00)

def hc595_shift(dat):
    rclk.low()
    time.sleep_us(200)
    for bit in range(7, -1, -1):
        srclk.low()
        time.sleep_us(200)
        value = 1 & (dat >> bit)
        sdi.value(value)
        time.sleep_us(200)
        srclk.high()
        time.sleep_us(200)
    time.sleep_us(200)
    rclk.high()
    #time.sleep_us(200)


def display(num):

    pickDigit(0)
    hc595_shift(SEGCODE[num%10])

    pickDigit(1)
    hc595_shift(SEGCODE[num%100//10])

    pickDigit(2)
    hc595_shift(SEGCODE[num%1000//100]+0x80)

    pickDigit(3)
    hc595_shift(SEGCODE[num%10000//1000])


tilt_switch = machine.Pin(16,machine.Pin.IN)

count_flag = False

def shake(pin):
    global timeStart,count_flag
    count_flag = not count_flag
    if count_flag == True:
        timeStart = time.ticks_ms()

tilt_switch.irq(trigger=machine.Pin.IRQ_RISING, handler=shake)


count = 0
while True:
    if count_flag == True:
        count = int((time.ticks_ms()-timeStart)/10)
    display(count)

Die 4-stellige 7-Segment-Anzeige beginnt mit dem Zählen, sobald Sie den Zauberstab schütteln, und stoppt, wenn Sie ihn erneut schütteln. Sie gewinnen, wenn es Ihnen gelingt, den angezeigten Zählstand bei 10,00 zu halten. Das Spiel wird mit einem weiteren Schütteln fortgesetzt.