User manual

18 jelt olvas be és addig vár, amíg mind a 18 jel beérkezik. Most abból indulunk ki, hogy a “Hallo hier bin ich” jelsorozat kerül
küldésre. Az előbb definiált jelsorozat üzenet a következőképp néz ki:
Hallo hier bin ich89
Az üzenet első 18 jele a fogadott jelekre íródott át.
9.2. Az ASURO függvények leírása
Ahhoz, hogy az ASURO programozását a lehető legegyszerűbben megoldjuk, néhány előre beállított függvénye van. Ezek
nem feltétlenül az optimális megoldások, néhány alkalmazáshoz biztos jobb, ha saját függvényt írunk.
A függvények klasszikusan a deklarációjuk stílusában lettek megalkotva. Aki ezzel nem tud mit kezdeni, nézze meg leginkább
a hozzájuk tartozó példákat.
A félreértések elkerülése érdekében: Az olyan függvények, amik valamit vezérelnek, mint pl. a meghajtó függvények vagy a
kijelző elemekhez való függvények, beállításokat eszközölnek, amik addig érvényesek, amíg meg nem változtatják őket. Tehát
egy zöld státusz LED addig marad zöld, amíg egy másik színre nem cseréljük vagy kikapcsoljuk.
9.2.1. void Init(void)
A mikrokontroller az alapállapotába kell hogy kerüljön. Ezt a függvényt mindig a program elején kell meghívni. Ezen függvény
meghívása nélkül az elején azt sem tudja a processzor, mit tegyen a lábacskáival.
Egy ASURO-hoz írt programnak legalább így kell kinéznie:
#include “asuro.h”
int main(void) {
// itt lesznek meghatározva a szükséges változók
Init();
// itt állnak majd a saját programötletek
while(1); // Végtelen ciklus
return 0; // már nem hajtódik végre
}
Miért van a végtelen ciklus a main () függvény végén? Normál esetben a main () függvény return 0;-val való befejezése a
program végét jelenti. Az ASURO-nál viszont előfordulhat, hogy a korábban flashezett programok részben hajtódnak végre
vagy a program újraindul, ami furcsa effektekhez vezet. Ennek elkerülése érdekében a program - miután feldolgozta a
feladatait - egy végtelen ciklusba "kerül", ami a program definiált végét jelenti.
9.2.2. void StatusLED(unsigned char color)
A státusz LED (D12) feloltott állapotba hozható. Lehetséges átviteli paraméterek: OFF, GREEN, RED vagy YELLOW
Példa:
A státusz LED pirosan világítson:
StatusLED(RED);
Oké, oké, mégegyszer, teljes programban:
#include “asuro.h”
int main(void) {
Init();
StatusLED(YELLOW);
while(1); // Végtelen ciklus
return 0;
}
9.2.3. void FrontLED(unsigned char status)
A Front-LED (D11) be- ill. kikapcsolható. Lehetséges átviteli paraméterek: ON ill. OFF.
Példa:
A Front-LED-nek világítania kell:
FrontLED(ON);
9.2.4. void BackLED(unsigned char left, unsigned char right)
A Back-LED-ek (D15 és D16) be- ill. kikapcsolhatók. Az első paraméter a bal oldali Back-LED (D15) állapotát írja le, a második
paraméter a jobb oldali Back-LED-ét (D16). Lehetséges állapotok: ON ill. OFF.
Példa:
A jobb oldali Back-LED(D16) kapcsoljon be és a bal oldali (D15) kapcsoljon ki:
BackLED(OFF,ON);
9.2.5. void Sleep(unsigned char time72kHz)
Ez a függvény a processzort egy beállítható idejű várásra készteti. Ezzel tökéletes késleltetést programozhatunk. Ez a
függvény egy 72kHz-es időzítőre alapoz és paraméterként beállítható értéke max. 255 (unsigned char)4.
Példa: 0,003mp
A processzornak kb. kb 3 ms-ig kell várnia A Sleep () függvényt a következőképp kell meghívni a 3 ms-os
várakozáshoz:
Sleep (216) ;
9.2.6. void MotorDir(unsigned char left_dir, unsigned char right_dir)
Ezzel a függvénnyel a két motor forgásirányát lehet meghatározni. Ezt a sebesség beállítása előtt kell meghívni. Lehetséges
paraméterek: FWD (előre), RWD (hátra), BREAK (fékezés ill. állva maradás, itt a motorok a tranzisztor áthidalással rövidre
záródnak) és FREE (üresjárat).
Példa:
A bal oldali motornak előre kell forogni, amíg a jobb oldalinak állnia kell.
MotorDir(FWD,BREAK);
4
Ez a szerzők gonoszkodása és gondolkodásra késztet!
9.2.7. void MotorSpeed(unsigned char left_speed, unsigned char right_speed)
Itt lehet megadni a meghajtó motorok sebességét. A maximális lehetséges sebesség érték 255 (unsigned char). A motor
először kb. 60-as értéktől kezd pörögni. (Erősen függ a mechanikus összeépítéstől.) A beállított érték tulajdonképpen csak azt
határozza meg, milyen elektromos teljesítménye legyen a motoroknak. Hogy valójában milyen fordulatszám lesz az eredmény,
az más tényezőktől is függ, mint pl. a súrlódás és az emelkedő.
Miután ez a függvény használva lett, az ASURO elindulhat. Néha a programozás eredménye nem
szándékolt, és arról kell gondoskodni, hogy az ASURO pontos közlekedési manőverekkel másokat ne
sodorjon veszélybe.
Példa:
A bal oldali motornak maximális sebességgel kell forognia, a jobb oldalinak egyáltalán nem. A forgásirány a MotorDir()
függvénnyel már meg van adva.
MotorSpeed (255,0) ;
9.2.8. void SerWrite(unsigned char *data, unsigned char length)
Ezzel a függvénnyel az adatok az ASURO-ról a soros infra porton keresztül 2400 bit/s, No-Parity, 1 StopBit, NoFlowControl
paraméterekkel továbbítódnak. Ez ugyanaz a beállítás, amit már az infra transceiver tesztelésekor alkalmaztunk (ki gondolta
volna). Az első paraméterben a küldendő adat címét kell megadni. A második paraméter adja meg, hány bájtot kell
továbbítani.
Példa:
A „Hallo Du Da !“ jelsorozatot kell továbbítani az infra porton keresztül.
SerWrite(“Hallo Du Da!”,12);
9.2.9. void SerRead(unsigned char *data, unsigned char length, unsigned int timeout)
Ha már tudunk küldeni adatokat az infra porton keresztül, lehet, hogy fogadni is szeretnénk. Ehhez való ez a függvény. Az
első paraméter arra a memóriahelyre mutat, ahol a fogadott adatokat kell tárolni. A második paraméter megadja, hány
adatbájtot várunk. A harmadik és utolsó paraméter egy időkorlátot ad meg. Itt lehet arról gondoskodni, hogy a függvény ne
várjon végtelenül az adatokra. Ha egy bizonyos idő elteltével nem érkezik több jel, a függvény egyszerűen megszakad. A
fogadott jelek első karaktere ekkor egy 'T'-re íródik át (Timeout). Ha harmadik paraméterként a ’0’-t adjuk meg, a függvény
addig vár, amíg a második paraméterként megadott bájt mennyiség megérkezik.