Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2014:acc-touch-mouse

Toto je starší verze dokumentu!


Myš ovládaná akcelerometrem

autor: David Bronec

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í MBED .

Obrázek vývojové desky FRDM-KL25Z: FRDM-KL25Z


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.

Program

#include „mbed.h“ #include „TSISensor.h“ #include „MMA8451Q.h“ #include „USBMouse.h“

#define MMA8451_I2C_ADDRESS (0x1d«1)

TSISensor tsi; USBMouse mouse;

int main() {

  MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
  DigitalOut gled(LED_GREEN);

bool nastaveni = false;

  int tlacitko = 0; 
     
  while(true) {
  int xhod = (acc.getAccX()*10);
  int yhod = (acc.getAccY()*-10);
  
        else if (tsi.readPercentage() < 0.20) { 
          if (nastaveni == false) 
              {   
                  nastaveni = true;
                  tlacitko = 2;
              }
          }
      else if (tsi.readPercentage() < 0.5) { 
          if (nastaveni == false) 
              {
                  nastaveni = true;
                  tlacitko = 3;
              }
          } 
      else {
          if (nastaveni == false) 
              {
                  nastaveni = true;
                  tlacitko = 1;
              }
          }
    
    if ((xhod == 0) & (yhod == 0 ))
          {
              gled = 0;        
          }
  else {gled = 1;}
  
   if (tsi.readPercentage() < 0.01) { 
          if (nastaveni == true) {
                  if (tlacitko == 1)
                      {
                          mouse.click(MOUSE_LEFT);
                      }
                  else if (tlacitko == 2)
                      {
                          mouse.click(MOUSE_RIGHT);
                      }
                  else if (tlacitko == 3) 
                      {
                          mouse.click(MOUSE_MIDDLE);
                      }
              
              nastaveni = false;
              
          }
      }
             
    mouse.move(yhod, xhod);
    wait(0.001);  
  }

}

Zavěr

2014/acc-touch-mouse.1419591023.txt.gz · Poslední úprava: 2014/12/26 11:50 autor: David Bronec