i droid instrukcja83b


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


Wyszukiwarka