Cet article s'adresse à tous ceux qui souhaitent travailler avec ev3 en Python. Cette fois, je souhaite effectuer diverses opérations à l'aide du capteur de couleur.
◯ ev3 (réservoir), capteur de couleur, capteur tactile ◯ PC (code VS) ◯ bluetooth ◯ microSD ◯ Material (Il est recommandé de continuer en regardant ceci.)
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')
** Point **: Un programme qui dit "Le rouge a été détecté" lorsque le capteur de couleur répond au rouge.
** Point **: Les couleurs sont définies à l'avance en fonction des nombres, et les couleurs sont traitées comme des nombres dans le programme.
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)
** Point **: programme qui s'exécute le long de la ligne, en fonction de la réflectance lumineuse détectée par le capteur de couleur.
** Point **: trace de ligne La réflexion de la lumière est différente entre le noir et le blanc. Le blanc réfléchit bien la lumière et le noir reflète moins la lumière. C'est une trace de ligne courante à exécuter tout en détectant une ligne noire sur un champ blanc en tirant parti de la réflectance différente.
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)
** Point **: programme de trace de ligne utilisant deux capteurs de couleur
** Point **: image du programme
cs_1 détecte le blanc et cs_2 détecte le blanc: allez tout droit cs_1 détecte le blanc et cs_2 détecte le noir: aller à droite cs_1 détecte le noir et cs_2 détecte le blanc: allez à gauche cs_1 détecte le noir et cs_2 détecte le noir: rotation à la volée (recherche de lignes)
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
** Point **: programme de traçage de ligne utilisant le contrôle PID
** Point **: contrôle PID Le contrôle PID est un type de contrôle de rétroaction qui contrôle la valeur d'entrée de sorte que la valeur de sortie s'approche de la valeur cible.
Valeur de sortie: réflexion de la lumière Valeur cible: réflexion de la lumière près de la ligne Valeur d'entrée: vitesse de rotation du moteur (Lors du traçage de ligne avec un capteur de couleur)
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.
** Point **: article de référence sur le contrôle PID
Contrôle PID de la voiture de trace de ligne
** Point **: article de référence sur la gestion des exceptions python
Gestion des exceptions Python (essayez, sauf, sinon, enfin)
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')
** Point **: maintenez le capteur tactile enfoncé et maintenez la couleur. Si la couleur que vous tenez à ce moment-là est une couleur qui existe dans color_list
Point :
python
Traitement `` ''
** Si l'élément a est inclus dans b (listez cette fois), exécutez le traitement **
Article de référence
[Jugez si une liste etc. contient un élément spécifique avec l'opérateur Python in]
(https://note.nkmk.me/python-in-basic/)
### 1-5. Un programme qui enregistre les couleurs dans une liste
#### **`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)
** Point **: Ajoutez la couleur qui était suspendue lorsque le capteur tactile a été pressé à la color_list
vide.
Lorsque l'ajout est terminé, le traitement associé à la couleur est exécuté dans l'ordre à partir du haut de la liste.
Point : append() Vous pouvez ajouter des éléments à la fin de la liste
Article de référence Ajouter, étendre, insérer pour ajouter un élément à une liste (tableau) en Python
Merci pour la lecture! !! La prochaine fois, j'aimerais écrire sur les capteurs à ultrasons!
Je veux faire un meilleur article ◯ C'est plus facile à comprendre ◯ C'est difficile à comprendre ◯ C'est faux ◯ Je veux que vous expliquiez plus ici Nous apprécions vos opinions et suggestions.
Recommended Posts