Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
|
2015:enc28j60 [2016/01/15 20:37] Martin Štěpnička [Zdrojový kód] |
2015:enc28j60 [2016/01/16 02:41] (aktuální) Martin Štěpnička [Zdrojový kód] |
||
|---|---|---|---|
| Řádek 33: | Řádek 33: | ||
| Po zapnutí dojde k inicializaci kitu ENC28J60 a program otevře server který čeká na 23 portu (telnet) na spojení. Pokud dojde k připojení klienta, server odešle uvítací zprávu a čeká na příkazy. Možné příkazy jsou následovné: | Po zapnutí dojde k inicializaci kitu ENC28J60 a program otevře server který čeká na 23 portu (telnet) na spojení. Pokud dojde k připojení klienta, server odešle uvítací zprávu a čeká na příkazy. Možné příkazy jsou následovné: | ||
| - | * help - zobrazí nápovědu | + | * **help** - zobrazí nápovědu |
| - | * color RRGGBB - rozsvítí RGB diodu barvou odpovídající HEXa barevnému kódu (jednotlivé intenzity barev jsou 8bitové) | + | * **color** RRGGBB - rozsvítí RGB diodu barvou odpovídající HEXa barevnému kódu (jednotlivé intenzity barev jsou 8bitové) |
| - | * stop - zhasne RGB diodu | + | * **stop** - zhasne RGB diodu |
| - | * exit - ukončí spojení a čeká na dalšího klienta | + | * **exit** - ukončí spojení a čeká na dalšího klienta |
| - | V programu je možné definicí preprocesorové proměnné #DHCP přepínat mezi IP adresou statickou nebo IP adresou získávanou z DHCP serveru. | + | V programu je možné definicí preprocesorové proměnné //#DHCP// přepínat mezi IP adresou statickou nebo IP adresou získávanou z DHCP serveru. |
| ===== Demonstrace ===== | ===== Demonstrace ===== | ||
| Následující video ukazuje funkčnost projektu. Jsou použity dvě náhodně vygenerované barvy pro ověření správného zobrazení: | Následující video ukazuje funkčnost projektu. Jsou použity dvě náhodně vygenerované barvy pro ověření správného zobrazení: | ||
| Řádek 115: | Řádek 115: | ||
| uint8_t size; | uint8_t size; | ||
| char buffer[256]; | char buffer[256]; | ||
| - | char color[2]; | ||
| | | ||
| if (client = server.available()) | if (client = server.available()) | ||
| Řádek 139: | Řádek 138: | ||
| if (strncmp(buffer, "color",5) == 0) | if (strncmp(buffer, "color",5) == 0) | ||
| { | { | ||
| - | uint8_t col; | + | char color[2]; |
| + | uint8_t col; | ||
| | | ||
| - | sprintf(color, "%c%c",buffer[6],buffer[7]); //get HEX char | + | sprintf(color, "%c%c",buffer[6],buffer[7]); //get HEX char |
| sscanf(color, "%x", &col); | sscanf(color, "%x", &col); | ||
| sprintf(color, "%u", col); // convert to DEC number | sprintf(color, "%u", col); // convert to DEC number | ||
| - | rled = (float)(~atoi(color) & 0xff)/255; // inverse of number, set value to PWM between 0-1 | + | rled = (float)(~atoi(color) & 0xff)/255; // inverse number, set value to PWM between 0-1 |
| | | ||
| sprintf(color, "%c%c",buffer[8],buffer[9]); | sprintf(color, "%c%c",buffer[8],buffer[9]); | ||
| Řádek 155: | Řádek 155: | ||
| sprintf(color, "%u", col); | sprintf(color, "%u", col); | ||
| bled = (float)(~atoi(color) & 0xff)/255; | bled = (float)(~atoi(color) & 0xff)/255; | ||
| - | |||
| } | } | ||
| //turning off all LEDs | //turning off all LEDs | ||
| Řádek 179: | Řádek 178: | ||
| { | { | ||
| client.write((uint8_t*)"> ", 2); | client.write((uint8_t*)"> ", 2); | ||
| - | } | + | } |
| - | | + | |
| } | } | ||
| client.stop(); | client.stop(); | ||
| Řádek 197: | Řádek 195: | ||
| } | } | ||
| </code> | </code> | ||
| - | |||
| ===== Závěr ===== | ===== Závěr ===== | ||
| Zadaní projektu bylo kompletně splněno a vše je funkční tak jak má být. Během řešení jsem neměl s ničím problém a na zadání jsem byl dostatečně připraven jak z předchozích zkušeností tak z předmětu MPOA. \\ | Zadaní projektu bylo kompletně splněno a vše je funkční tak jak má být. Během řešení jsem neměl s ničím problém a na zadání jsem byl dostatečně připraven jak z předchozích zkušeností tak z předmětu MPOA. \\ | ||
| Velikou výhodou bylo nalezení již hotové knihovny k řadiči ENC28J60. Bez toho bych byl nucen strávit několik dní studiem datasheetu k obvodu a následným experimentováním. Použití HEXa barevného kódu pro nastavování barvy mi přijde jako zajímavé řešení, kterým je využit celý rozsah možností RGB LED diody. | Velikou výhodou bylo nalezení již hotové knihovny k řadiči ENC28J60. Bez toho bych byl nucen strávit několik dní studiem datasheetu k obvodu a následným experimentováním. Použití HEXa barevného kódu pro nastavování barvy mi přijde jako zajímavé řešení, kterým je využit celý rozsah možností RGB LED diody. | ||