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:
   52   53   54   55   56   57   58   59   60   61   62