2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Tạo bộ đếm tăng lên khi nhấn một nút bằng MAX7221.
Bước 1: Các bộ phận
MAX7221 hoặc MAX7219
Chuyển
4 Màn hình 7 đoạn (cực âm chung)
2 Điện trở: 10k và 9.53k (Tôi đã sử dụng 9.1k và nó vẫn hoạt động)
Arduino
Bước 2: Xây dựng mạch
Tôi chỉ viết ra các ghim mà tôi đã sử dụng, bạn có thể tìm thấy bố cục ghim hoàn chỉnh trên biểu dữ liệu hoặc tôi đính kèm nó. Đảm bảo tra cứu Hiển thị 7 phân đoạn của bạn vì nó có thể khác với của tôi nhưng quy trình thì giống nhau.
1. Kết nối chữ số 0 - 3 trên MAX7221 với chữ số 1 - 4 trên màn hình. Chữ số TỐI ĐA 0 kết nối với chữ số 1 của màn hình, v.v … Màn hình chỉ độc đáo và bắt đầu từ 1 thay vì 0.
2. Kết nối Phân đoạn A - G trên MAX7221 với Phân đoạn A - G trên màn hình.
3. Cấp nguồn và nối đất cho MAX. VCC đi đến chân 19. Điện trở 10k cũng được kết nối với chân 19 và 18. Nối đất vào chân 4 và 9.
4. MAX7221 giao tiếp với Arduino qua SPI (Giao diện ngoại vi nối tiếp). Trong trường hợp này, chỉ cần 3 dây vì tôi không sử dụng MISO (Master In Slave Out). Trên MAX7221 kết nối chân 1 (Din) với Arduino, trong trường hợp của tôi, tôi đã sử dụng chân 12. Đây là MOSI (Master Out Slave In) của bạn hoặc dữ liệu. Chân 12 trên MAX là CS (Đầu vào Chọn chip) và là cách dữ liệu được tải vào Thanh ghi Shift, tôi đã kết nối chân này với chân 9 trên Arduino. Kết nối cuối cùng là CLK là chân 13 trên MAX, tôi đã kết nối này với chân 10 trên Arduino.
Đảm bảo cung cấp nguồn và nối đất qua Arduino bằng cách sử dụng 5 volt. Tôi đã gặp phải vấn đề trong đó Arduino của tôi không cung cấp đủ năng lượng cho bảng mạch của tôi.
Đây là cho Biểu dữ liệu MAX7221. Ngoài ra những hình ảnh đến từ đâu.
www.mouser.com/datasheet/2/256/max7219-max…
Bước 3: Công tắc
Tôi đã nối dây chuyển đổi từ Sơ đồ ở trên. Tìm thấy tại
Tôi đã sử dụng chân 8 trên Arduino để điều khiển công tắc và một điện trở 10k.
Bước 4: Mã
Tôi đã sử dụng thư viện LedControl.h được tìm thấy trên GitHub và mã cơ bản của chúng để bật MAX7221. Sau đó, tôi đã sửa đổi mã để đếm từ 0 - 9999 khi nút đang được nhấn.
#include "LedControl.h"
nút int = 8;
LedControl lc = LedControl (12, 10, 9, 1);
void setup () {
pinMode (nút, INPUT);
lc.shutdown (0, sai); // MAX7221 đang ở chế độ tiết kiệm năng lượng, vì vậy chúng tôi phải đánh thức nó
lc.setIntensity (0, 15); // Đặt độ sáng, tối đa 15
lc.clearDisplay (0); // xóa màn hình
}
void loop () {
int state = digitalRead (nút);
int i = 0;
int j = 0;
int k = 0;
int l = 0;
trong khi (1) {
state = digitalRead (nút);
trong khi (trạng thái == 1) {
state = digitalRead (nút);
lc.setDigit (0, 3, i, false);
i ++;
chậm trễ (100); // bạn có thể lộn xộn với điều này
nếu (tôi == 10) {
i = 0;
j ++;
nếu (j == 10) {
j = 0;
k ++;
nếu (k == 10) {
k = 0;
l ++;
nếu (l == 10) {
trong khi (1) {
lc.setRow (0, 0, 0x3E); // khi hiển thị đạt đến 9999 nó sẽ hiển thị U - 1
lc.setRow (0, 1, 0x1); // Theo giá trị thập phân Hexi
lc.setRow (0, 2, 0x1);
lc.setDigit (0, 3, 1, false);
}
}
lc.setDigit (0, 0, l, false);
}
lc.setDigit (0, 1, k, false);
}
lc.setDigit (0, 2, j, false);
}
}
}
}