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 | ||
2017:hid-prez [2018/01/14 17:26] Miroslav Děcký [Závěr] |
2017:hid-prez [2018/01/14 20:28] (aktuální) Miroslav Děcký [Závěr] |
||
---|---|---|---|
Řádek 46: | Řádek 46: | ||
Výhodou kombinace THT hřebínků a SMD mikrotlačítek je, že výsledná destička je jednostranný plošný spoj. Kritické je dodržení rozteče konektorů. Potřebné rozměry jsou na obrázku plošného spoje okótovány níže. | Výhodou kombinace THT hřebínků a SMD mikrotlačítek je, že výsledná destička je jednostranný plošný spoj. Kritické je dodržení rozteče konektorů. Potřebné rozměry jsou na obrázku plošného spoje okótovány níže. | ||
- | Kompletní podklady (sch i brd soubory) jsou k dispozici ke stažení z [2]. | + | Kompletní podklady v programu Eagle 6.6.0 jsou k dispozici ke stažení. |
+ | |||
+ | {{ :2017:hid-prez:prezenter_vyrobni_podklady.zip |}} | ||
{{ :2017:hid-prez:pcb.png?400 |}} | {{ :2017:hid-prez:pcb.png?400 |}} | ||
Řádek 54: | Řádek 57: | ||
- | Je třeba si dát pozor na určité speciální piny, Piny vyvedení na tyto arduino konektory nejsou „volné“, ale mohou obsahovat například připojenou RGB led diodu, případně hodiny pro debugger. | + | Je třeba si dát pozor na určité speciální piny, piny vyvedené na tyto arduino konektory nejsou vždy „volné“, ale mohou obsahovat například připojenou RGB led diodu, případně hodiny pro debugger. |
V první verzi DPS toto nebylo dodrženo a jedno tlačítko bylo spojeno právě s LED na destičce freedom. Tato chyba byla opravena, a výše prezentované schéma i PCB (případně data ke stažení) již tuto chybku neobsahují. | V první verzi DPS toto nebylo dodrženo a jedno tlačítko bylo spojeno právě s LED na destičce freedom. Tato chyba byla opravena, a výše prezentované schéma i PCB (případně data ke stažení) již tuto chybku neobsahují. | ||
Foto výsledného přípravku s KL25z je na obrázku níže, jedná se ovšem o první verzi. | Foto výsledného přípravku s KL25z je na obrázku níže, jedná se ovšem o první verzi. | ||
Řádek 77: | Řádek 80: | ||
| 3. | Ukazovátko | Levé tlačítko myši | | | 3. | Ukazovátko | Levé tlačítko myši | | ||
| 4. | Spustit prezentaci | F5 | | | 4. | Spustit prezentaci | F5 | | ||
- | | 5. | Začernění | B | | + | | 5. | Začernění | B | |
Prezentér pro pohyb ukazovátka po ploše prezentace využívá akcelerometru MMA8451Q, který je osazen na FRDM-KL25z. | Prezentér pro pohyb ukazovátka po ploše prezentace využívá akcelerometru MMA8451Q, který je osazen na FRDM-KL25z. | ||
Řádek 110: | Řádek 113: | ||
</code> | </code> | ||
Proměnné dirLR a dirUD uchovávají aktuální požadavek na pohyb ve dvou osách, a jsou dále propagovány do obslužných funkcí USB aplikace. | Proměnné dirLR a dirUD uchovávají aktuální požadavek na pohyb ve dvou osách, a jsou dále propagovány do obslužných funkcí USB aplikace. | ||
- | Původní myšlenka, že velikost náklonu by měnila rychlost pohybu kurzoru, byla po otestování zavržena a ponechána rychlost posunu na pevnou hodnotu. | + | Původní myšlenka, že velikost náklonu by měnila rychlost pohybu kurzoru, byla po otestování zavržena a rychlost posunu ponechána na pevnou hodnotu. |
V budoucnu by bylo možné otestovat změnu rychlosti posunu na dotykovém slideru. | V budoucnu by bylo možné otestovat změnu rychlosti posunu na dotykovém slideru. | ||
- | Pro obsluhu tlačítek byla napsána následující funkce. Tlačítka jsou obsluhována tak, aby bylo nutné pro listování prezentací opakovaně mačkat tlačítka. Díky této úpravě je možné minimalizovat ochrannou dobu pro detekci stisku a zároveň předejít nechtěnému listování o více listů prezentace: | + | Makro ANGLE_THRESHOLD slouží pro nastavení oblasti, kdy má kurzor stát, jedná se tedy o citlivost na malý náklon. Díky řešení pomocí makra je možné jednoduchou změnou z jednoho místa ovlivnit všechny směry současně. |
+ | |||
+ | Pro obsluhu tlačítek byla napsána následující funkce. Tlačítka jsou obsluhována tak, aby bylo nutné pro listování prezentací opakovaně mačkat tlačítka. Díky této úpravě je možné minimalizovat ochrannou dobu pro detekci stisku a zároveň předejít nechtěnému listování o více listů prezentace. Tato logika obsluhuje pouze tlačítka pro listování v prezentaci, její spuštění a zatmavení. Tlačítko ukazovátka má zvláštní obsluhu, viz dále. | ||
<code c> | <code c> | ||
Řádek 156: | Řádek 161: | ||
</code> | </code> | ||
- | Obsluha tlačítka ukazovátka má specifickou obsluhu. | + | Obsluha tlačítka ukazovátka má specifickou podobu. |
- | Pro zapnutí funkce ukazovátka je nutné držet levé tlačítko myši >1s a po dobu ukazování neuvolnit. Tento přístup se mi jeví jakožto nevhodný. Z tohoto důvodu je implementována logika klopného obvodu, kdy první stisk tlačítka aktivuje "levé tlačítko myši" a až následující stisk tuto funkci uvolní - není tedy nutné při prezentaci křečovitě držet mikrospínač. | + | Pro zapnutí funkce ukazovátka je nutné držet levé tlačítko myši >1s a po celou dobu ukazování neuvolnit. Tento přístup se mi jeví jakožto nevhodný. Z tohoto důvodu je implementována logika klopného obvodu, kdy první stisk tlačítka aktivuje "levé tlačítko myši" a až následující stisk tuto funkci uvolní - není tedy nutné při prezentaci křečovitě držet mikrospínač. |
<code c> | <code c> | ||
if (!GPIO_ReadPinInput(PLUG_BOARD_GPIO, SW_LEFT_BUTTON_PIN)) | if (!GPIO_ReadPinInput(PLUG_BOARD_GPIO, SW_LEFT_BUTTON_PIN)) | ||
Řádek 176: | Řádek 181: | ||
</code> | </code> | ||
- | Takto předpřipravená data jsou dále předávána do aplikace pro obsluhu USB HID zařízení, které posílá data do počítače. | + | Takto předpřipravená data jsou dále předávána do části aplikace pro obsluhu USB HID zařízení, která posílá data do počítače. |
+ | |||
+ | Celý výše uvedený kód se odehrává v hlavní smyčce programu. | ||
=== USB HID === | === USB HID === | ||
Řádek 248: | Řádek 255: | ||
} | } | ||
</code> | </code> | ||
- | Jak je vidět z kódu výše, případné rozšíření na dynamickou změnu rychlosti pohybu kurzoru není problém. Postačí místo konstanty použít proměnnou. | + | Jak je vidět z kódu výše, případné rozšíření na dynamickou změnu rychlosti pohybu kurzoru je v případě požadavku na toto chování možné. |
+ | |||
+ | Kompletní projekt prezentéru ve vývojovém prostředí IAR 7.80.4 je k dispozici ke stažení: | ||
+ | {{ :2017:hid-prez:prezenter_iar.zip |}} | ||
Řádek 254: | Řádek 264: | ||
====== Video s demonstrací funkčnosti ====== | ====== Video s demonstrací funkčnosti ====== | ||
+ | Pro demonstraci funkčnosti jsem natočil následující video. | ||
+ | |||
+ | {{youtube>dMbCDBqjDh0?medium}} | ||
---- | ---- | ||
Řádek 260: | Řádek 273: | ||
Předložený projekt prezentačního zařízení se podařilo dokončit do plně použitelného stavu. Hlavním problémem zůstávají použité klávesové zkratky, při vývoji jsem nalezl na [[https://support.office.com/en-ie/article/Use-keyboard-shortcuts-to-deliver-your-presentation-1524ffce-bd2a-45f4-9a7f-f18b992b93a0|stránkách podpory office]], že zatmavení prezentace pro office 2007 a vyšší je klávesová zkratka "B" a opětovným stiskem "B" dojde k návratu. Při vývoji byl použit PowerPoint verze 2016 a toto chování se potvrdilo. | Předložený projekt prezentačního zařízení se podařilo dokončit do plně použitelného stavu. Hlavním problémem zůstávají použité klávesové zkratky, při vývoji jsem nalezl na [[https://support.office.com/en-ie/article/Use-keyboard-shortcuts-to-deliver-your-presentation-1524ffce-bd2a-45f4-9a7f-f18b992b93a0|stránkách podpory office]], že zatmavení prezentace pro office 2007 a vyšší je klávesová zkratka "B" a opětovným stiskem "B" dojde k návratu. Při vývoji byl použit PowerPoint verze 2016 a toto chování se potvrdilo. | ||
- | Bohužel, na některých PowerPointech tato zkratka není plně funkční, návrat z černé obrazovky je možný stiskem libovolného tlačítka pro pohyb v prezentaci (tj 1. nebo 2.) tento stisk způsobí návrat do prezentace, nikoliv její přelistování. Důvod je mi neznámý, bohužel vlastní zařízení s tímto chování nemám. | + | Bohužel na některých PowerPointech tato zkratka není plně funkční, návrat z černé obrazovky je možný stiskem libovolného tlačítka pro pohyb v prezentaci (tj 1. nebo 2.), tento stisk způsobí návrat do prezentace, nikoliv její přelistování. Důvod je mi neznámý, bohužel vlastní zařízení s tímto chování nemám. |
Při testování funkčnosti (viz video výše) si můžete povšimnout relativity času, kdy "stisk delší než 1s" je opravdu nepříjemně dlouhá doba pro zapnutí ukazovátka. Pohyb pomocí akcelerometru je bezproblémový, jen vyžaduje trochu cviku, přesnost pohybu s laserovým ukazovátkem nelze srovnávat. | Při testování funkčnosti (viz video výše) si můžete povšimnout relativity času, kdy "stisk delší než 1s" je opravdu nepříjemně dlouhá doba pro zapnutí ukazovátka. Pohyb pomocí akcelerometru je bezproblémový, jen vyžaduje trochu cviku, přesnost pohybu s laserovým ukazovátkem nelze srovnávat. | ||
Řádek 270: | Řádek 283: | ||
[1] Obrázek arduino konektory: https://os.mbed.com/media/uploads/GregC/frdm-kl25z_headers2.png | [1] Obrázek arduino konektory: https://os.mbed.com/media/uploads/GregC/frdm-kl25z_headers2.png | ||
- | [2] Podkldady pro výrobu plošného spoje s tlačítky ke stažení: XXXXX | + | [2] https://support.office.com/en-us/article/Use-keyboard-shortcuts-to-deliver-your-presentation-1524ffce-bd2a-45f4-9a7f-f18b992b93a0 |
+ | |||
+ | [3] MCUXpresso online SDK builder : https://mcuxpresso.nxp.com/en/select | ||
- | [3] https://support.office.com/en-us/article/Use-keyboard-shortcuts-to-deliver-your-presentation-1524ffce-bd2a-45f4-9a7f-f18b992b93a0 |