7.10 Einparkhilfe¶
Dieses Projekt nutzt eine LED, einen Summer und ein Ultraschallmodul, um ein Einparkassistenzsystem zu realisieren. Es lässt sich auf ein ferngesteuertes Auto setzen, um den realen Vorgang des Einparkens in eine Garage zu simulieren.
Benötigte Komponenten
Für dieses Projekt werden die folgenden Komponenten benötigt.
Es ist definitiv praktisch, ein ganzes Set zu kaufen. Hier ist der Link:
Bezeichnung |
IN DIESEM SET ENTHALTENE ARTIKEL |
LINK |
---|---|---|
Kepler-Set |
450+ |
Sie können die Teile auch einzeln über die untenstehenden Links erwerben.
SN |
KOMPONENTE |
ANZAHL |
LINK |
---|---|---|---|
1 |
1 |
||
2 |
Micro-USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
1 (S8050) |
||
6 |
2 (1KΩ, 220Ω) |
||
7 |
Passiver Summer |
1 |
|
8 |
1 |
||
9 |
1 |
Schaltplan
Verkabelung
Code
Bemerkung
Öffnen Sie die Datei
7.10_reversing_aid.py
im Verzeichniskepler-kit-main/micropython
oder kopieren Sie diesen Code in Thonny und klicken Sie dann auf „Aktuelles Skript ausführen“ oder drücken Sie einfach F5.Vergessen Sie nicht, im unteren rechten Eck den Interpreter „MicroPython (Raspberry Pi Pico)“ auszuwählen.
Für detaillierte Anleitungen siehe Code direkt öffnen und ausführen.
import machine
import time
import _thread
buzzer = machine.Pin(15, machine.Pin.OUT)
led = machine.Pin(14, machine.Pin.OUT)
TRIG = machine.Pin(17,machine.Pin.OUT)
ECHO = machine.Pin(16,machine.Pin.IN)
dis = 100
def distance():
timeout=10000*5/340
TRIG.low()
time.sleep_us(2)
TRIG.high()
time.sleep_us(10)
TRIG.low()
timeout_start = time.ticks_ms() # For timeout, re-read distance
while not ECHO.value():
waiting_time = time.ticks_ms()
if waiting_time - timeout_start > timeout:
return -1
time1 = time.ticks_us()
while ECHO.value():
waiting_time = time.ticks_ms()
if waiting_time - timeout_start > timeout:
return -1
time2 = time.ticks_us()
during = time.ticks_diff(time2 ,time1)
return during * 340 / 2 / 10000
def ultrasonic_thread():
global dis
while True:
dis = distance()
_thread.start_new_thread(ultrasonic_thread, ())
def beep():
buzzer.value(1)
led.value(1)
time.sleep(0.1)
buzzer.value(0)
led.value(0)
time.sleep(0.1)
intervals = 10000000
previousMills=time.ticks_ms()
time.sleep(1)
while True:
if dis<0:
pass
elif dis <= 10:
intervals = 300
elif dis <= 20:
intervals =500
elif dis <=50:
intervals =1000
else:
intervals = 2000
if dis!=-1:
print ('Distance: %.2f' % dis)
time.sleep_ms(100)
currentMills=time.ticks_ms()
if time.ticks_diff(currentMills,previousMills)>=intervals:
beep()
previousMills=currentMills
Sobald das Programm läuft, wird der Ultraschallsensor kontinuierlich die Entfernung zum vor Ihnen befindlichen Hindernis messen, und Sie können den genauen Entfernungswert in der Shell sehen.
Je nach Entfernungswert ändern die LED und der Summer die Frequenz ihres Blinkens und Piepsens und signalisieren so die Annäherung an das Hindernis.
Im Artikel 6.1 Abstandsmessung wurde erwähnt, dass das Programm pausiert, während der Ultraschallsensor arbeitet.
Um die Timing von LED und Summer nicht zu beeinträchtigen, haben wir in diesem Beispiel einen separaten Thread für die Entfernungsmessung erstellt.