Page 59 - MATINF Nr. 9-10
P. 59

a
            Deprinderea elementelor fundamentale robotic˘ s , i de programare ˆın Python folosind robotul Finch 2.0 59



                 while not pasare.getButton(’A’):              while not pasare.getButton(’A’):
                   if (pasare.getLine(’R’)<prag): # dac˘a este peste negru  if (pasare.getDistance()<20): # Obstacle!
                     pasare.setMotors(20,0) # ˆıntoarce dreapta   pasare.setMotors(0,0) # Stop
                   else:                                        else: # altfel urmeaz˘ linia
                                                                                a
                     pasare.setMotors(0,20) # ˆıntoarce stˆanga   if (pasare.getLine(’R’)<prag): # peste negru
                 pasare.stop()                                      pasare.setMotors(20,0) # ˆıntoarce dreapta
                                                                  else:
                                                                    pasare.setMotors(0,20) # ˆıntoarce stˆanga
                                                               pasare.stop()





                Prin utilizarea ambilor senzori de linie, Finch poate detecta locurile ˆın care se ramific˘ o cale.
                                                                                                     a
            Cˆand Finch ajunge la punctul de ramificat , ie ˆıntr-o cale, ambii senzori de linie vor fi peste negru.







                 while not pasare.getButton(’A’):              while not pasare.getButton(’A’):
                   if        (pasare.getLine(’R’)<prag)   and  if         (pasare.getLine(’R’)<prag)     and
                 (pasare.getLine(’L’)>prag):  #  dreapta  peste  negru  (pasare.getLine(’L’)>prag):  #dreptul  peste  negru  s , i
                 s , i stˆanga peste alb                       stˆangul peste alb
                     pasare.setMotors(20,0) # ˆıntoarce dreapta   pasare.setMotors(20,0) # ˆıntoarce dreapta
                   elif      (pasare.getLine(’R’)>prag)   and   elif        (pasare.getLine(’R’)>prag)   and
                 (pasre.getLine(’L’)<prag):  #  dreapta  peste  alb  s , i  (pasare.getLine(’L’)<prag):  #  dreptul  peste  alb  s , i
                 stˆanga peste negru pasare.setMotors(0,20) #ˆıntoarce  stˆangul peste negru
                 stˆanga                                          pasare.setMotors(0,20) # ˆıntoarce stˆanga
                   else: # altfel merge ˆınainte                elif        (pasare.getLine(’R’)<prag)   and
                     pasare.setMotors(20,20)                   (pasare.getLine(’L’)<prag): # ambele peste negru
                 pasare.stop()                                    pasare.setMotors(0,0) # Stop
                                                                  pasare.setTurn(’L’,45,50) # ˆıntoarcere spre stˆanga
                                                                  if (pasare.getDistance()<60): # un obstacol
                                                                    pasare.setTurn(’R’,90,50) # drumul din dreapta
                                                                  pasare.setMove(’F’,5,50) # trecere peste intersect , ie
                                                                else: # ambele peste alb
                                                                  pasare.setMotors(20,20) # mergere ˆınainte
                                                               pasare.stop()






                Pentru a defini o funct , ie, se utilizeaz˘a cuvˆantul cheie def, urmat cum se dores , te s˘a fie
            denumit˘a funct , ia. Numele nu trebuie s˘a cont , in˘a spat , ii sau semne de punctuat , ie. Numele este
            urmat de o pereche de paranteze s , i de dou˘a puncte. Toate declarat , iile indentate dup˘a dou˘a
                                                 a
            puncte sunt cont , inutul funct , iei. Dup˘ ce se defines , te o funct , ie, poate fi utilizat numele pentru a
                                                        a
                                                                                a
            apela funct , ia respectiv˘a. Funct , iile permit s˘ reutilizarea cu us , urint , ˘ a codului. Funct , iile sunt s , i
            un instrument de abstractizare, care este ideea c˘ se pot face programele mai us , or de utilizat s , i
                                                             a
            de ˆınt , eles prin plasarea grupurilor de act , iuni autonome ˆın cadrul funct , iilor. Un programator
            poate utiliza apoi funct , iile f˘ar˘ a ˆınt , elege detaliile codului din interiorul lor!
                                           a




                 # funct , ie trasare p˘atrat                  # functie trasare cerc
                 def trasarePatrat():                          def trasareCerc():
                   for i in range(4):                           pasare.setMotors(40,80)
                     pasare.setMove(’F’,15,50)                  sleep(4)
                     pasare.setTurn(’R’,90,50)                  pasare.setMotors(0,0)
                 # trasarePatrat() # apel funct , ie           # trasareCerc() # apel funct , ie
                   for i in range(6):                          for i in range(8):
                     trasarePatrat()                            drawCircle()
                   pasare.setTurn(’L’,60,50)                    bird.setTurn(’R’,45,50)
   54   55   56   57   58   59   60   61   62   63   64