User manual
Példa:
A „Fahr los“ jelsorozatot kell fogadni. Meg kell győződni arról, hogy az összes jel megérkezett az ASURO-ra, mielőtt tovább
csinálhatná. Megjegyzés: Csak hat jel érkezik. Nem történik olyan vizsgálat, ami azt vizsgálja, hogy valójában a ‘Fahr
los’ érkezett meg.
#include “asuro.h”
int main(void) {
char daten[8]; //Memória felkészítése
Init();
SerRead(daten,8,0); // Adatok beolvasása
MotorDir(FWD,FWD);
MotorSpeed(120,120);
while(1); // Végtelen ciklus
return 0;
}
.
.
9..2.10. void LineData(unsigned int *data)
Ezzel az ASURO alján lévő fotótranzisztorokat lehet kiolvasni. A címet egy memóriatartományra kell átadni, ami két egész
értéket tud felvenni. Ez a függvény ezután a címet feltölti a két fotótranzisztor A/D váltó értékeivel. Az első egész érték a bal
oldali (T9) váltó értékét, a második egész érték a jobb oldali fotótranzisztorét tartalmazza (T10). A maximális fényerő ’1023’
értéknek, a sötét ’0’ értéknek felel meg. A két extrém értéket normál esetben nem érik el, a mért érték valahol a kettő között
mozog.
Példa:
A fotótranzisztorok kiolvasása (T9, T10)
unsigned int data[2]; //Memória előkészítése
.
.
LineData(data);
data[0] a bal oldali fotótranzisztor értékét tartalmazza (T9).
data[1] a jobb oldali fotótranzisztor értékét tartalmazza (T10).
Igen-igen, ezúttal ismét teljes programban:
#include “asuro.h” // Vonalkövetés a legegyszerűbb módon
int main(void) {
unsigned int data[2]; //Memória előkészítése
Init();
FrontLED(ON); // Vonalmegvilágítás bekapcsolása
MotorDir(FWD,FWD); // Mindkét motor előre
while(1){ // Végtelen ciklus, az AZURO-nak tetszőleges
// hosszan egy vonalat kell követnie
LineData(data); // a fotótranzisztorok aktuális
// fényerő értékének kiolvasása
if (data [0] > data [1] ) // ha a bal világosabb mint a jobb...
{MotorSpeed(200,150);} // ... akkor a balnak több gázt adni...
else
{MotorSpeed(150,200);} // ... egyébként a jobbnak több gázt adni!
}
return 0;
}
9..2.11. void OdometrieData(unsigned int *data)
A reflex fénysorompót értékeli ki. A világítódiódákat (D13, D14) aktiválja és a fotótranzisztorok (T11, T12) A/D váltó értékeivel
tér vissza. Mint ahogy a LineData () függvényben, két egész számos memóriatartományt kell átadni, amit aztán a függvény
megtölt. Az első egész érték a bal oldali (T11) váltó értékét, a második egész érték a jobb oldali fotótranzisztorét tartalmazza
(T12). A maximális fényerő megfelel a ’0’ értéknek, a sötét megfelel az ’1023’ értéknek 5. A két extrém értéket normál esetben
nem érik el, a mért érték valahol a kettő között mozog.
Példa:
A reflex fénysorompó kiolvasása
unsigned int data[2]; //Memória előkészítése
.
.
OdometrieData(data);
data[0] tartalmazza a bal oldali fotótranzisztor értékét (T11)
data[1] tartalmazza a jobb oldali fotótranzisztor értékét (T12)
A félreértések elkerülése érdekében: Az OdomertieData() nem olvassa aki közvetlenül a fordulatszámot, hanem csak a a
fénysorompó adó korongjának aktuális fényerejét. A fényerő értékek kiértékelése, a világosság-sötétség átmenet kiszámolása
és ebből a kerék fordulatszámának mghatározása a programozó feladata!
5
Hogy a vegyértékek pontosan különböznek, hogyan kezeli kapcsolástechnikailag a fotótranzisztoroknál a vonalkövetést és a
kapcsolás egyszerűségénél az engedélyezést.
9.2.12. unsigned char PollSwitch(void)
A gombok (K1-K6) kiértékelése. Ez a függvény egy bájtot szállít. Ebben a bájtban van az az információ, hogy melyik gomb lett
megnyomva. Az 1. gomb az 6. bitet foglalja,
a 6. gomb a 0.
bitet.
Bit0 (1) -> K6
Bit1 (2) -> K5
Bit2 (4) -> K4
Bit3 (8) -> K3
Bit4 (16) -> K2
Bit5 (32) -> K1
Ha tehát az 1, 3 és 5 gombokat nyomnánk meg, a függvény a 32 + 8 + 2 = 42-t adná vissza.
Esetleg a függvényt egymás után többször elő kell hívni, hogy a "helyes" eredményt kapjuk. A feltöltött C7 kondenzátort
először ki kell sütni. Ez eltarthat egy ideig.
Ha az A/D váltó túl korán tapogat le, a legkülönbözőbb feszültség értékeket lehet mérni.
Példa:
unsigned char taste;
.
.
taste = PollSwitch();
if (taste>0) {MotorSpeed(0,0);}
Nos, ennyi volt. Most már szabadjára lehet engedni az egyéni kreativitást.
IV. rész Függelék
A. Alkatrész lista
Egy pingponglabdával kiegészítve egy ASURO megépítéséhez a következő alkatrészekre
van szükség:
1x ASURO alaplap
2x Igarashi 2025-02 típusú motor
1x 1N4001 dióda
8x 1N4148 dióda