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

58                                                                                     R.D. Albu



                  pasare.setBeak(0,100,0)

                  pasare.setTail(”all”,0,100,0)


                sleep(3)

                pasare.stopAll()

                Pentru un comportament mai put , in previzibil, se pot ˆıncorpora unele variat , ii, astfel ˆıncˆat
            robotul s˘a fac˘a ceva us , or diferit de fiecare dat˘a cˆand ruleaz˘a programul, putˆandu-se utiliza
            un generator de numere aleatorii, care este o funct , ie care alege un num˘ar aleatoriu de fiecare
                                     ˆ
            dat˘a cˆand este apelat. In Python, se utilizeaz˘a randint() pentru a alege un ˆıntreg, aceasta
            avˆand doi parametri care definesc intervalul de numere interesat (funct , ia trebuie importat˘a
            din biblioteca random). Biblioteca random include s , i alte generatoare de numere aleatorii. De
                                                  a
            exemplu, random.random() genereaz˘ un num˘ar aleator ˆıntre 0.0 s , i 1.0 (f˘ar˘ a include 1.0).
                                                                                         a
                 while        (pasare.getLight(’L’)<prag)  or  while       (pasare.getLight(’L’)<prag)   or
                 (pasare.getLight(’R’)<prag):                  (pasare.getLight(’R’)<prag):
                   for i in range(4): #pornes , te fiecare dintre luminile cozii  for  i  in  range(4):  #pornes , te  fiecare  dintre
                 la o culoare aleatoare diferit˘ a             luminile  cozii  la  o  culoare  aleatoare  diferit˘a  pa-
                 pasare.setTail(i+1,random.randint(0,100),     sare.setTail(i+1,random.randint(0,100),
                 random.randint(0,100), random.randint(0,100))  random.randint(0,100), random.randint(0,100))
                   sleep(1)                                     sleep(5*random.random())
                 pasare.stopAll()                              bird.stopAll()

                while (pasare.getLight(’L’)>prag) or (pasare.getLight(’R’)>prag):

                  pasare.setBeak(100,0,0)

                                            ˆ
                  bird.setMotors(-50,50) # Invˆartire

                                                                 a
                  sleep(2*random.random()) #pentru o perioad˘ aleatoare de timp
                  pasare.setMotors(0,0) # Stop

                  pasare.setBeak(0,100,0)

                  sleep(1)

                pasare.stopAll()

                Finch cont , ine doi senzori de linie, care sunt senzori infraros , ii care emit radiat , ii infraros , ii s , i
                                         a
                    a
                                                                                                   a
            m˘asoar˘ cantitatea reflectat˘ de suprafat , a de sub Finch. Metoda getLine() returneaz˘ valoarea
            m˘asurat˘a de un senzor de linie de la 0 la 100 (f˘ar˘a unit˘at , i). Aceast˘a metod˘a necesit˘a un
                                         a
            parametru, un s , ir care indic˘ interesul pentru senzorul din dreapta sau stˆanga.
                 while not pasare.getButton(’A’):              pasare.setMotors(30,30)
                   if        (pasare.getLine(’L’)<prag)    or  while    not      (pasare.getLine(’L’)<prag  or
                 (pasare.getLine(’R’)<prag):                   pasare.getLine(’R’)<prag):
                     print(”negru”)                            pass
                   else:                                       pasare.stop()
                     print(”alb”)

                Cea mai obis , nuit˘a utilizare a senzorilor de linie este de a urm˘ari o linie. Pentru a urm˘ari
            partea dreapt˘a a unei linii negre cu senzorul de linie dreapt˘a, robotul ar trebui s˘a vireze la
                                                                  a
            dreapta atunci cˆand este peste linia neagr˘ (mai put , in˘ radiat , ie infraros , ie reflectat˘a) s , i la stˆanga
                                                      a
                                              a
                                                         a
            atunci cˆand este peste o suprafat , ˘ luminoas˘ (mai mult˘a radiat , ie infraros , ie reflectat˘a).
   53   54   55   56   57   58   59   60   61   62   63