Gombos egérvezérlés

Vezérelje a kurzor mozgását 5 nyomógombbal.


Utolsó felülvizsgálat: 2022.02.04 16:50


A Mouse könyvtár segítségével vezérelheti a számítógép képernyőn megjelenő kurzorát egy Arduino Leonardo, Micro vagy Due segítségével. Ez a konkrét példa öt nyomógombot használ a képernyőn megjelenő kurzor mozgatására. A gombok közül négy irányító (fel, le, balra, jobbra), egy pedig a bal egérgombbal azonos.

A kurzor mozgása az Arduino-nál mindig relatív. Minden alkalommal, amikor egy bemenetet olvas, a kurzor pozíciója frissül az aktuális pozícióhoz képest.

Amikor valamelyik iránygombot megnyomják, az Arduino mozgatja az egeret, és a HIGH bemenetet 5-ös tartományra képezi le a megfelelő irányba.

Az ötödik gomb a bal egérgombbal történő kattintás vezérlésére szolgál. Ha megnyomja, a kártya gombnyomást küld a számítógépnek. A gomb elengedésekor a számítógép felismeri az eseményt.

Megjegyzés: Amikor a Mouse.move() parancsot használja, az Arduino átveszi a számítógép kurzorát! Annak érdekében, hogy ne veszítse el az uralmat a számítógépe felett, miközben vázlatot futtat ezzel a funkcióval, feltétlenül állítson be egy vezérlőt, mielőtt meghívná a Mouse.move()-t. Ez a vázlat csak egy gomb megnyomásakor frissíti a kurzor pozícióját.

Hardver szükséglet

  • Arduino Leonardo, Micro vagy Due kártya

  • 5x pillanat-nyomógomb

  • 5x 10k ohmos ellenállás

  • összekötő vezetékek

  • dugdosós próbapanel (breadboard)

Az áramkör

Csatlakoztassa a kártyát a számítógéphez mikro-USB-kábellel. A gombok 2 - 6 digitális bemenetekhez csatlakoznak. Győződjön meg róla, hogy 10 kohmos lehúzó ellenállást használ.

Vázlat

A kód

/*
  ButtonMouseControl

  Csak Leonardo és Due kártyákhoz.

  Az Arduino Leonardo, Micro vagy Due öt nyomógombbal vezérli az egeret.

  Hardware:
  - öt nyomógomb a D2, D3, D4, D5, D6-hoz csatlakoztatva

  Az egér mozgása mindig relatív. Ez a vázlat négy nyomógombot olvas,
  és ezek segítségével állítja be az egér mozgását. 

  FIGYELEM: Amikor a Mouse.move() parancsot használja, az Arduino átveszi az egeret!
  Az egérparancsok használata előtt győződjön meg arról, hogy rendelkezik a vezérléssel. 

  created 15 Mar 2012
  modified 27 Mar 2012
  by Tom Igoe

  Ez a kód nyilvános.

  https://docs.arduino.cc/built-in-examples/usb/ButtonMouseControl
*/

#include "Mouse.h"

// állítsa be a kivezetésszámokat az öt gombhoz:
const int upButton = 2;
const int downButton = 3;
const int leftButton = 4;
const int rightButton = 5;
const int mouseButton = 6;

int range = 5;              // X vagy Y mozgás kimeneti tartománya; befolyásolja a mozgás sebességét 
int responseDelay = 10;     // az egér válaszkésleltetése, ms-ban


void setup() {
  // inicializálja a gombok bemeneteit:
  pinMode(upButton, INPUT);
  pinMode(downButton, INPUT);
  pinMode(leftButton, INPUT);
  pinMode(rightButton, INPUT);
  pinMode(mouseButton, INPUT);
  // inicializálja az egérvezérlést:
  Mouse.begin();
}

void loop() {
  // olvasd le a gombokat:
  int upState = digitalRead(upButton);
  int downState = digitalRead(downButton);
  int rightState = digitalRead(rightButton);
  int leftState = digitalRead(leftButton);
  int clickState = digitalRead(mouseButton);

  // Számítsa ki a mozgási távolságot a gomb állapotai alapján:
  int  xDistance = (leftState - rightState) * range;
  int  yDistance = (upState - downState) * range;

  // ha X vagy Y nem nulla, mozgassa:
  if ((xDistance != 0) || (yDistance != 0)) {
    Mouse.move(xDistance, yDistance, 0);
  }

  // ha megnyomja az egérgombot:
  if (clickState == HIGH) {
    // ha az egér nincs lenyomva, nyomja meg:
    if (!Mouse.isPressed(MOUSE_LEFT)) {
      Mouse.press(MOUSE_LEFT);
    }
  }
  // else nincs megnyomva az egérgomb:
  else {
    // ha meg van nyomva az egér, engedje el:
    if (Mouse.isPressed(MOUSE_LEFT)) {
      Mouse.release(MOUSE_LEFT);
    }
  }

  // késleltetés, hogy az egér ne mozogjon túl gyorsan:
  delay(responseDelay);
}

Tudj meg többet

További alapvető oktatóanyagokat a beépített példák részben talál.

Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.