Set of libraries for interfacing the uOLED touchscreen attached to BOA. More...
Functions | |
| struct sercom_data * | uoled_sercom_init (char *tty, void(*sighandler)(int)) |
| Initializes and opens serial port (sercom). | |
| void | uoled_sercom_close () |
| Close serial port (sercom). | |
| int | uoled_read_cmd (uint8_t *buff, int size) |
| Read data from serial port (sercom). | |
| int | uoled_recieve_cmd (UDE_recieve_cmd_t *cmd) |
| Read command from serial port. | |
| int | uoled_display_status (UDE_component_t c, UDE_hw_status_t s) |
| Send the actual state of components to display. | |
| int | uoled_display_fsm (UDE_fsm_t fsm, char *state) |
| Send the actual state of FSM to display. | |
| int | uoled_display_alive () |
| Used to refresh display indication that comunication is ok. | |
| int | uoled_display_voltage (double voltage33, double voltage50, double voltage80, double voltageBAT) |
| Used to refresh voltage readings on the display. | |
| int | uoled_display_position (double x, double y, double phi) |
| Used to refresh actual position on the display. | |
Set of libraries for interfacing the uOLED touchscreen attached to BOA.
Parts:
Library uoled contains functions, which create control messages in proper format for communication with the display on serial port.
S displejem se bude komunikovat pomoci zprav. Z robota (ci PC) do displeje bude obsahovat prvni byte identifikator toho co se posila a pak data. Muze se to udelat tak, ze identifikator bude mit vzdy nahozen bit c. 7 (tj. bude betsi nez 128) a data budou mit tento bit vzdy 0 (jen spodnich 7 bitu = ASCII).
I kdyz se nejaky byte po ceste ztrati, displej bude schopen se zasynchronizovat a nestane se to co vloni, ze obcas se to nejak rozsynchronizovalo a displej zobrazoval kraviny.
Dalsi dusledek tohoto bude, ze kdyz se zmeni jen jeden udaj, nebude potreba do displeje posilat vsechno a tim padem bude displej reagovat rychleji na zmeny.
Tedka co bude displej letos zobrazovat. Vzhledem k tomu, ze vnitrni mechanismy robota letos temer zadne nebudou, tak to bude dost jednoduche:
1) Status jednotlivych komponent. Stejne jako vloni, to budou barevne ctverecky s nazvem komponenty. Mozne hodnoty (a barvy budou)
Jednotlive komponenty pro letosni rok budou (cislo udvava ccccc nize):
1. MOT - ridici jednotka motoru 2. ODO - odometrie 3. CAM - kamera 4. PWR - napajeci zdroje 5. HOK - Hokuyo 6. APP - ridici aplikace 7. VID - ovladani vidli a dvirek na vysypavani 8. STA - startovaci tlacitko
Format zpravy pro displej:
| ID | Data | |------+-------------| | 0x81 | 0ssccccc(b) | (b) znamena binarne tj. jednotlive bity |------+-------------|
2) Stav napajeni - stejne jako vloni: hodnoty napeti pro vetve 3.3V (a), 5V (b), 8V (c) a na baterce (d). Pozadi bude cervene (x=1) pokud hodnota klesne pod urcitou mez, a zelene pokud bude OK (x=00). U napeti baterku jeste rozlisujeme 3. stav (varovani = oranzova), ktery je signalizovan bitem w. Pokud je w = 1 a zaroven d = 1, je pozadi cervene.
| ID | Status | ASCII hodnoty napeti | | | (odpovida xx) | | |------+---------------+----------------------| | 0x82 | 000wabcd(b) | AAAABBBBCCCCDDDD | |------+---------------+----------------------|
Priklad:
3) Aktualni stavy stavovych automatu:
| ID | ASCII Nazev stavu (max 20?? znaku ukunceno '') | |------+--------------------------------------------------| | 0x83 | main_fsm_state | |------+--------------------------------------------------| | 0x84 | move_fsm_state | |------+--------------------------------------------------| | 0x85 | act_fsm_state | |------+--------------------------------------------------|
4) Poloha robota
| ID | ASCII hodnoty X, Y a uhel | |------+---------------------------| | 0x86 | XXXYYYAAA | |------+---------------------------|
Priklad: 0x86 "175042122" na displeji bude "X=1.75 Y=0.42 122°" (nebo tak nejak)
Uhel bude v rozsahu 0 - 359. Kdybys chtel bejt frajer, tak by sel uhel zobrazovat graficky jako sipku (kompas).
5) Keep-alive
| ID | |------| | 0x87 | |------|
Po projeti tohto prikazy se na displeji zmeni ukazatel toho, ze funguje komunikace s displejem = napriklad klasicky ASCII mlejnek - postupne zobrazovane znaky '-', '/', '|' a '\'.
6) Rozpoznane kukurice
| ID | Rozpoznane kombinace kukuric | |------+------------------------------| | 0x88 | AB |
A = kombinace bocnich kukuric 1 az 9 B = kombinace strednich kukuric 1 az 4
7) Barva za kterou hrajeme
| ID | Barva | |------+-------| | 0x89 | B |
B barva (0 = modra nebo 1 = zluta)
Data posilana z displeje do PC ------------------------------
Myslim, ze budou stacit nasledujici jednobytove prikazy:
| ID | Vyznam | |------+-------------------| | 0x81 | Vidle dolu | | 0x82 | Vidle nahoru | | 0x83 | Dvere otevrit | | 0x84 | Dvere zavrit | | 0x85 | Valec zapnout | | 0x86 | Valec vypnout | | 0x87 | Posli cely status | | 0x88 | Zmen barvu |
| int uoled_display_alive | ( | ) |
Used to refresh display indication that comunication is ok.


| int uoled_display_fsm | ( | UDE_fsm_t | fsm, | |
| char * | state | |||
| ) |
Send the actual state of FSM to display.
| fsm | Type of FSM, see enum UDE_fsm_t | |
| state | String identifying the state to be indicated |


| int uoled_display_position | ( | double | x, | |
| double | y, | |||
| double | phi | |||
| ) |
Used to refresh actual position on the display.
| pos | The Structure containing position was replaced be tree parameters | |
| x | ||
| y | ||
| phi | in [0, 359] |


| int uoled_display_status | ( | UDE_component_t | c, | |
| UDE_hw_status_t | s | |||
| ) |
Send the actual state of components to display.
| c | Type of components, see enum UDE_component_t | |
| s | Status of component, see enum UDE_hw_status_t |


| int uoled_display_voltage | ( | double | voltage33, | |
| double | voltage50, | |||
| double | voltage80, | |||
| double | voltageBAT | |||
| ) |
Used to refresh voltage readings on the display.
| volt | Structure containing voltage readings was replaced by four parameters as follows | |
| voltage33 | ||
| voltage50 | ||
| voltage80 | ||
| voltageBAT |


| int uoled_read_cmd | ( | uint8_t * | buff, | |
| int | size | |||
| ) |
Read data from serial port (sercom).
*
| buff | Will be filled by data. | |
| size | Length of data, which will be read. |

| int uoled_recieve_cmd | ( | UDE_recieve_cmd_t * | cmd | ) |
Read command from serial port.
| cmd | returned command |


| void uoled_sercom_close | ( | ) |
Close serial port (sercom).
*


| struct sercom_data* uoled_sercom_init | ( | char * | tty, | |
| void(*)(int) | sighandler | |||
| ) | [read] |
Initializes and opens serial port (sercom).
*
| tty | String of device. |


1.7.1