Tất cả chúng ta đều quen thuộc với xúc xắc và thường chơi trò chơi LUDO hoặc SANP SIDI (Snake & Ladders) bằng cách sử dụng xúc xắc. Xúc xắc là một hộp rắn loại squire có chứa 6 số khác nhau trên tất cả các mặt của nó. Chúng ta ném xúc xắc lên một bề mặt để nhận được một số ngẫu nhiên trong khi chơi trò chơi. Trong dự án này, chúng tôi đã cố gắng tái tạo nó bằng một con xúc xắc kỹ thuật số sử dụng bảng arduino una. Thay cho việc ném xúc xắc, ở đây chúng ta cần nhấn một nút để nhận một số ngẫu nhiên từ 0 đến 6.
Các thành phần bắt buộc
- Arduino UNO
- Hiển thị bảy đoạn (Cực dương chung)
- Nút ấn
- Kết nối dây
- Bảng bánh mì
- 1 k điện trở
- Nguồn cấp
Sơ đồ mạch và giải thích
Như thể hiện trong mạch xúc xắc kỹ thuật số ở trên, arduino được sử dụng để điều khiển toàn bộ quá trình. Hai nút nhấn được sử dụng trong mạch - một để khởi động xúc xắc và nút khác để đặt lại xúc xắc. Arduino đọc hai nút này và thực hiện thao tác. Màn hình bảy phân đoạn được sử dụng để hiển thị kết quả xúc xắc.
Arduino liên tục thực thi hàm rand () và lưu trữ giá trị của nó vào một biến tạm thời. Khi nhấn nút xúc xắc, giá trị lưu trữ được tính toán và hiển thị trên bảy đoạn bằng cách sử dụng phương pháp thích hợp (xem phần lập trình của bài viết).
Ở đây trong mạch xúc xắc này, một màn hình hiển thị bảy đoạn anốt chung được sử dụng để hiển thị số xúc xắc, được kết nối trực tiếp với chân số arduino số 6, 5, 4, 3, 2, 1, 0. Và chân anốt chung của bảy đoạn là được kết nối với +5 volt điện trở 220 Ohm. Hai nút nhấn cũng được kết nối là nút xúc xắc và nút đặt lại được kết nối với chân số 14 (A0) và 15 (A1) đối với mặt đất.
Giải thích mã
Phần lập trình của dự án này đóng một vai trò rất quan trọng để hiển thị số xúc xắc kỹ thuật số ngẫu nhiên trên màn hình bảy phân đoạn. Arduino không chứa bất kỳ thư viện nào để hiển thị bảy đoạn. vì vậy chúng tôi đã tạo toàn bộ mã mà không sử dụng bất kỳ thư viện nào.
Trước hết, chúng tôi chọn pin kỹ thuật số để hiển thị bảy đoạn.
int pin = {6,5,4,3,2,1,0};
Sau đó, chúng ta tạo một mảng gồm 6 chữ số của xúc xắc là 1, 2, 3, 4, 5 và 6.
char chữ số = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Bây giờ chúng tôi đã đưa ra hướng sử dụng chân arduino làm đầu ra.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (xúc xắc, INPUT); pinMode (đặt lại, INPUT); digitalWrite (xúc xắc, CAO); digitalWrite (đặt lại, CAO);
Theo mặc định, chúng tôi gửi mã để hiển thị số 0 trên màn hình bảy đoạn.
int temp = 0x40; for (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = tạm thời >> 1; }
Bây giờ chúng ta chạy hàm rand () để lấy một số ngẫu nhiên.
int temp = rand ();
Và khi chúng ta nhấn nút xúc xắc, chương trình đầu tiên sẽ ánh xạ số ngẫu nhiên này và sau đó gửi số đến hiển thị bảy đoạn bằng cách sử dụng toán tử khôn ngoan bit.
if (digitalRead (xúc xắc) == 0) {int k = temp% 6; temp = chữ số; chờ đợi(); for (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = tạm thời >> 1; } delay (200); }
Và tương tự cho nút đặt lại.
Trong chương trình này, chúng tôi gửi từng bit một. Ở đây chúng tôi áp dụng vòng lặp for chạy 7 lần để gửi dữ liệu đến từng đoạn một.