diff --git a/examples/ButtonMouseControl/ButtonMouseControl.ino b/examples/ButtonMouseControl/ButtonMouseControl.ino new file mode 100644 index 0000000..f11a65e --- /dev/null +++ b/examples/ButtonMouseControl/ButtonMouseControl.ino @@ -0,0 +1,80 @@ +/* + ButtonMouseControl + + For native USB boards (e.g., Leonardo, Micro, MKR, Nano 33 IoT, Zero, Due) only. + + Controls the mouse from five pushbuttons. + + Hardware: + - five 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. + + This example code is in the public domain. + + http://www.arduino.cc/en/Tutorial/ButtonMouseControl +*/ + +#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 the mouse button is not pressed: + else { + // if the mouse is pressed, release it: + if (Mouse.isPressed(MOUSE_LEFT)) { + Mouse.release(MOUSE_LEFT); + } + } + + // a delay so the mouse doesn't move too fast: + delay(responseDelay); +} diff --git a/examples/ButtonMouseControl/layout (1).png b/examples/ButtonMouseControl/layout (1).png new file mode 100644 index 0000000..45fdc9c Binary files /dev/null and b/examples/ButtonMouseControl/layout (1).png differ diff --git a/examples/ButtonMouseControl/schematic.png b/examples/ButtonMouseControl/schematic.png new file mode 100644 index 0000000..09998b0 Binary files /dev/null and b/examples/ButtonMouseControl/schematic.png differ