- Mô-đun hiển thị 7 phân đoạn và 4 chữ số 7 phân đoạn:
- Kết nối mô-đun 7 đoạn 4 chữ số với Raspberry Pi:
- Lập trình Raspberry Pi của bạn:
- Hiển thị thời gian trên phân đoạn 4 chữ số 7 bằng Raspberry Pi:
Chúng ta đều biết rằng Raspberry Pi là một nền tảng Phát triển tuyệt vời dựa trên bộ vi xử lý ARM. Với sức mạnh tính toán cao, nó có thể tạo ra những điều kỳ diệu trong tay của những người yêu thích điện tử hoặc sinh viên. Tất cả điều này chỉ có thể thực hiện được nếu chúng ta biết cách làm cho nó tương tác với thế giới thực và phân tích dữ liệu thông qua một số thiết bị đầu ra. Có nhiều cảm biến có thể phát hiện các thông số nhất định từ thế giới thời gian thực và chuyển nó sang thế giới kỹ thuật số và chúng tôi phân tích chúng khi xem chúng trên màn hình LCD hoặc một số màn hình khác. Tuy nhiên, sẽ không tiết kiệm nếu sử dụng màn hình LCD với PI để hiển thị lượng dữ liệu nhỏ. Đây là nơi chúng tôi thích sử dụng màn hình LCD chữ và số 16x2 hoặc màn hình 7-Segment. Chúng ta đã học cách sử dụng màn hình LCD chữ và số và màn hình 7 đoạn đơn với Raspberry pi. Hôm nay chúng tôi sẽGiao diện Mô-đun hiển thị 7 phân đoạn 4 chữ số với Raspberry Pi và hiển thị Thời gian trên đó.
Mặc dù LCD chữ và số 16x2 thoải mái hơn nhiều so với màn hình 7 đoạn, nhưng có rất ít trường hợp mà màn hình 7 đoạn sẽ thuận tiện hơn màn hình LCD. LCD có nhược điểm là có kích thước ký tự thấp và sẽ quá mức cần thiết cho dự án của bạn nếu bạn chỉ định hiển thị một số giá trị số. 7-phân đoạn cũng có lợi thế trong điều kiện ánh sáng kém và có thể được nhìn từ các góc độ bằng màn hình LCD thông thường. Vì vậy, chúng ta hãy bắt đầu biết nó.
Mô-đun hiển thị 7 phân đoạn và 4 chữ số 7 phân đoạn:
7 Phân đoạn Hiển thị có bảy phân đoạn và mỗi phân đoạn có một đèn LED bên trong để hiển thị các con số bằng cách chiếu sáng các phân đoạn tương ứng. Giống như nếu bạn muốn phân đoạn 7 hiển thị số "5" thì bạn cần làm phát sáng phân đoạn a, f, g, c và d bằng cách làm cao các chân tương ứng của chúng. Có hai loại màn hình 7 đoạn: Cathode chung và Anode chung, ở đây chúng tôi đang sử dụng màn hình hiển thị bảy đoạn Cathode chung. Tìm hiểu thêm về hiển thị 7 đoạn tại đây.
Bây giờ chúng ta biết cách hiển thị ký tự số mong muốn trên một màn hình 7 đoạn. Nhưng, rõ ràng là chúng ta sẽ cần nhiều hơn một màn hình 7 đoạn để truyền tải bất kỳ thông tin nào có nhiều hơn một chữ số. Vì vậy, trong hướng dẫn này, chúng tôi sẽ sử dụng Mô-đun hiển thị 7 phân đoạn gồm 4 chữ số như hình bên dưới.
Như chúng ta thấy có Bốn Màn hình Bảy Phân đoạn được kết nối với nhau. Chúng tôi biết rằng mỗi mô-đun 7 phân đoạn sẽ có 10 chân và đối với 4 màn hình bảy phân đoạn sẽ có tổng cộng 40 chân và sẽ rất bận rộn cho bất kỳ ai hàn chúng trên bảng chấm, vì vậy tôi rất khuyên mọi người nên mua một mô-đun hoặc tạo PCB của riêng bạn để sử dụng màn hình 7 đoạn 4 chữ số. Sơ đồ kết nối cho cùng một được hiển thị bên dưới:
Để hiểu cách hoạt động của mô-đun 4 chữ số bảy phân đoạn, chúng ta phải xem xét các sơ đồ trên, như thể hiện các chân A của cả bốn màn hình được kết nối để tập hợp thành một A và giống nhau cho B, C…. cho đến DP. Vì vậy, về cơ bản nếu kích hoạt A bật, thì cả bốn chữ A sẽ tăng cao phải không?
Nhưng, điều đó không xảy ra. Chúng tôi có thêm bốn chân từ D0 đến D3 (D0, D1, D2 và D3) có thể được sử dụng để điều khiển màn hình nào trong số bốn chân này sẽ tăng cao. Ví dụ: Nếu tôi cần đầu ra của mình chỉ xuất hiện trên màn hình thứ hai thì chỉ nên đặt D1 ở mức cao trong khi giữ các chân khác (D0, D2 và D3) ở mức thấp. Đơn giản, chúng ta có thể chọn màn hình nào phải hoạt động bằng các chân từ D0 đến D3 và ký tự nào sẽ được hiển thị bằng các chân từ A đến DP.
Kết nối mô-đun 7 đoạn 4 chữ số với Raspberry Pi:
Hãy để chúng tôi xem làm thế nào, làm thế nào chúng tôi có thể kết nối mô-đun 4 chữ số 7 phân đoạn này với Raspberry Pi của chúng tôi. Module 7 đoạn có 16 chân như hình bên dưới. Mô-đun của bạn có thể có ít hơn, nhưng đừng lo lắng, nó vẫn sẽ có những thứ sau chắc chắn
- 7 hoặc 8 chân phân đoạn (ở đây chân bắt đầu từ 1 đến 8)
- Chân nối đất (ở đây là chân 11)
- 4 chân chữ số (ở đây chân 13 đến 16)
Dưới đây là sơ đồ cho đồng hồ kỹ thuật số raspberry pi bằng cách kết nối mô-đun hiển thị 7 phân đoạn 4 chữ số với Raspberry Pi:
Bảng sau đây cũng sẽ giúp bạn thực hiện các kết nối và xác minh xem nó có giống như các sơ đồ được hiển thị ở trên.
S. không |
Số GPIO Rsp Pi |
Số PIN Rsp Pi |
7-Tên phân đoạn |
Số chân 7-Seg (ở đây trong mô-đun này) |
1 |
GPIO 26 |
PIN 37 |
Phân đoạn a |
1 |
2 |
GPIO 19 |
PIN 35 |
Phân đoạn b |
2 |
3 |
GPIO 13 |
PIN 33 |
Phân đoạn c |
3 |
4 |
GPIO 6 |
Mã PIN 31 |
Phân đoạn d |
4 |
5 |
GPIO 5 |
PIN 29 |
Phân đoạn e |
5 |
6 |
GPIO 11 |
PIN 23 |
Phân đoạn f |
6 |
7 |
GPIO 9 |
PIN 21 |
Phân đoạn g |
7 |
số 8 |
GPIO 10 |
PIN 19 |
Phân đoạn DP |
số 8 |
9 |
GPIO 7 |
Mã PIN 26 |
Chữ số 1 |
13 |
10 |
GPIO 8 |
PIN 24 |
Chữ số 2 |
14 |
11 |
GPIO 25 |
Mã PIN 22 |
Chữ số 3 |
15 |
12 |
GPIO 24 |
PIN 18 |
Chữ số 4 |
16 |
13 |
Đất |
Đất |
Đất |
11 |
Xác định các chân trên mô-đun của bạn và bạn hoàn toàn có thể tiếp tục với các kết nối. Phát hiện các chân GPIO trong Raspberry pi có thể là một nhiệm vụ hơi khó khăn vì vậy tôi đã cung cấp cho bạn hình ảnh này về các Chân GPIO.
Lập trình Raspberry Pi của bạn:
Ở đây chúng tôi đang sử dụng ngôn ngữ lập trình Python để lập trình RPi. Có nhiều cách để lập trình Raspberry Pi của bạn. Trong hướng dẫn này, chúng tôi đang sử dụng Python 3 IDE, vì nó là IDE được sử dụng nhiều nhất. Các chương trình Python hoàn chỉnh được đưa ra vào cuối của hướng dẫn này. Tìm hiểu thêm về Chương trình và chạy mã trong Raspberry Pi tại đây.
Chúng ta sẽ nói về một số lệnh mà chúng ta sẽ sử dụng trong chương trình PYHTON cho dự án này, Đầu tiên, chúng ta sẽ nhập tệp GPIO từ thư viện, chức năng bên dưới cho phép chúng ta lập trình các chân GPIO của PI. Chúng tôi cũng đang đổi tên “GPIO” thành “IO”, vì vậy trong chương trình bất cứ khi nào chúng tôi muốn đề cập đến các chân GPIO, chúng tôi sẽ sử dụng từ 'IO'. Chúng tôi cũng đã nhập khẩu thời gian và datetime để đọc giá trị của thời gian từ RSP Pi.
nhập RPi.GPIO dưới dạng thời gian nhập GPIO, ngày giờ
Đôi khi, khi các chân GPIO, mà chúng tôi đang cố gắng sử dụng, có thể đang thực hiện một số chức năng khác. Trong trường hợp đó, chúng tôi sẽ nhận được cảnh báo trong khi thực hiện chương trình. Lệnh dưới đây yêu cầu PI bỏ qua các cảnh báo và tiếp tục với chương trình.
IO.setwarnings (Sai)
Chúng ta có thể tham khảo các chân GPIO của PI, theo số chân trên bo mạch hoặc theo số chức năng của chúng. Giống như 'PIN 29' trên bảng là 'GPIO5'. Vì vậy, chúng tôi nói ở đây hoặc chúng tôi sẽ đại diện cho chốt ở đây bằng '29' hoặc '5'. GPIO.BCM có nghĩa là chúng tôi sẽ sử dụng 5 cho chân 29 của GPIO5.
IO.setmode (GPIO.BCM)
Như mọi khi, chúng ta nên bắt đầu bằng cách khởi tạo các chân, ở đây cả chân phân đoạn và chân chữ số đều là chân đầu ra. Đối với mục đích lập trình, chúng tôi tạo mảng cho các chân phân đoạn và khởi tạo chúng thành '0' sau khi khai báo chúng là GPIO.OUT
phân đoạn8 = (26,19,13,6,5,11,9,10) cho phân đoạn trong phân đoạn8: GPIO.setup (phân đoạn, GPIO.OUT) GPIO.output (phân đoạn, 0)
Tương tự đối với các chân chữ số, chúng tôi khai báo chúng là chân đầu ra và đặt chúng là '0' theo mặc định
# Ngắt đầu tiên 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) # Tắt ban đầu # Ngắt đầu tiên 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) # Tắt đầu tiên # Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) # Tắt ban đầu # Ngắt đầu tiên 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) # Tắt ban đầu
Chúng ta phải tạo các mảng để hiển thị từng số trên màn hình bảy phân đoạn. Để hiển thị một số, chúng ta phải kiểm soát tất cả 7 chân phân đoạn (loại trừ chân chấm), tức là chúng phải được tắt hoặc bật. Ví dụ để hiển thị số 5, chúng ta sắp xếp như sau
S. không |
Số GPIO Rsp Pi |
7-Tên phân đoạn |
Trạng thái hiển thị '5'. (0-> TẮT, 1-> BẬT) |
1 |
GPIO 26 |
Phân đoạn a |
1 |
2 |
GPIO 19 |
Phân đoạn b |
1 |
3 |
GPIO 13 |
Phân đoạn c |
0 |
4 |
GPIO 6 |
Phân đoạn d |
1 |
5 |
GPIO 5 |
Phân đoạn e |
1 |
6 |
GPIO 11 |
Phân đoạn f |
0 |
7 |
GPIO 9 |
Phân đoạn g |
1 |
Tương tự, chúng ta có số thứ tự cho tất cả các số và bảng chữ cái. Bạn có thể tự viết hoặc sử dụng biểu đồ bên dưới.
Với những dữ liệu này, chúng tôi có thể tạo các mảng cho mỗi số trong chương trình python của chúng tôi như được hiển thị bên dưới.
null = không = một = hai = ba = bốn = năm = sáu = bảy = tám = chín =
Nếu bạn làm theo các chương trình sẽ có một chức năng để hiển thị mỗi nhân vật để màn hình 7-segment của chúng tôi nhưng, cho phép bỏ qua này bây giờ và nhận được vào trong khi vòng lặp vô hạn. Nơi đọc thời gian hiện tại từ Raspberry Pi và phân chia giá trị thời gian giữa bốn biến. Ví dụ nếu thời gian là 10,45 thì biến h1 sẽ có 1, h2 sẽ có 0, m1 sẽ có 4v và m2 sẽ có 5.
now = datetime.datetime.now () hour = now.hour minutes = now.minute h1 = giờ / 10 h2 = giờ% 10 m1 = phút / 10 m2 = phút% 10 in (h1, h2, m1, m2)
Chúng ta phải hiển thị bốn giá trị biến này trên bốn chữ số tương ứng. Để viết giá trị của biến thành một chữ số, chúng ta có thể sử dụng các dòng sau. Ở đây, chúng ta hiển thị chữ số 1 bằng cách làm cho nó tăng cao sau đó hàm print_segment (biến) sẽ được gọi để hiển thị giá trị trong biến trên màn hình phân đoạn. Bạn có thể tự hỏi tại sao chúng tôi có sự chậm trễ sau đó và tại sao chúng tôi lại tắt chữ số này sau đó.
GPIO.output (7, 1) #Turn on Digit One print_segment (h1) #Print h1 on segment time.sleep (delay_time) GPIO.output (7, 0) # Tắt Chữ số Một
Lý do là, như chúng ta biết, chúng ta chỉ có thể hiển thị một chữ số tại một thời điểm, nhưng chúng ta có bốn chữ số được hiển thị và chỉ khi tất cả bốn chữ số được hiển thị thì số đầy đủ bốn chữ số sẽ hiển thị cho người dùng.
Vì vậy, làm thế nào để hiển thị tất cả 4 chữ số cùng một lúc ?
May mắn cho chúng tôi là MPU của chúng tôi nhanh hơn mắt người rất nhiều, vì vậy những gì chúng tôi thực sự làm: chúng tôi hiển thị một chữ số tại một thời điểm nhưng chúng tôi thực hiện rất nhanh như hình trên.
Chúng tôi chọn hiển thị một chữ số, nó đợi trong 2ms (thời gian trễ thay đổi) để MPU và 7 phân đoạn có thể xử lý nó, sau đó tắt chữ số đó và chuyển sang chữ số tiếp theo và làm tương tự cho đến khi chúng ta đạt đến chữ số cuối cùng. Mắt người không thể quan sát được độ trễ 2ms này và tất cả bốn chữ số dường như BẬT cùng một lúc.
Điều cuối cùng để tìm hiểu nó để biết cách hoạt động của hàm print_segment (biến) . Bên trong hàm này, chúng ta sử dụng các mảng mà chúng ta đã khai báo cho đến nay. Vì vậy, bất kỳ biến nào mà chúng ta gửi đến hàm này phải có giá trị trong khoảng (0-9), ký tự biến sẽ nhận giá trị này và so sánh nó với giá trị thực. Ở đây biến được so sánh với '1'. Tương tự, chúng tôi so sánh với tất cả các số từ 0 đến 9. Nếu nó là một trận đấu, chúng tôi sử dụng các mảng và gán từng giá trị cho các chân phân đoạn tương ứng của nó như hình dưới đây.
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
Hiển thị thời gian trên phân đoạn 4 chữ số 7 bằng Raspberry Pi:
Sử dụng sơ đồ và mã được cung cấp ở đây để tạo kết nối và lập trình pi raspberry của bạn cho phù hợp. Sau khi mọi thứ hoàn tất, chỉ cần khởi chạy chương trình và bạn sẽ thấy thời gian hiện tại đang được hiển thị trong màn hình bảy phân đoạn. Tuy nhiên, có một số điều bạn phải kiểm tra trước khi
- Đảm bảo rằng bạn đã đặt Raspberry Pi của mình với thời gian hiện tại đề phòng trường hợp nó chạy ở thời gian ngoại tuyến.
- Cấp nguồn cho Raspberry pi của bạn bằng Bộ điều hợp chứ không phải bằng Máy tính xách tay / máy tính của bạn vì lượng dòng điện được vẽ bởi màn hình 7 đoạn cao và cổng USB của bạn không thể cấp nguồn cho nó.
Nếu mọi thứ đang hoạt động như mong đợi, thì bạn nên tìm một cái gì đó như thế này bên dưới.
Bạn cũng có thể kiểm tra hoạt động hoàn chỉnh của đồng hồ pi mâm xôi này tại video bên dưới. Hy vọng bạn thích dự án và thích xây dựng một. Hãy cho tôi biết bạn nghĩ gì hoặc nếu bạn cần giúp đỡ.