Mục lục:

Arduino và bàn di chuột Tic Tac Toe: 8 bước (có hình ảnh)
Arduino và bàn di chuột Tic Tac Toe: 8 bước (có hình ảnh)

Video: Arduino và bàn di chuột Tic Tac Toe: 8 bước (có hình ảnh)

Video: Arduino và bàn di chuột Tic Tac Toe: 8 bước (có hình ảnh)
Video: 🔴 Arduino #7 | Cách Sử Dụng Bàn Phím Ma Trận 4x4 | How To Use 4x4 Matrix Keypad 2024, Tháng Chín
Anonim
Arduino và bàn di chuột Tic Tac Toe
Arduino và bàn di chuột Tic Tac Toe

Hoặc, một bài tập về ghép kênh đầu vào và đầu ra, và làm việc với các bit. Và một bài nộp cho cuộc thi Arduino.

Đây là cách triển khai trò chơi tic tac toe sử dụng dãy đèn LED hai màu 3x3 cho màn hình, bàn di chuột điện trở đơn giản và Arduino để gắn kết mọi thứ với nhau. Để xem nó hoạt động như thế nào, hãy xem video: Dự án này yêu cầu gì: Các bộ phận và vật tư tiêu hao Một bảng mạch hoàn chỉnh (hoặc bảng dải) Chín đèn LED hai màu, cực âm chung Chín điện trở giống hệt nhau, trong phạm vi 100-220 ohm Sáu điện trở giống hệt nhau, trong Phạm vi 10kohm - 500kohm Một cực đơn, công tắc ném đôi Một loạt chân cắm Đầu dây Một bó dây điện Một tấm hình vuông nhỏ bằng acrylic trong suốt, dày ~ 1 mm, cạnh 8 cm Băng dính trong suốt Bộ phận làm nóng (tùy chọn) Tất cả những điều trên là những vật dụng khá phổ biến, tổng chi phí không được vượt quá 20 USD. tìm thấy tại https://www.arduino.cc. Tiếp tục với bản dựng!

Bước 1: Nối dây cho Ma trận LED

Đấu dây cho Ma trận LED
Đấu dây cho Ma trận LED
Đấu dây cho Ma trận LED
Đấu dây cho Ma trận LED

Để đèn LED phát sáng, cả hai dây dẫn của nó phải được kết nối. Nếu chúng tôi dành một cặp chân cho mỗi 18 đèn LED (9 đỏ, 9 xanh), chúng tôi sẽ nhanh chóng hết chân trên Arduino. Tuy nhiên, với việc ghép kênh, chúng ta sẽ có thể xác định tất cả các đèn LED chỉ với 9 chân! Để làm được điều này, các đèn LED được nối dây theo kiểu thanh ngang, như thể hiện trong hình đầu tiên. Các đèn LED được nhóm thành các cột có ba và các cực âm của chúng được nhóm thành các hàng sáu con. chọn đèn LED nào chúng ta muốn sáng lên, vì chỉ có một đường khả thi mà dòng điện có thể đi. Ví dụ, trong hình thứ hai, đặt cực dương màu xanh lá cây cao 1 dòng và cực âm 1 dòng thấp, đèn LED màu xanh lá cây phía dưới bên trái sáng lên. Đường dẫn hiện tại trong trường hợp này được hiển thị bằng màu xanh lam, nhưng nếu bạn muốn phát sáng nhiều hơn một đèn LED trên các đường khác nhau thì sao? Chúng tôi sẽ sử dụng tầm nhìn bền bỉ để đạt được điều này. Bằng cách chọn các cặp đường LED rất nhanh chóng, nó tạo ra ảo giác rằng tất cả các đèn LED đã chọn đều sáng cùng một lúc.

Bước 2: Bố cục ma trận LED

Bố cục ma trận LED
Bố cục ma trận LED
Bố cục ma trận LED
Bố cục ma trận LED

Sơ đồ mạch bên dưới cho thấy cách các đèn LED được đấu dây vật lý (G1-G9: đèn LED xanh lục, R1-R9: đèn LED đỏ). Sơ đồ này dành cho các đèn LED màu đỏ và xanh lục đơn lẻ, nếu bạn đang sử dụng đèn LED màu đỏ / xanh lá cây cực âm chung hai màu, chỉ có một chân cực âm cho mỗi cặp màu đỏ / xanh lá cây mà bạn phải nối dây. Các đường cực dương màu đỏ và xanh lá cây đi vào các chân PWM của Arduino (chân 3, 5, 6, 9, 10, 11 trên Duemilanove), để chúng ta có thể có các hiệu ứng như mờ dần về sau. Các đường cực âm đi vào chân 4, 7 và 8. Mỗi đường cực âm và cực dương có điện trở 100 ohm để bảo vệ.

Bước 3: Giải quyết Ma trận LED

Đối với mã tic tac toe, chúng ta sẽ cần có thể lưu trữ các thông tin sau về đèn LED: - đèn LED có sáng hay không - nếu sáng, cho dù nó là màu đỏ hay màu xanh lá cây Một cách để thực hiện việc này là lưu trữ trạng thái trong một mảng 9 ô, sử dụng ba chữ số để biểu thị trạng thái (0 = tắt, 1 = bật màu đỏ, 2 = bật màu xanh lục). Ví dụ: mỗi khi chúng ta cần kiểm tra các trạng thái của đèn LED, để kiểm tra xem có điều kiện thắng hay không, chúng ta sẽ cần chuyển qua mảng. Đây là một phương pháp khả thi, nhưng khá rắc rối. Một phương pháp sắp xếp hợp lý hơn sẽ là sử dụng hai nhóm chín bit. Nhóm chín bit đầu tiên lưu trữ trạng thái bật-tắt của đèn LED và nhóm chín bit thứ hai lưu trữ màu sắc. Sau đó, thao tác các trạng thái LED đơn giản trở thành vấn đề số học và dịch chuyển bit. Đây là một ví dụ hoạt động. Giả sử chúng ta vẽ lưới tic tac toe của mình bằng đồ thị và trước tiên sử dụng các số 1 và 0 để biểu thị trạng thái bật-tắt (1 là bật, 0 là tắt): 000 000 = ma trận với đèn LED phía dưới bên trái sáng 100 100 010 = ma trận có đường chéo Đèn LED sáng 001 Nếu chúng ta liệt kê các ô từ dưới cùng bên trái, chúng ta có thể viết các biểu diễn trên dưới dạng một chuỗi các bit. Trong trường hợp đầu tiên, đó sẽ là 100000000 và trong trường hợp thứ hai, nó sẽ là 001010100. Nếu chúng ta coi đây là các biểu diễn nhị phân, thì mỗi chuỗi bit có thể được cô đọng thành một số duy nhất (256 trong trường hợp đầu tiên, 84 trong trường hợp thứ hai). Vì vậy, thay vì sử dụng một mảng để lưu trữ trạng thái của ma trận, chúng ta có thể chỉ sử dụng một số duy nhất! Tương tự, chúng ta có thể biểu diễn màu của đèn LED theo cùng một cách (1 là màu đỏ, 0 là màu xanh lá cây). Trước tiên, hãy giả sử tất cả các đèn LED đều sáng (vì vậy trạng thái bật-tắt được biểu thị bằng 511). Sau đó, ma trận bên dưới sẽ đại diện cho trạng thái màu của các đèn LED: 010 xanh lá cây, đỏ, xanh lục 101 đỏ, xanh lục, đỏ 010 xanh lục, đỏ, xanh lục Bây giờ, khi hiển thị ma trận LED, chúng ta chỉ cần quay vòng qua từng bit, đầu tiên ở trạng thái bật-tắt, và sau đó ở trạng thái màu. Ví dụ: giả sử trạng thái bật-tắt của chúng tôi là 100100100 và trạng thái màu là 010101010. Đây là thuật toán của chúng tôi để chiếu sáng ma trận LED: Bước 1. Thực hiện một chút bổ sung trạng thái bật-tắt với một nhị phân 1 (tức là bit mặt nạ). Bước 2. Nếu đúng, đèn LED sáng. Bây giờ, hãy thực hiện phép cộng bitwise của trạng thái màu với một nhị phân 1. Bước 3. Nếu đúng, hãy thắp sáng đèn LED màu đỏ. Nếu nó sai, hãy thắp sáng đèn LED màu xanh lá cây. Bước 4. Chuyển cả trạng thái bật-tắt và trạng thái màu, một bit sang phải (tức là dịch chuyển bit). Bước 5. Lặp lại các bước 1 - 4 cho đến khi tất cả chín bit đã được đọc. Lưu ý rằng chúng tôi đang điền ngược ma trận - chúng tôi bắt đầu với ô 9, sau đó tiếp tục quay trở lại ô 1. Ngoài ra, trạng thái bật-tắt và màu sắc được lưu trữ dưới dạng số nguyên không dấu (từ) thay vì kiểu số nguyên có dấu. Đó là bởi vì trong quá trình dịch chuyển bit, nếu chúng ta không cẩn thận, chúng ta có thể vô tình thay đổi dấu hiệu của biến. Kèm theo đó là mã tăng sáng ma trận LED.

Bước 4: Cấu tạo Touch Pad

Cấu tạo Touch Pad
Cấu tạo Touch Pad
Cấu tạo Touch Pad
Cấu tạo Touch Pad
Cấu tạo Touch Pad
Cấu tạo Touch Pad
Cấu tạo Touch Pad
Cấu tạo Touch Pad

Bàn di chuột được làm từ một tấm acrylic mỏng, đủ lớn để phủ lên ma trận LED. Sau đó, băng các dây hàng và dây cột lên tấm acrylic, sử dụng băng keo trong. Băng keo trong cũng được sử dụng làm miếng đệm cách điện giữa các dây dẫn, tại các điểm giao cắt. Các vết dấu vân tay không chỉ trông xấu xí mà còn khiến băng dính ít dính hơn. Hàn điện trở thẳng hàng với dây dẫn, trước khi hàn trên các đầu nối. Các điện trở được sử dụng ở đây là 674k, nhưng bất kỳ giá trị nào từ 10k đến 1M đều ổn. Các cột.

Bước 5: Bàn di chuột - Cách hoạt động

Touch Pad - Cách hoạt động
Touch Pad - Cách hoạt động
Touch Pad - Cách hoạt động
Touch Pad - Cách hoạt động

Cũng giống như chúng tôi đã sử dụng bộ ghép kênh thanh ngang để thiết lập ma trận LED với các chân cắm tối thiểu, chúng tôi có thể sử dụng bộ ghép kênh thanh ngang tương tự để thiết lập mảng cảm biến cảm ứng, sau đó chúng tôi có thể sử dụng để kích hoạt các đèn LED. Khái niệm cho bàn di chuột này rất đơn giản. Về cơ bản nó là một lưới thép, với ba dây trần chạy thành hàng và ba dây trần chạy trong cột phía trên các hàng. Tại mỗi điểm giao nhau là một hình vuông nhỏ cách điện ngăn không cho hai dây chạm vào nhau. Một ngón tay chạm vào giao lộ sẽ tiếp xúc với cả hai dây, dẫn đến một điện trở rất lớn, nhưng hữu hạn giữa hai dây. Do đó, một dòng điện nhỏ, nhưng có thể phát hiện được, do đó có thể được tạo ra để chạy từ dây này sang dây khác, thông qua ngón tay. Bước 2: Đặt các dòng hàng thành INPUT, với kích hoạt pullups bên trong. Bước 3: Đọc tương tự trên mỗi dòng hàng cho đến khi giá trị giảm xuống dưới một ngưỡng nhất định. Điều này cho bạn biết giao điểm được nhấn nằm ở hàng nào. Bước 4: Lặp lại các bước 1-3, nhưng bây giờ với các cột là đầu vào và các hàng là đầu ra. Điều này cho bạn biết giao điểm được nhấn là cột nào. Để giảm thiểu ảnh hưởng của nhiễu, một số kết quả đọc được lấy và sau đó lấy giá trị trung bình. Kết quả trung bình sau đó được so sánh với một ngưỡng. Vì phương pháp này chỉ kiểm tra một ngưỡng nên nó không phù hợp để phát hiện các lần ép đồng thời. Tuy nhiên, vì tic tac toe tiến hành theo lượt nên bạn chỉ cần đọc một lần nhấn là đủ. Đính kèm là bản phác thảo minh họa cách hoạt động của bàn di chuột.

Bước 6: Kết hợp mọi thứ lại với nhau

Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau

Bây giờ tất cả các thành phần riêng lẻ đã hoàn thành, đã đến lúc đặt tất cả chúng lại với nhau. Bạn có thể cần phải sắp xếp lại số thứ tự chân trong mã ma trận LED để đồng bộ hóa với cảm biến lưới dây. Cố định lưới dây tại vị trí bằng dây buộc hoặc chất kết dính bạn chọn và dán vào một bảng chơi đẹp. Thêm công tắc giữa chân 12 và mặt đất của Arduino. Công tắc này để chuyển đổi giữa chế độ 2 người chơi và chế độ 1 người chơi (so với bộ vi điều khiển).

Bước 7: Lập trình Tic Tac Toe

Đính kèm là mã của trò chơi. Đầu tiên, hãy chia nhỏ trò chơi tic tac toe thành các bước khác nhau, trong chế độ hai người chơi: Bước 1: Người chơi A chọn một ô chưa được lấp đầy bằng cách chạm vào giao lộ. Bước 2: Đèn LED cho ô đó sáng lên với màu A. Bước 3: Kiểm tra xem người chơi A có thắng hay không. Bước 4: Người chơi B chọn một ô chưa được lấp đầy. Bước 5: Đèn LED cho ô đó sáng lên với màu B. Bước 6: Kiểm tra xem người chơi B có thắng hay không. Bước 7: Lặp lại 1-6 cho đến khi có điều kiện thắng hoặc nếu tất cả các ô được lấp đầy. Đọc các ô: Chương trình lặp lại giữa việc đọc lưới và hiển thị ma trận LED. Miễn là cảm biến lưới không đăng ký giá trị khác 0, vòng lặp này sẽ tiếp tục. Khi một nút giao được nhấn, biến Pressed sẽ lưu trữ vị trí của ô được nhấn. Kiểm tra xem ô đó có chưa được lấp đầy hay không: Khi thu được số đọc vị trí (biến Pressed), nó sẽ được so sánh với trạng thái ô hiện tại (được lưu trữ trong biến GridOnOff) bằng cách sử dụng một phép bổ sung bitwise. Nếu ô đã nhấn chưa được lấp đầy, thì hãy tiếp tục làm sáng đèn LED, nếu không, hãy quay lại đọc các ô. Đánh dấu màu sắc: Một biến boolean, Turn, được sử dụng để ghi lại lượt của ai. Màu đèn LED được chọn khi chọn ô được xác định bởi biến này, biến này sẽ thay thế mỗi khi ô được chọn.). Hai phép bổ sung bitwise được sử dụng để so sánh các vị trí ô đã lấp đầy của người chơi với các điều kiện chiến thắng. Nếu có một trận đấu, chương trình sẽ hiển thị quy trình thắng, sau đó bắt đầu một trò chơi mới. Sau đó, các đèn LED sẽ mờ dần và trò chơi mới được bắt đầu. Chuyển sang chế độ một người chơi: Nếu công tắc ở vị trí bật, chương trình sẽ chuyển sang chế độ một người chơi, với người chơi bắt đầu trước. Vào cuối lượt của người chơi, chương trình chỉ cần chọn một ô ngẫu nhiên. Rõ ràng, đây không phải là chiến lược thông minh nhất!

Bước 8: Nhận xét và cải tiến thêm

Đây là video hiển thị chế độ một người chơi, với chương trình chơi các bước di chuyển hoàn toàn ngẫu nhiên: Chương trình được hiển thị ở đây chỉ là phiên bản tối thiểu, không có xương. Nhiều việc khác có thể được thực hiện với điều này: 1) Chiếu sáng ba đèn LED cùng một lúc Mã hiện tại chỉ hiển thị một đèn LED cùng một lúc. Tuy nhiên, với hệ thống dây điện được hiển thị ở đây, có thể làm sáng tất cả các đèn LED được kết nối với một đường catốt cùng một lúc. Vì vậy, thay vì quay vòng qua tất cả chín vị trí, tất cả những gì bạn cần làm là quay vòng qua ba đường catốt.2) Sử dụng ngắt để hiển thị đèn LED chập chờn. Bằng cách sử dụng ngắt, thời gian của đèn LED có thể được điều khiển chính xác và dẫn đến màn hình hiển thị mượt mà hơn. toe player. Hy vọng bạn đã thích đọc hướng dẫn này nhiều như tôi đã rất vui khi làm việc với nó!

Đề xuất: