Dieser Artikel richtet sich an alle, die mit ev3 in Python arbeiten möchten. Dieses Mal möchte ich verschiedene Operationen mit dem Farbsensor durchführen.
◯ ev3 (Tank), Farbsensor, Berührungssensor ◯ PC (VS-Code) ◯ bluetooth ◯ microSD ◯ Material (Es wird empfohlen, fortzufahren, während Sie dies ansehen.)
colorsensor00.py
#!/usr/bin/env python3
from ev3dev2.sensor.lego import ColorSensor
from ev3dev2.sound import Sound
cs = ColorSensor()
spkr = Sound()
while True:
if cs.color == 5:
spkr.speak('Red is detected')
** Punkt **: Ein Programm mit der Meldung "Rot wurde erkannt", wenn der Farbsensor auf Rot reagiert.
** Punkt **: Farben werden im Voraus entsprechend den Zahlen definiert, und Farben werden im Programm als Zahlen behandelt.
color Color detected by the sensor, categorized by overall value. • 0: No color • 1: Black • 2: Blue • 3: Green • 4: Yellow • 5: Red • 6: White • 7: Brown
colorsensor01.py
#!/usr/bin/env python3
from ev3dev2.motor import MoveTank,OUTPUT_A,OUTPUT_B
from ev3dev2.sensor.lego import ColorSensor
tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
cs = ColorSensor()
while True:
if cs.reflected_light_intensity < 15:
tank_drive.on(10,0)
else:
tank_drive.on(0,10)
** Punkt **: Ein Programm, das abhängig vom vom Farbsensor erfassten Lichtreflexionsgrad entlang der Linie ausgeführt wird.
** Punkt **: Linienspur Das Lichtreflexionsvermögen unterscheidet sich zwischen Schwarz und Weiß. Weiß reflektiert das Licht gut und Schwarz reflektiert weniger Licht. Es ist eine übliche Linienspur, die ausgeführt wird, während eine schwarze Linie auf einem weißen Feld erkannt wird, indem das unterschiedliche Reflexionsvermögen ausgenutzt wird.
colorsensor02.py
#!/usr/bin/env python3
from ev3dev2.motor import MoveTank,OUTPUT_A,OUTPUT_B
from ev3dev2.sensor.lego import ColorSensor
from ev3dev2.sensor import INPUT_1,INPUT_2
tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
cs_1 = ColorSensor(INPUT_1)
cs_2 = ColorSensor(INPUT_2)
while True:
if cs_1.reflected_light_intensity > 15:
if cs_2.reflected_light_intensity > 15:
tank_drive.on(10,10)
else:
tank_drive.on(10,0)
else:
if cs_2.reflected_light_intensity > 15:
tank_drive.on(0,10)
else:
tank_drive.on(-10,10)
** Punkt **: Linienverfolgungsprogramm mit zwei Farbsensoren
** Punkt **: Programmbild
cs_1 erkennt Weiß und cs_2 erkennt Weiß: Fahren Sie geradeaus cs_1 erkennt Weiß und cs_2 erkennt Schwarz: Gehen Sie nach rechts cs_1 erkennt schwarz und cs_2 erkennt weiß: gehe nach links cs_1 erkennt Schwarz und cs_2 erkennt Schwarz: Im laufenden Betrieb drehen (nach Linien suchen)
colorsensor03.py
#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A, OUTPUT_B, MoveTank, SpeedPercent, follow_for_ms
from ev3dev2.sensor.lego import ColorSensor
tank = MoveTank(OUTPUT_A, OUTPUT_B)
tank.cs = ColorSensor()
try:
tank.follow_line(
kp=11.3, ki=0.05, kd=3.2,
speed=SpeedPercent(30),
follow_for=follow_for_ms,
ms=4500
)
except LineFollowErrorTooFast:
tank.stop()
raise
** Punkt **: Linienverfolgungsprogramm mit PID-Regelung
** Punkt **: PID-Regelung Die PID-Regelung ist eine Art Rückkopplungsregelung, die den Eingangswert so regelt, dass sich der Ausgangswert dem Zielwert nähert.
Ausgabewert: Lichtreflexion Zielwert: Lichtreflexion in der Nähe der Linie Eingabewert: Motordrehzahl (Bei Linienverfolgung mit einem Farbsensor)
Point : follow_line(kp, ki, kd, speed, target_light_intensity=None, follow_left_edge=True, white=60,off_line_count_max=20, sleep_time=0.01, follow_for=
PID line follower kp, ki, and kd are the PID constants.
** Punkt **: Referenzartikel zur PID-Regelung
PID-Regelung des Line Trace Cars
** Punkt **: Referenzartikel zur Behandlung von Python-Ausnahmen
Behandlung von Python-Ausnahmen (versuchen Sie es, außer, sonst, endlich)
colorsensor04.py
#!/usr/bin/env python3
from ev3dev2.sensor.lego import ColorSensor,TouchSensor
from ev3dev2.display import Display
cs = ColorSensor()
ts = TouchSensor()
dsp = Display()
color_list = [1,2,4,5]
while True:
dsp.update()
if ts.is_pressed:
if cs.color in color_list:
dsp.text_pixels(cs.color_name + ' is detected',True,0,52,font = 'helvB' + '12')
else:
dsp.text_pixels('No such color in the color_list',True,0,52,font = 'helvB' + '10')
else:
dsp.text_pixels('please set the color !!!!',True,0,52,font = 'helvB' + '12')
** Punkt **: Halten Sie den Berührungssensor gedrückt und halten Sie die Farbe gedrückt. Wenn die Farbe, die Sie zu diesem Zeitpunkt halten, eine Farbe ist, die in color_list vorhanden ist
Point :
python
Verarbeitung `` `
** Wenn Element a in b enthalten ist (diesmal auflisten), führen Sie die Verarbeitung aus **
Referenzartikel
[Beurteilen Sie, ob eine Liste usw. ein bestimmtes Element mit Pythons Operator enthält]
(https://note.nkmk.me/python-in-basic/)
### 1-5. Ein Programm, das Farben in einer Liste speichert
#### **`colorsensor05.py`**
```py
#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveTank
from ev3dev2.sensor.lego import ColorSensor,TouchSensor
from ev3dev2.sound import Sound
from time import sleep
cs = ColorSensor()
ts = TouchSensor()
spkr = Sound()
tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
color_list = []
for i in range(4):
ts.wait_for_bump()
sleep(0.1)
color_list.append(cs.color)
spkr.speak(cs.color_name)
for c in color_list:
sleep(1)
if c == 1:
spkr.speak('turn left')
tank_drive.on_for_rotations(0,50,2)
if c == 2:
spkr.speak('go forward')
tank_drive.on_for_rotations(50,50,2)
if c == 4:
spkr.speak('turn right')
tank_drive.on_for_rotations(50,0,2)
if c == 5:
spkr.speak('go back')
tank_drive.on_for_rotations(-10,-10,2)
** Punkt **: Fügen Sie der leeren color_list
die Farbe hinzu, die beim Drücken des Berührungssensors hochgehalten wurde.
Nach dem Hinzufügen wird der mit der Farbe verknüpfte Prozess in der Reihenfolge vom Anfang der Liste ausgeführt.
Point : append() Sie können am Ende der Liste Elemente hinzufügen
Referenzartikel Anhängen, erweitern, einfügen, um einer Liste (einem Array) in Python ein Element hinzuzufügen
Danke fürs Lesen! !! Nächstes Mal möchte ich über Ultraschallsensoren schreiben!
Ich möchte einen besseren Artikel machen ◯ Das ist leichter zu verstehen ◯ Das ist schwer zu verstehen ◯ Das ist falsch ◯ Ich möchte, dass Sie hier mehr erklären Wir freuen uns über Ihre Meinungen und Vorschläge.
Recommended Posts