Arduino - sterowanie przyciskiem myszy
Korzystając z biblioteki myszy, możesz sterować kursorem na ekranie komputera za pomocą Arduino Leonardo, Micro lub Due.
W tym konkretnym przykładzie zastosowano pięć przycisków do przesuwania kursora na ekranie. Cztery przyciski są kierunkowe (w górę, w dół, w lewo, w prawo), a jeden służy do kliknięcia lewym przyciskiem myszy. Ruch kursora z Arduino jest zawsze względny. Za każdym razem, gdy czytane jest wejście, pozycja kursora jest aktualizowana względem jego bieżącej pozycji.
Za każdym razem, gdy zostanie naciśnięty jeden z przycisków kierunkowych, Arduino przesunie mysz, odwzorowując wejście WYSOKIE na zakres 5 w odpowiednim kierunku.
Piąty przycisk służy do sterowania lewym przyciskiem myszy. Po zwolnieniu przycisku komputer rozpozna zdarzenie.
Wymagane składniki
Będziesz potrzebował następujących komponentów -
- 1 × Breadboard
- 1 × płyta Arduino Leonardo, Micro lub Due
- Rezystor 5 × 10 kΩ
- 5 przycisków chwilowych
Procedura
Postępuj zgodnie ze schematem obwodu i podłącz komponenty na płytce stykowej, jak pokazano na poniższym obrazku.
Naszkicować
Otwórz oprogramowanie Arduino IDE na swoim komputerze. Kodowanie w języku Arduino będzie sterować twoim obwodem. Otwórz nowy plik szkicu, klikając Nowy.
W tym przykładzie musisz użyć Arduino IDE 1.6.7
Kod Arduino
/*
Button Mouse Control
For Leonardo and Due boards only .Controls the mouse from
five pushbuttons on an Arduino Leonardo, Micro or Due.
Hardware:
* 5 pushbuttons attached to D2, D3, D4, D5, D6
The mouse movement is always relative. This sketch reads
four pushbuttons, and uses them to set the movement of the mouse.
WARNING: When you use the Mouse.move() command, the Arduino takes
over your mouse! Make sure you have control before you use the mouse commands.
*/
#include "Mouse.h"
// set pin numbers for the five buttons:
const int upButton = 2;
const int downButton = 3;
const int leftButton = 4;
const int rightButton = 5;
const int mouseButton = 6;
int range = 5; // output range of X or Y movement; affects movement speed
int responseDelay = 10; // response delay of the mouse, in ms
void setup() {
// initialize the buttons' inputs:
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);
// initialize mouse control:
Mouse.begin();
}
void loop() {
// read the buttons:
int upState = digitalRead(upButton);
int downState = digitalRead(downButton);
int rightState = digitalRead(rightButton);
int leftState = digitalRead(leftButton);
int clickState = digitalRead(mouseButton);
// calculate the movement distance based on the button states:
int xDistance = (leftState - rightState) * range;
int yDistance = (upState - downState) * range;
// if X or Y is non-zero, move:
if ((xDistance != 0) || (yDistance != 0)) {
Mouse.move(xDistance, yDistance, 0);
}
// if the mouse button is pressed:
if (clickState == HIGH) {
// if the mouse is not pressed, press it:
if (!Mouse.isPressed(MOUSE_LEFT)) {
Mouse.press(MOUSE_LEFT);
}
} else { // else the mouse button is not pressed:
// if the mouse is pressed, release it:
if (Mouse.isPressed(MOUSE_LEFT)) {
Mouse.release(MOUSE_LEFT);
}
}
// a delay so the mouse does not move too fast:
delay(responseDelay);
}
Kod do uwagi
Podłącz swoją płytkę do komputera za pomocą kabla micro-USB. Przyciski są podłączone do wejść cyfrowych od pinów 2 do 6. Upewnij się, że używasz rezystorów pull-down 10k.