Chế tạo chuột vi tính với Arduino Pro Micro và Joystick

Mô tả dự án: 

Pro Micro là 1 Board Arduino độc đáo với chức năng HID (Human Interface Device) có thể giả lập chuột và bàn phím. Bài này tui sẽ hướng dẫn các bạn làm 1 con chuột độc đáo với Pro Micro và Joystick.

Nguyên lý

Joystick thực ra là 2 cái potentiometer hoạt động độc lập, và ta chỉ cần đọc giá trị thay đổi của chúng rồi dùng thư viện Mouse.h của Arduino để di chuyển chuột tùy theo cái joystick đi nhiều hay ít. Ngoài ra joystick này còn có 1 nút bấm. Ta mặc định đây là nút Left Click của chuột. Đơn giản quá phải hem? wink

Phần cứng

Joystick có 5 chân. Các bạn nối vời Pro Micro theo bảng sau:

Joystick Pro Micro
5V 5V
GD GD
Rx A1
Ry A0
SW 9

 

 

 

Phần mềm

/* HID Joystick Mouse Example */
//Taken from https://www.sparkfun.com/tutorials/3...
#include <Mouse.h>

int horzPin = A0; // Chân nối vô biến trở ngang
int vertPin = A1; // Chân nối vô biến trở dọc
int selPin = 9; // chân nối vô nút nhấn trên joystick

int vertZero, horzZero; //lưu giá trị khởi tạo lúc ban đầu joystick chưa bị xê dịch (thường là 512 - đồ mới, khác 512 đồ cũ)
int vertValue, horzValue; // lưu giá trị analog hiện thời của mỗi biến trở 
const int sensitivity = 100; // Tốc độ chuột, càng lớn càng chậm. Nên để bé hơn 500ms
int mouseClickFlag = 0;

void setup()
{
    pinMode(selPin, INPUT); // nút nhấn trên joystick là input
    digitalWrite(selPin, HIGH); // biến selPin thành INPUT_PULLUP, có thể để pinMode là INPUT_PULLUP không cần dòng này
    delay(500); // dừng 500ms
    vertZero = analogRead(vertPin); // lấy giá trị khởi điểm cho biến trở dọc
    delay(500);
    horzZero = analogRead(horzPin); // lấy giá trị khởi điểm cho biến trở ngang
    delay(500);

}

void loop()
{
    vertValue = analogRead(vertPin) - vertZero; // đọc giá trị tương đối của trục dọc
    delay(1);
    horzValue = analogRead(horzPin) - horzZero; //  đọc giá trị tương đối của trục ngang
    delay(1);
    
    if (vertValue != 0)
        Mouse.move(0, vertValue/sensitivity, 0); // di chuyển trục chỉ theo trục y
    if (horzValue != 0)
        Mouse.move(horzValue/sensitivity, 0, 0); // di chuyển trục chỉ theo trục x
    
    if ((digitalRead(selPin) == 0) && (!mouseClickFlag)) // Nếu nhấn nút và trước đó chưa nhấn nút
    {
        mouseClickFlag = 1;
        Mouse.press(MOUSE_LEFT); // event chuột trái phát ra
    }
    else if ((digitalRead(selPin))&&(mouseClickFlag)) // nếu không còn nhấn nút nữa và trc đó đã nhấn nút
    {
        mouseClickFlag = 0;
        Mouse.release(MOUSE_LEFT); // thả left button
    }
}

 

Lưu ý

Các bạn có thể chỉnh độ nhạy của chuột bằng cách thay đổi biến:

const int sensitivity = 100; 

Biến càng cao  thì chuột càng chậm, và thường thì dưới 500 thì okê.

Gợi ý nâng cao

  • Các bạn có thể gắn thêm 1 potentiometer để điều khiển độ nhạy của chuột.
  • Làm 1 case thật oách cho chuột promicro của mình.  
lên
19 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

ST7565 và ESP8266 - Màn hình LCD bự chà bá chưa đến 100k cho thế giới IoT

Mình rất thích LCD ST7565 này, và đã đặt liền 4 con mà mỗi con quá rẻ có 20k. Nhưng khổ một điều, điện áp hoạt động và IO của LCD ST7565 có 3.3V. Bản thân mình lại không thích việc chơi điện trở để chơi LCD này với Arduino. Lý do đơn giản là phải hàn quá nhiều, mình lại lười crying. Hổm nay, mình đang làm loạt bài về ESP8266 và cũng phải gặp vấn đề điện trở để làm cầu phân áp khi giao tiếp giữa ESP8266 và Arduino.

lên
17 thành viên đã đánh giá bài viết này hữu ích.

Thư viện ST7565 trên Arduino Create - Thử nghiệm đầu tiên: Hoàn hảo!

Mình rất tự hào và hãnh diện, khi thư viện made in Việt Nam đầu tiên của Thái Sơn (Nick Chung) được mình tải lên tại Arduino Create với mục đích thử nghiệm việc biên dịch code online trên Arduino Create đã hoàn thành công việc của nó ngay trong lần thử đầu tiên. Qua bài viết này, mình xin hướng dẫn các bạn lập trình Arduino với Arduino Create thông qua việc làm một ví dụ mẫu về việc cài thư viện và sử dụng nó trên Arduino Create.

lên
7 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Hot: Orange Pi Zero IoT đã ra lò!!!

Vậy là Raspberry Pi Zero W đã được lên kệ hơn 1 tháng. Và đúng như dự đoán, các bạn Trung Quốc đã nhanh chóng cho ra đời 1 sản phẩm nhái đúng chất Tàu xì để cạnh tranh với Raspberry Pi Foundation. Chúng ta không lạ gì với các thể loại Pi cam, chuối, mận, trong đó Orange Pi có lẽ là sản phẩm Pi nhái ưa thích nhất ở VN với giá thành hợp túi tiền người tiêu dùng. Gần đây họ cho ra đời một sản phẩm mới có tên là Orange Pi Zero IoT với giá 10 Mỹ cành với hy vọng chiếm thị phần của Pi Zero W vốn dĩ luôn khan hàng. Ta hãy cùng xem sản phẩm này có gì đặc biệt nha! 

lên
12 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

Một vài hacker phần cứng nổi tiếng và các trò bá đạo của họ

Hacker là gì? Định nghĩa đơn giản là những người khai thác "lỗi hệ thống" để thực hiện mục đích của họ. Sự ra đời của Arduino và Raspberry pi đã làm nở rộ một thế hệ hardware hacker - những người sử dụng phần cứng để hack và làm các trò không tưởng. Bài này tui sẽ giới thiệu 3 hacker khá nổi tiếng và các trò bá đạo của họ.

 

lên
30 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: