Tất cả bắt đầu với một trò chơi nhỏ từ thời kỳ đen tối tên là “Mario”, ngay từ khi còn là một anh chàng tí hon nhảy lên vịt để cứu công chúa của tôi cho đến khi trở thành một Hoàng tử đẹp trai nam tính đi lang thang ở Ba Tư (Prince of Persia) chiến đấu chống lại bóng tối để cứu thế giới của mình đằng sau Tôi là một người rất thích chơi trò chơi điện tử và tôi đã lớn lên khi chơi chúng. Nhưng đôi khi họ cảm thấy buồn chán và tôi cảm thấy ít tham gia hơn. Ngày nay, các bảng điều khiển trò chơi tiên tiến cho phép chơi game ảo và giúp chúng ta cảm nhận trò chơi tốt hơn rất nhiều so với bàn phím hoặc chuột có thể làm.
Là một người say mê Arduino, tôi đã chán khi chơi trò chơi nổi tiếng có tên “Angry Birds” bằng bàn phím và chuột và quyết định tạo Bộ điều khiển trò chơi của riêng mình bằng cách sử dụng Cảm biến linh hoạt và Chiết áp. Khi cảm biến flex được kéo, con chim trên máy phóng cũng sẽ được kéo và bạn có thể sử dụng chiết áp để đặt hướng mà nó sẽ được phóng. Sau đó, khi bạn thả cảm biến flex, con chim sẽ được đưa ra. Tôi rất thích làm điều đó, vì vậy nếu bạn đang xây dựng một cái gì đó rất giống thì hướng dẫn này sẽ rất hữu ích. Hướng dẫn này cũng sẽ hữu ích trong việc Điều khiển Con trỏ chuột bằng Chiết áp.
Yêu cầu Phần mềm và Phần cứng:
Phần mềm:
- Arduino IDE
- Xử lý IDE
- Trò chơi Angry Birds trên máy tính
Phần cứng:
- Arduino (Bất kỳ phiên bản nào)
- Chiết áp
- Cảm biến Flex
- Điện trở 47K ohm
- Kết nối dây
- Breadboard
Khái niệm đằng sau:
Bảng Arduino đọc các giá trị từ Potentiometer và Flex Senor và Truyền chúng đến Máy tính xách tay / PC thông qua cổng USB COM thông qua chức năng Serial.write () thông thường. Sau đó, chúng tôi đọc thông tin này bằng Xử lý và điều khiển con trỏ chuột bằng lớp Robot trong Java được hỗ trợ bởi xử lý IDE. Chúng tôi đã lập trình IDE xử lý theo cách mà khi kéo cảm biến Flex, một cú nhấp chuột sẽ được thực hiện và dựa trên mức độ nó được kéo, con trỏ chuột sẽ di chuyển theo hướng X. Sau đó, dựa trên giá trị từ chiết áp, chúng ta sẽ di chuyển con trỏ chuột theo hướng Y, bằng cách này chúng ta có thể thiết lập hướng mà con chim sẽ được tung ra.
Sơ đồ mạch:
Mạch để chơi Angry Bird sử dụng Cảm biến Flex và Chiết áp rất dễ dàng.
Chúng tôi đã kết nối đơn giản một chiết áp và một cảm biến flex với các đầu vào Analog (A0, A1) của Arduino. Đầu ra của cảm biến Flex cũng được kéo xuống bằng cách sử dụng một điện trở kéo xuống 47K.
Bạn có thể kết nối trực tiếp nó trên breadboard hoặc hàn chúng vào bảng Perf và lắp ráp nó trên găng tay hoặc vật gì đó để làm cho nó sáng tạo hơn. Tôi chỉ đơn giản sử dụng một breadboard để thực hiện các kết nối của mình như hình dưới đây:
Chương trình Arduino:
Mã Arduino hoàn chỉnh được đưa ra ở cuối hướng dẫn. Vài dòng quan trọng được giải thích dưới đây.
Chúng tôi khởi tạo chương trình để hoạt động với tốc độ truyền 9600 và bắt đầu đọc các giá trị từ cảm biến Flex và Potentiometer. Như chúng ta đã biết, hàm serial.write () chỉ có thể gửi một byte dữ liệu tại một thời điểm. Vì Một byte là 8 bit và 2 ^ 8 = 256. Chúng ta sẽ có thể gửi các giá trị từ 0 đến 256. Vì vậy, chúng ta phải nén các giá trị của đầu ra cảm biến Flex và đầu ra chiết áp thành 0 đến 256.
Để làm điều đó, chúng tôi sử dụng hàm map () trong Arduino. Tất cả các giá trị từ cảm biến flex được chuyển đổi từ 5 thành 100, vì vậy khi chúng ta bẻ cong, cảm biến sẽ tăng từ 5 và khi thả ra, nó sẽ quay trở lại 5. Đề cập đến việc nhấp chuột, giá trị 1 và 0 được sử dụng. Khi gửi 1, chuột được nhấn và khi gửi 0, chuột được thả.
if (FlexValue> = 65 && FlexValue <= 120) // cảm biến flex của tôi thay đổi từ 65 đến 120, thì có thể bạn sẽ khác {FlexValue = map (FlexValue, 120,65,0,100); // dựa trên việc bẻ cong chuyển đổi thành 0 thành 100 nếu (FlexValue> = 5) // 1 và 0 được sử dụng để nhấp chuột nên bắt đầu từ 5 {Mclick = true; Serial.write (1); // 1 được gửi để thực hiện nhấp chuột trái vào Serial.write (FlexValue); // Giá trị Flex là khoảng cách di chuyển chuột theo hướng X} else {Mclick = false; Serial.write (0);}}
Tương tự như vậy, các giá trị tạo thành chiết áp được chuyển đổi từ 101 thành 200 cho hàm map () và được gửi đến cổng COM của Máy tính xách tay với hàm Serial.write () như hình dưới đây.
if (potValue <= 200) {potValue = map (potValue, 0,200.101,201); // Dựa lần lượt chuyển thành 101 thành 201 Serial.write (potValue); // Giá trị Pot là khoảng cách di chuyển chuột theo hướng Y}
Phần còn lại của chương trình được giải thích bằng cách sử dụng các nhận xét.
Mã xử lý:
Xử lý là một ứng dụng phát triển Mã nguồn mở và có thể dễ dàng tải xuống và sử dụng để phát triển các dự án thú vị bằng Arduino hoặc các Bộ vi điều khiển khác. Chúng tôi đã thực hiện một số dự án bằng Xử lý và bạn có thể kiểm tra chúng bằng cách nhấp vào các liên kết bên dưới.
- Tự làm đài FM bằng cách xử lý
- Thực tế ảo / Điều khiển cử chỉ bằng Arduino
- Phòng trò chuyện riêng sử dụng Arduino.
- Hệ thống rađa Arduino sử dụng ứng dụng xử lý và cảm biến siêu âm
- Theo dõi và phát hiện khuôn mặt thời gian thực bằng Arduino
- Tự làm đồng hồ tốc độ bằng Arduino và Xử lý
- Trò chơi Ping Pong sử dụng Arduino Accelerometer
- Robot Biped sử dụng Arduino
- Máy ảnh nhiệt Arduino DIY
Trong dự án này, chúng tôi đã sử dụng IDE xử lý để đọc các giá trị cổng COM và điều khiển con trỏ chuột dựa trên các giá trị nhận được qua cổng COM. Các luật xử lý hoàn chỉnh cho Angry Bird Game Controller này có thể được tải về từ liên kết dưới đây:
- Mã xử lý cho Bộ điều khiển trò chơi Angry Bird này (Nhấp chuột phải và 'Lưu liên kết thành')
Chương trình Arduino có thể được tìm thấy ở cuối hướng dẫn này. Mã Xử lý đã được sửa đổi để phù hợp với mục đích của chúng tôi từ mã do yoggy đưa ra trên trang GitHub của mình.
Dữ liệu đến từ cổng COM phải được đọc ở cùng tốc độ truyền mà dữ liệu được gửi từ Arduino. Ngoài ra, hãy kiểm tra cổng COM nào mà Arduino của bạn được kết nối bằng cách sử dụng trình quản lý thiết bị. Arduino của tôi đã được kết nối với COM3 và đó là Cổng thứ 0 trong máy tính của tôi và tốc độ truyền trong Arduino là 9600, vì vậy mã như sau
port = new Serial (this, Serial.list (), 9600);
Khi chúng tôi bắt đầu đọc các giá trị, chúng tôi phân biệt nó bằng cách nhận ra nó dựa trên giá trị của nó về cách chúng tôi gửi từ Arduino. Các giá trị lại được ánh xạ từ 0 đến 100 để chúng ta có thể điều khiển chuột dựa trên giá trị đó.
if (port.available ()> 0) {data = port.read (); println (dữ liệu); // Đọc dữ liệu từ cổng COM và lưu vào dữ liệu} if (data> = 101 && data <= 201) // Nếu giá trị if từ 101 đến 201 thì nó phải từ Potentiometer {Turn = int (map (data, 101,201,0,100)); // Sử dụng giá trị đó để biến catapullt} if (data> = 5 && data <= 100) // Nếu giá trị if từ 5 đến 100 thì nó phải từ Flex Sensor {Pull = int (map (data, 5,100, 0,100));} // Sử dụng giá trị đó để kéo máy phóng if (data == 1) click = true; // Sử dụng giá trị đó để nhấn nút chuột if (data == 0) click = false; // Sử dụng giá trị đó để nhả nút chuột
Sau khi phân loại dữ liệu, chúng ta có thể điều khiển chuột bằng cách sử dụng Lớp Robot Java trong Xử lý. Lệnh robot.mouseMove (crntX-Pull, crntY + Turn); có thể được sử dụng để di chuyển chuột đến bất kỳ vị trí mong muốn và các dòng robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); và robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); có thể được sử dụng để nhấn hoặc thả nút chuột tương ứng.
if (click == false) // khi Flex Sesnor không được kéo {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Kéo> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Nhả nút chuột} if (click == true) // khi Flex Sesnor được kéo {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Nhấn nút chuột Robot.mouseMove (crntX-Pull, crntY + Turn); // Di chuyển chuột dựa trên giá trị Flex và POT}}
IDE xử lý khi khởi chạy cũng sẽ hiển thị một Hộp thoại nhỏ trên đó bạn có thể tìm thấy các giá trị Kéo, Quay và trạng thái Click chuột như hình bên dưới
Chi tiết này có thể được sử dụng để gỡ lỗi Chương trình hoặc sửa bất kỳ dữ liệu nào được yêu cầu.
Đang làm việc:
Để làm cho Dự án Angry Bird này hoạt động bằng cách sử dụng mã được cung cấp, hãy lắp ráp phần cứng của bạn theo sơ đồ mạch và tải lên Mã Arduino đã cho. Sau đó, Lưu ý cổng COM nào mà Arduino của bạn được kết nối và thực hiện các thay đổi cần thiết trong mã Xử lý và khởi chạy phác thảo xử lý.
Bây giờ, chỉ cần khởi chạy trò chơi chú chim nổi giận và đặt con trỏ của bạn gần máy phóng và kéo cảm biến linh hoạt để kéo chú chim và đặt hướng bằng chiết áp. Khi hướng được thiết lập, hãy thả cảm biến Flex
EEEEWWWWEEEEEEEEEEEE !!!!!!!!!!……………
Chú chim của bạn sẽ được tung ngay lên không trung và BOOMM !! Trên những chú heo con. Hoạt động hoàn chỉnh có thể được tìm thấy trong Video dưới đây.
Hy vọng bạn thích dự án và có thể xây dựng một cái gì đó tương tự. Nếu bạn có bất kỳ nghi ngờ nào, bạn có thể liên hệ với tôi trên phần bình luận hoặc đăng câu hỏi của bạn trên diễn đàn để giải đáp thắc mắc về kỹ thuật.
Bây giờ, đã đến lúc đâm vào những chiếc hộp heo đất đó và lấy lại những quả trứng chim của chúng ta !!!!