This shows you the differences between two versions of the page.
| et:projects:soccer_robot [2010/08/30 18:07] – yllar | et:projects:soccer_robot [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 170: | Line 170: | ||
| [{{ : | [{{ : | ||
| - | Robotexil on väravate kohale paigutatud infrapuna signaali saatjad, mis edastavad | + | Robotexil on väravate kohale paigutatud infrapuna signaali saatjad, mis edastavad |
| Vastuvõtumoodulile on paigutatud kaks signaali vastuvõtjat/ | Vastuvõtumoodulile on paigutatud kaks signaali vastuvõtjat/ | ||
| - | Vastuvõtja saadab välja UART pakette, milles sisaldub infrapunavastuvõtja indeks ning vastuvõetud kanal. Väljasaadetavate UART pakettide | + | Vastuvõtja saadab |
| - | tabelites: | + | |
| + | **Vastuvõtja indeksiga 0 (vasakpoolne)** | ||
| - | **Vastuvõtja indeksiga 0** [{{ : | ||
| ^ Kanal ^ Kaheksandiksüsteemis(HEX) | ^ Kanal ^ Kaheksandiksüsteemis(HEX) | ||
| | 1 | 0x01 | 0b00000001 | | | 1 | 0x01 | 0b00000001 | | ||
| Line 184: | Line 184: | ||
| | 4 | 0x04 | 0b00000100 | | | 4 | 0x04 | 0b00000100 | | ||
| - | **Vastuvõtja indeksiga 1** | + | **Vastuvõtja indeksiga 1 (parempoolne)** |
| ^ Kanal ^ Kaheksandiksüsteemis(HEX) | ^ Kanal ^ Kaheksandiksüsteemis(HEX) | ||
| | 1 | 0x11 | 0b00010001 | | | 1 | 0x11 | 0b00010001 | | ||
| Line 190: | Line 190: | ||
| | 3 | 0x13 | 0b00010011 | | | 3 | 0x13 | 0b00010011 | | ||
| | 4 | 0x14 | 0b00010100 | | | 4 | 0x14 | 0b00010100 | | ||
| + | |||
| + | RC5 vastuvõtja skeemi ja trükkplaadi pildid. Skeemi ja trükplaadi failid, tarkvara ning komponentide nimistu paiknevad lehekülje alumises osas, alajaotuses " | ||
| + | | ||
| === Palliandur === | === Palliandur === | ||
| Line 214: | Line 217: | ||
| ==== Programm ==== | ==== Programm ==== | ||
| - | Roboti tarkvara on kirjutatud AVR Studios C keeles. Tarkvara kasutab kodulabori teeki ja AVR-GCC kompilaatorit mis tuleb kaasa WinAVR-iga. Programm on jagatud funktsioonide järgi mitmeks failiks - näiteks on sõitmise funktsioonide ja andurite näitude lugemiseks erinevad failid. Põhifailis asub //main// funktsioon mis käivitab kõik juhtimis- ja tagasiside protsessid | + | Roboti tarkvara on kirjutatud AVR Studios C keeles. Tarkvara kasutab kodulabori teeki ja AVR-GCC kompilaatorit mis tuleb kaasa WinAVR-iga. Programm on jagatud funktsioonide järgi mitmeks failiks - näiteks on sõitmise funktsioonide ja andurite näitude lugemiseks erinevad failid. Põhifailis asub //main// funktsioon mis käivitab kõik juhtimis- ja tagasiside protsessid. Roboti algoritm |
| + | |||
| + | Programm on üles ehitatud tavapärase olekumasina eeskujul, kuid et kood liiga pikaks ei läheks ning kogu algoritm | ||
| + | |||
| + | Tabeli struktuur on järgmine: | ||
| + | * Sisendid | ||
| + | * Olek | ||
| + | * Taimer | ||
| + | * Vasak enkooder | ||
| + | * Parem enkooder | ||
| + | * Nupud | ||
| + | * Infrapuna kaugusandur | ||
| + | * Ultraheli kaugusandur | ||
| + | * Palliandur | ||
| + | * Oma värava suund | ||
| + | * Vastase värava suund | ||
| + | * Väljundid | ||
| + | * Uus olek | ||
| + | * Taimer | ||
| + | * Platvorm | ||
| + | * Pallihoidmise rullik | ||
| + | * 7-segmendiline indikaator | ||
| + | * Punane LED | ||
| + | * Ultraheli kaugusanduri väärtuse meelde jätmise lipuke | ||
| - | Programm on üles ehitatud võimalikult lihtsal kujul. Kui hea praktika kohasel | + | Tabeli ridade pikkuse vähendamiseks ning määramata sisendite/ |
| - | Järgnevalt on toodu roboti //main// funktsioon kus käivitatakse kõik katkestustel toimuvad protsessid | + | ^ Käsklus ^ Seletus ^ |
| + | | EQ(n) | Sisend peab olema n-ga võrdne | | ||
| + | | NE(n) | Sisend ei tohi olla n-ga võrdne | | ||
| + | | GT(n) | Sisend peab olema suurem n-st | | ||
| + | | LT(n) | Sisend peab olema väiksem n-st | | ||
| + | | BM(n) | Kontrollitakse n-ndat bitti sisendis | | ||
| + | | CSM(n) | Sisendi väärtus peab olema suurem või võrdne n ja eelmise meelde jäetud ultraheliandurist saadud kauguse summaga | | ||
| + | | CSB(n) | Sisendi väärtus peab olema suurem või võrdne n ja eelmise meelde jäetud ultraheliandurist saadud kauguse vahega | | ||
| + | ||| | ||
| + | | DRV(l, r) | Seab vasaku mootori kiiruseks l ja parema mootori kiiruseks r. Arvud -100...100, kus 0 on peatatud olek ning negatiivne arv tähistab sama kiirust vastassuunas. | | ||
| + | | STA(n) | Seab uue oleku n | | ||
| + | | TMR(n) | Seab taimeri uueks väärtuseks n | | ||
| + | | ROL(0/1) | Lülitab pallihoidmise rulliku välja/sisse | | ||
| + | | LED(0/1) | Lülitab LED'i välja/sisse | | ||
| + | | SEG(0-9) | Seab 7-segmendilise indikaatori näidatava väärtuse 0-9 | | ||
| <code c> | <code c> | ||
| Line 286: | Line 327: | ||
| }; | }; | ||
| </ | </ | ||
| + | |||
| + | Järgnevalt on toodud roboti //main// funktsioon kus käivitatakse kõik katkestustel toimuvad protsessid ja täidetakse põhialgoritmi vastavalt olekutabelist loetud väärtustele. Selles funktsioonis asub lõputu tsükkel, mis kontrollib igal läbimisel kõigis tabeli ridades olevaid sisendeid. Kui mõne tabelirea kõigis määratud sisendites on vastav väärtus, siis täidetakse samas reas kirjeldatud väljundite väärtused. Näiteks roboti käivitamiseks nupust on tabeli alguses rida, mille ainsateks sisendtingimusteks on see, et robot on peatatud ning vastavat nuppu on vajutatud. Kui need tingimused on täidetud, määratakse olekuks " | ||
| + | |||
| + | Enne tabeli ridade kontrollimist loetakse puhvritest kõigi andurite väärtused ning uuendatakse ka LCD ekraanil olevat infot. Et vähendada ekraani uuendamisega kaasnevat viidet on uuendamine jagatud kuue tsükli vahel, millest igas tsüklis uuendatakse erineva anduri väärtust ekraanil. | ||
| <code c> | <code c> | ||
| Line 525: | Line 570: | ||
| * {{: | * {{: | ||
| * {{: | * {{: | ||
| - | * Tabelitega programm | + | * {{: |
| + | * {{: | ||
| + | * {{: | ||
| + | * {{: | ||
| ~~CL~~ | ~~CL~~ | ||
| © TTÜ, MTÜ TTÜ Robotiklubi | © TTÜ, MTÜ TTÜ Robotiklubi | ||
| ~~DISCUSSION~~ | ~~DISCUSSION~~ | ||