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 | ||
2014:acc-touch-mouse [2014/12/26 11:34] David Bronec |
2014:acc-touch-mouse [2014/12/27 10:33] (aktuální) David Bronec |
||
---|---|---|---|
Řádek 3: | Řádek 3: | ||
autor: David Bronec | autor: David Bronec | ||
+ | ---- | ||
===== Zadání ===== | ===== Zadání ===== | ||
S vývojovou deskou FRDM-KL25Z realizujte USB myš, připojenou jako HID. Pohyb myši bude tvořen náklonem dle akcelerometru, dvě tlačítka myši budou představována levou a pravou částí kapacitního slideru. Program byl napsán v prostředí [[http://www.mbed.org |MBED ]]. | S vývojovou deskou FRDM-KL25Z realizujte USB myš, připojenou jako HID. Pohyb myši bude tvořen náklonem dle akcelerometru, dvě tlačítka myši budou představována levou a pravou částí kapacitního slideru. Program byl napsán v prostředí [[http://www.mbed.org |MBED ]]. | ||
- | ---- | + | |
**Obrázek vývojové desky FRDM-KL25Z:** | **Obrázek vývojové desky FRDM-KL25Z:** | ||
{{ http://www.haoyuelectronics.com/ebay/FRDM-KL25Z/3.jpg?500 |FRDM-KL25Z }} | {{ http://www.haoyuelectronics.com/ebay/FRDM-KL25Z/3.jpg?500 |FRDM-KL25Z }} | ||
+ | ---- | ||
===== Popis funkce ===== | ===== Popis funkce ===== | ||
Nakláněním desky se nám krzor bude pohybovat po obrazovce. Nakloníme-li desku doprava, kurzor myši pojede po obrazovce. Když nakloníme doleva, pojede doleva. Zvedneme-li přední část kde je kacitní slaider nahoru pohne se kurzor myši nahoru, Sklopením přední části se bude pohybovat kurzor směrem dolů. Kacitní slaide bude představovat tlačítak myši. Uplně vlevo je levé talčítko a v pravo je pravé tlačítko. Dále se povedlo umístit prostřední tlačítko. Klepnutí doprostřed slaidru vyvolá funkci zmáčknutí kolečka u normální myši. | Nakláněním desky se nám krzor bude pohybovat po obrazovce. Nakloníme-li desku doprava, kurzor myši pojede po obrazovce. Když nakloníme doleva, pojede doleva. Zvedneme-li přední část kde je kacitní slaider nahoru pohne se kurzor myši nahoru, Sklopením přední části se bude pohybovat kurzor směrem dolů. Kacitní slaide bude představovat tlačítak myši. Uplně vlevo je levé talčítko a v pravo je pravé tlačítko. Dále se povedlo umístit prostřední tlačítko. Klepnutí doprostřed slaidru vyvolá funkci zmáčknutí kolečka u normální myši. | ||
+ | ===== Program ===== | ||
+ | <code cpp> | ||
+ | #include "mbed.h" | ||
+ | #include "TSISensor.h" //knihovna pro Slider | ||
+ | #include "MMA8451Q.h" //knihovna pro akcelerometr | ||
+ | #include "USBMouse.h" //knihovna pro HID | ||
+ | |||
+ | #define MMA8451_I2C_ADDRESS (0x1d<<1) | ||
+ | |||
+ | TSISensor tsi; | ||
+ | USBMouse mouse; | ||
+ | |||
+ | int main() { | ||
+ | MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); | ||
+ | |||
+ | DigitalOut gled(LED_GREEN); // nastavení zelené LED diody | ||
+ | |||
+ | bool nastaveni = false; // proměná pro zanutí a vypnutí Slideru | ||
+ | int tlacitko = 0; // proměná pro určení tlačítka 1 = Levé tlačítko, | ||
+ | // 2 = Pravé tlačítko, 3 = Prostřední tlačítko | ||
+ | |||
+ | while(true) { // nekonečná smyčka | ||
+ | int xhod = (acc.getAccX()*10); // načtení hodnot z akcelerometru osy X do proměnné | ||
+ | int yhod = (acc.getAccY()*-10); // načtení hodnot z akcelerometru osy Y do proměnné | ||
+ | float slajd = tsi.readPercentage(); // načtení hodnot ze Slideru a uložení do proměné | ||
+ | | ||
+ | if (slajd < 0.01) { | ||
+ | if (nastaveni == true) { // pokud je Slider true vykonají se tyto operace | ||
+ | if (tlacitko == 1) //když je proměná talčítko nastavená na 1 vykoná | ||
+ | //se tato operace | ||
+ | { | ||
+ | mouse.click(MOUSE_LEFT); // volání funkce levého tlačítka | ||
+ | } | ||
+ | else if (tlacitko == 2) //když je proměná talčítko nastavená na 2 vykoná | ||
+ | //se tato operace | ||
+ | { | ||
+ | mouse.click(MOUSE_RIGHT); // volání funkce pravého tlačítka | ||
+ | } | ||
+ | else if (tlacitko == 3) //když je proměná talčítko nastavená na 3 vykoná | ||
+ | //se tato operace | ||
+ | { | ||
+ | mouse.click(MOUSE_MIDDLE); // volání funkce prostřeního tlačítka | ||
+ | } | ||
+ | | ||
+ | nastaveni = false; // vypnutí slideru | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | else if (slajd < 0.20) { // pokud je hodnota slideru menší jak 20 | ||
+ | if (nastaveni == false) //pokud je slider roven false | ||
+ | { | ||
+ | nastaveni = true; //nastaví slideru na true (zapnutí) | ||
+ | tlacitko = 2; // uložení dvojky do proměné tlačítka | ||
+ | } | ||
+ | } | ||
+ | else if (slajd < 0.5) { | ||
+ | if (nastaveni == false) | ||
+ | { | ||
+ | nastaveni = true; | ||
+ | tlacitko = 3; | ||
+ | } | ||
+ | } | ||
+ | else { | ||
+ | if (nastaveni == false) | ||
+ | { | ||
+ | nastaveni = true; | ||
+ | tlacitko = 1; | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | if ((xhod == 0) & (yhod == 0 )) // pokud jsou hodnoty os akcelerometru na nule | ||
+ | { | ||
+ | gled = 0; // zanutí zelené LED diondy | ||
+ | } | ||
+ | else {gled = 1;} // vynutí zelené LED diody | ||
+ | | ||
+ | | ||
+ | |||
+ | mouse.move(yhod, xhod); // Funkce pro pohyb kurzoru | ||
+ | wait(0.001); // čekání pro plynulejší pohyb kurzoru | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | </code> | ||
+ | ---- | ||
+ | ===== Zavěr ===== | ||
- | [[http://www.google.com|Tento odkaz ukazuje na google]] | + | Program funguje tak jak je dáno v zadání. Pohyb kurzoru je dán naklonem desky a talčítka jsou řešeny kapacitním slidrem. Povedlo se přidat aji jedno tlačítko navíc a to prostřední které plní funkci zmáčknutého kolečka. |