Page 57 - MATINF Nr. 9-10
P. 57
a
Deprinderea elementelor fundamentale robotic˘ s , i de programare ˆın Python folosind robotul Finch 2.0 57
while pasare.getDistance() < 30: # distanta mai mica de while (pasare.getDistance()>30): #distant , a mai mare de 30
30 pasare.setMotors(50,50) # ˆınainte
pasare.setBeak(100,0,0) # Red pasare.stop()
pasare.setBeak(0,100,0) # Verde
sleep(1)
pasare.stopAll()
while pasare.getDistance() > 20:
pasare.setTail(”all”,0,0,100)
sleep(3)
pasare.setTail(”all”,100,0,100)
sleep(3)
pasare.stopAll()
Se poate plasa o structur˘ de control ˆın interiorul alteia, care se numes , te imbricare, ce poate
a
ajuta la crearea unor programe mai complexe.
while not pasare.getButton(’A’): #Repeta pˆan˘ cˆand buto- while not pasare.getButton(’A’): #Repeta pˆan˘a cˆand buto-
a
nul A este ap˘asat nul A este ap˘asat
if (pasare.getDistance() > 30): # Niciun obstacol if (pasare.getDistance() > 30): # Niciun obstacols
ˆ
bird.setTail(”all”,0,100,0) pasare.setMotors(50,50) # Inainte
else: else:
ˆ
bird.setTail(”all”,100,0,0) pasare.setMove(’B’,10,50) # Inapoi
pasare.stopAll() pasare.setTurn(’R’,120,50) # Intoarcere
ˆ
pasare.stopAll()
a
a
Metoda getLight() returneaz˘ valoarea m˘asurat˘ de un senzor de lumin˘ de la 0 la 100 (f˘ar˘
a
a
unit˘t , i). Aceast˘ metod˘ necesit˘ un parametru, un s , ir care indic˘ dac˘ este vizat senzorul din
a
a
a
a
a
a
a
dreapta sau din stˆanga. Deoarece getLight() returneaz˘ o valoare ˆıntre 0 s , i 100, se poate apela
aceast˘ metod˘ ˆıntr-o metod˘ Finch care necesit˘a un parametru de la 0-100.
a
a
a
while not bird.getButton(’A’): while not pasare.getButton(’A’): while not (pasare.getButton(’A’) or
pasare.setBeak(0,bird.getLight(’R’),0) pasare.setBeak(0,100 - pa- pasare.getButton(’B’)):
# Control cioc cu senzorul drept sare.getLight(’R’),0) pasare.setMotors(pasare.getLight(’R’),
pasare.setTail(”1”,0,0,bird.getLight(’L’)) # Control cioc cu senzorul drept pasare.getLight(’L’))
pasare.setTail(”2”,0,0,bird.getLight(’L’)) pasare.setTail(”all”,0,0,100 - pasare.stopAll()
bird.stopAll() pasare.getLight(’L’))
sleep(1) bird.stopAll()
sleep(1)
Se poate utiliza senzorul de lumin˘ pentru a controla comportamentul Finch cu o instruct , iune
a
a
if-else sau o bucl˘ while.
prag = 10 while (pasare.getLight(’L’)>prag)and
while (pasare.getLight(’L’)>prag):#Cˆat timp senzorul stˆang detec- (pasare.getLight(’R’)>prag): #cˆat timp e lu-
teaz˘a lumin˘a min˘a
pasare.setTail(”all”,100,0,0) pasare.setMotors(50,50)
sleep(0.1) pasare.stopAll()
pasare.setTail(”all”,0,0,0)
sleep(0.1)
if (pasare.getLight(’L’)<prag) and (pasare.getLight(’R’)<prag): # cˆat timp ambele detec-
a
teaz˘ ˆıntuneric
pasare.setBeak(100,0,0)
pasare.setTail(”all”,100,0,0)
pasare.setMotors(100,0)
else: