KROK PO KROKU TESTOWANIE BOCZNYCH TESTOWANIE BOCZNYCH CZUJNIKÓW PODCZERWIENI CZUJNIKÓW PODCZERWIENI Od tego momentu dzi´ki odpowiedniemu O d t e g o m o m e n t u d z i ´ k i o d p o w i e d n i e m u PRZYK¸ADOWY KOD programowi do testowania napisanemu p r o g r a m o w i d o t e s t o w a n i a n a p i s a n e m u Kod C-like programu test_infrared.clike. Zachowanie infra- w j´zyku C-like b´dzie moÅ»na juÅ» w j ´ z y k u C - l i k e b ´ d z i e m o Å» n a j u Å» red monitoruje sygna" odbierany z wejĘç z"Ä…cza zasobnika pod"Ä…czonych do obwodu p"yty g"ównej, tak by sprawdziç wypróbowaç czujniki boczne. w y p r ó b o w a ç c z u j n i k i b o c z n e . obecnoĘç lub brak przedmiotów odbijajÄ…cych promienie wytwarzane przez przekaÄ™niki. Aby sprawdziç wykorzysta- nie cyfrowych wejĘç i wyjĘç w programowaniu, si´gnij po zi´ki instrukcjom przedstawionym na poprzednich stosowny rozdzia" zasobów znajdujÄ…cych si´ w dokumen- stronach wiesz juÅ», jak zbudowaç obwód czujników tacji technicznej na trzeciej p"ycie CD-ROM do"Ä…czonej do Dbocznych z elementów zestawu p"ytki testowej. No- numeru 66. we umiej´tnoĘci sensoryczne, jakimi charakteryzuje si´ taki KOD PROGRAMU TEST_INFRARED obwód (czyli moÅ»liwoĘç widzenia z boku, która s"uÅ»y do wyodr´bniania przedmiotów), robot b´dzie móg" wykorzy- #include c-like.h staç dzi´ki odpowiedniemu oprogramowaniu jego nowe #include robot.h wersje pojawiÄ… si´ na czwartej p"ycie CD-ROM. Na razie jed- nak moÅ»na testowaç dzia"anie czujników na promienie pod- declare( behavior(infrared) ); czerwone za pomocÄ… odpowiedniego programu napisanego define( behavior(Main) ) { w j´zyku C-like, którego kod zosta" pokazany w ramce obok. unsigned char buf; //konfiguruje GPIO1 i GPIO2 jako wejĘcia ad interrupt TESTOWANIE CZUJNIKÓW // GPIO3 i GPIO4 jako wyjĘcia Test moÅ»na przeprowadziç, uruchamiajÄ…c program C-like (pod buf = 0x3C; t e s t _ i n f r a r e d . c l i k e nazwÄ… test_infrared.clike), zawierajÄ…cy pokazany obok kod. i2c_write(44,7,&buf,1); Po uruchomieniu program b´dzie kaza" robotowi reagowaç na start(infrared); pojawianie si´ przeszkód specjalne wyszukiwacze b´dÄ… } mówiç lewa , jeĘli przeszkoda znajduje si´ po lewej stronie robota, i prawa , gdy b´dzie je widaç po stronie prawej. Od- define( behavior(infrared) ) { unsigned char buf; bywa si´ to poprzez odczyt wartoĘci na wejĘciach gniazd za- sobnika, do których to wejĘç pod"Ä…czone sÄ… same odbiorniki. // ustawia GPIO3 i GPIO4 jako wyjĘcia oscylacyjne Pomówmy teraz chwil´ o szczegó"ach bardziej technicznych buf = 0X0C; i2c_write(44,15,&buf,1); m a i n w zachowaniu main skonfigurowane jest GPIO1 (port 1, czwarte gniazdo od do"u z"Ä…cza zasobnika) i GPIO2 (port 2, msleep(50); piÄ…te od do"u), a takÅ»e wejĘcia przerwaniowe (odpowiednio dla odbiornika prawego lub lewego), dostarczajÄ…ce niskÄ… war- // wy"Ä…cza wyjĘcia GPIO3 i GPIO4 buf = 0X00; toĘç, jeĘli wykryto przeszkod´, i wysokÄ… , jeĘli do tego nie do- i2c_write(44,15,&buf,1); i n f r a r e d sz"o. Z kolei zachowanie infrared aktywuje w sposób cyklicz- ny GPIO3 (piÄ…te gniazdo od góry) i GPIO4 (czwarte od góry) // odczytuje wejĘcia cyfrowe i2c_read(44,6,&buf,1); jako wyjĘcia fali prostokÄ…tnej aktywujÄ…cej przekaÄ™niki, aby na- st´pnie odczytaç wartoĘci GPIO1 i GPIO2. Warto wiedzieç, Å»e // czy na GPIO1 jest poziom niski, jeĘli tak przeszkoda jest dopiero zawarta na czwartej p"ycie CD-ROM wersja edytora po lewej stronie if (!(buf & 0x01)) say_phrase(23); Visual C-like umoÅ»liwi bardziej bezpoĘrednie zarzÄ…dzanie czuj- nikami bocznymi. Wykorzysta do tego schematy blokowe. // czy na GPIO2 jest poziom niski, jeĘli tak przeszkoda jest po prawej stronie if (!(buf & 0x02)) say_phrase(24); msleep(100); } 12