Arduino - Điều khiển nút chuột
Sử dụng thư viện Chuột, bạn có thể điều khiển con trỏ trên màn hình của máy tính bằng Arduino Leonardo, Micro hoặc Due.
Ví dụ cụ thể này sử dụng năm nút bấm để di chuyển con trỏ trên màn hình. Bốn trong số các nút là định hướng (lên, xuống, trái, phải) và một là để nhấp chuột trái. Chuyển động con trỏ từ Arduino luôn là tương đối. Mỗi khi đầu vào được đọc, vị trí của con trỏ được cập nhật so với vị trí hiện tại của nó.
Bất cứ khi nào một trong các nút định hướng được nhấn, Arduino sẽ di chuyển chuột, ánh xạ đầu vào CAO đến phạm vi 5 theo hướng thích hợp.
Nút thứ năm dùng để điều khiển một cú nhấp chuột trái từ chuột. Khi nút được nhả ra, máy tính sẽ nhận ra sự kiện.
Thành phần bắt buộc
Bạn sẽ cần các thành phần sau:
- 1 × Breadboard
- 1 × Arduino Leonardo, bảng Micro hoặc bảng do
- Điện trở 5 × 10k ohm
- 5 × nút bấm tạm thời
Thủ tục
Làm theo sơ đồ mạch và nối các thành phần trên breadboard như trong hình dưới đây.
Phác thảo
Mở phần mềm Arduino IDE trên máy tính của bạn. Mã hóa bằng ngôn ngữ Arduino sẽ điều khiển mạch của bạn. Mở một tệp phác thảo mới bằng cách nhấp vào Mới.
Đối với ví dụ này, bạn cần sử dụng Arduino IDE 1.6.7
Mã 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);
}
Mã cần lưu ý
Kết nối bo mạch của bạn với máy tính bằng cáp micro-USB. Các nút được kết nối với đầu vào kỹ thuật số từ chân 2 đến chân 6. Đảm bảo rằng bạn sử dụng điện trở kéo xuống 10k.