Nhận được một vài bảng Arduinovà các thành phần vô tuyến khác nhau để làm quen với vi điều khiển, tác giả đã quyết định làm một điều gì đó thú vị và đồng thời hữu ích. Có sẵn một số lượng lớn đèn LED, ý tưởng đã đưa ra để tạo ra một đồng hồ nhị phân.
Về mặt điện tử, đồng hồ nhị phân không đặc biệt phức tạp, nhưng tác giả đã làm phức tạp nhiệm vụ và quyết định không lưu các nút và đèn LED. Ban đầu, dự án sử dụng 22 đèn LED, 6 nút và một loa tweeter. Nó cũng là một ý tưởng để lắp ráp một chiếc đồng hồ trên Arduino Mega do số lượng chân lớn hơn, nhưng các thanh ghi thay đổi 74HC595 hóa ra là một sự cứu rỗi.
Vật liệu:
- Arduino Uno
- 2 bánh mì kích thước đầy đủ
- Đèn LED 7 chiếc màu đỏ
- Đèn LED xanh 7 chiếc
- Đèn LED xanh 6 chiếc
- 2 đèn LED màu vàng và trắng
- Điện trở 220 ohms 25 chiếc
- Piezo 1 cái
- 6 nút bấm nút
- Shift đăng ký đầu ra 74HC595 trong gói DIP-16 3 chiếc
- Kết nối dây 90 chiếc
- Mô-đun đồng hồ thời gian thực dựa trên chip DS1307 RTC
Mọi thứ sẽ hoạt động như thế nào.
Có khoảng 10 loại đồng hồ nhị phân. Một số hiển thị thời gian ở định dạng thập phân nhị phân (BCD), số khác là số nhị phân. Vì tác giả không đặc biệt thích đồng hồ BCD, anh ta quyết định thực hiện nhị phân thuần túy của mình. Một số người cảm thấy khó đọc hơn, nhưng sự khác biệt không lớn, bởi vì việc dịch các số từ nhị phân sang thập phân rất dễ dàng. Ngoài ra một điều kiện tiên quyết cho người tạo ra đồng hồ là một dấu hiệu của giây trên đồng hồ.
Ngoài ra, đồng hồ có 6 nút:
Set - chịu trách nhiệm cho chế độ cài đặt đồng hồ / báo thức và lưu tham số trong chế độ cài đặt.
Chế độ - chịu trách nhiệm chuyển đổi giữa các chế độ đồng hồ, báo thức và hẹn giờ.
Lên - trong cài đặt đồng hồ / báo thức / hẹn giờ, tăng tham số lên một. Trong đồng hồ báo thức và hẹn giờ, nó có trách nhiệm kích hoạt và hủy kích hoạt chế độ đã chọn. Khi tín hiệu được kích hoạt, nó sẽ tắt tín hiệu báo động / hẹn giờ.
Xuống - trong cài đặt đồng hồ / báo thức / hẹn giờ, nó sẽ giảm tham số xuống một. Bộ đếm thời gian sẽ tạm dừng nó mà không cần thiết lập lại đếm ngược. Khi báo thức kêu, nó sẽ truyền tín hiệu trong 5 phút.
24/12 - thay đổi định dạng thời gian.
Dim - chịu trách nhiệm bật và tắt đèn LED (khi đèn LED tắt, các nút còn lại sẽ ngừng hoạt động).
Sơ đồ định vị LED:
Kết nối thành phần
Tác giả sẽ kết nối tất cả các đèn LED nối tiếp và với một điện trở. Các điện trở được hàn vào một trong các thiết bị đầu cuối của đèn LED, không quan trọng cái nào. Đèn LED sẽ được kết nối thông qua các thanh ghi thay đổi, chip này có 16 tiếp điểm.Số lượng chân này cho phép bạn sử dụng một số lượng lớn các chân, chỉ mất 3 chân trên Arduino.
Đăng ký thay đổi Pinout 74HC595:
Q0-Q7 là những phát hiện của thanh ghi mà đèn LED sẽ được kết nối.
Vcc - một chân cung cấp điện 5V sẽ được áp dụng cho nó.
GND - mặt đất kết nối với GND trên Arduino.
OE - pin chịu trách nhiệm cho việc kích hoạt ngược của các chân, nhưng nó sẽ không được sử dụng, nó chỉ đơn giản là được nối đất.
MR là một thanh ghi bù ngược, nó không cần phải điều khiển, do đó nó sẽ được kết nối với nguồn điện 5V.
ST_CP - pin chịu trách nhiệm cập nhật trạng thái của thanh ghi. Khi ghi trạng thái, cần phải áp dụng THẤP cho nó, sau khi ghi - CAO, để cập nhật trạng thái của các đầu ra. Nó cần được kết nối với một pin trên Arduino. Bạn có thể kết nối pin này trong ba thanh ghi song song.
SH_CP - pin, chịu trách nhiệm dịch chuyển 1 bit của thanh ghi. Nó cần được kết nối với một pin trên Arduino. Chúng được kết nối song song trên microcircuits.
DS - dữ liệu đang được gửi đến pin này, nó được kết nối với pin trên Arduino.
Q7 '- chân này được sử dụng để kết nối theo tầng với các thanh ghi khác 74HC595.
Sơ đồ nối dây:
Bộ rung Piezo sẽ được kết nối với chân Arduino thứ ba nối tiếp với điện trở. Trước khi bao gồm các tweeter trong mạch, tác giả đã xem xét các chân nào hỗ trợ PWM, vì điều này là bắt buộc đối với cô. Trên Arduino Uno, PWM hỗ trợ 3, 5, 6, 9, 10 và 11 chân.
Các nút được kết nối bằng cách sử dụng các điện trở được tích hợp trong Arduino, với một bên là các nút được nối với mặt đất và mặt còn lại với các chân Arduino.
Vì vậy, thiết kế cuối cùng trông:
Xây dựng trên Breadboard
Sau khi có được các chi tiết bổ sung, tác giả đã bắt đầu lắp ráp dự án trên một chiếc bánh mì theo các kế hoạch. Ngoại hình sắp được mong đợi, bởi vì Breadboard hạn chế sự tự do trong việc đặt các bộ phận, và dây dính không tạo ra niềm vui thẩm mỹ. Nhưng cuối cùng, Breadboard dành cho các mẫu Breadboard, nhưng không dành cho các thiết bị đã hoàn thành.
Mã chương trình.
Có một sự hiểu biết về lập trình, tác giả đã quyết định tự viết mã, mà không sử dụng sự phát triển của người khác. Bước đầu tiên là viết chương trình con, nó có trách nhiệm nhấp nháy tất cả các điốt và đưa ra tín hiệu piezo khi bật. Chức năng này giúp xác minh tính toàn vẹn của mạch, tương tự như được thực hiện trên nhiều thiết bị.
Bản phác thảo xuất hiện khá lớn, sau đó bạn có thể xem xét các tính năng chính của nó.
Đèn LED làm việc.
Vì các đèn LED được truy cập thông qua thanh ghi thay đổi, trước hết, cần phải thực hiện nhiều thói quen hơn cho đèn LED. Để hoạt động dễ dàng hơn với điốt, một số chức năng bổ sung đã được thực hiện. Hiệu ứng khác nhau của hình ảnh động của điốt được thực hiện. Khi đồng hồ không được đặt, các điốt chịu trách nhiệm về giờ và phút sẽ bắt đầu nhấp nháy (vì đồng hồ bình thường sẽ nhấp nháy khi không được đặt). Các đèn LED chịu trách nhiệm trong vài giây cũng có hoạt hình riêng, diode có thể chạy trái và phải trong chế độ báo thức hoặc ở chế độ cài đặt đồng hồ.
Vòng lặp chính.
Chương trình được cấu hình để hoạt động như sau: đồng hồ hiển thị thông tin tùy thuộc vào trạng thái hiện tại và thay đổi trạng thái tùy thuộc vào việc sử dụng các nút và sự kiện. Tất cả trông giống như một số lượng đáng kể các điều kiện lồng nhau. Trạng thái của điốt được cập nhật mỗi lần sau khi kiểm tra trạng thái của bộ hẹn giờ và nút bằng một cuộc gọi đến bộ xử lý của chúng.
Ngoài ra, tác giả đã làm một công việc tuyệt vời cho hoạt động chính xác của các nút đầu vào và bộ hẹn giờ. Mã nguồn của bản phác thảo có thể được tải xuống dưới bài viết.
Ra mắt bố trí
Sau khi bật dự án, thoạt nhìn, thiết bị hoạt động chính xác và ổn định. Nhưng tác giả đã tìm thấy một lỗ hổng, đồng hồ đứng sau một giây mỗi giờ, trong một thời gian dài nó sẽ là một lỗi lớn.
Sau khi nghiên cứu vấn đề này, người ta thấy rằng Arduino Uno ban đầu sử dụng bộ cộng hưởng gốm và nó thiếu độ chính xác để đo thời gian trong thời gian dài. Giải pháp hợp lý nhất là mua đồng hồ thời gian thực, cộng với mô-đun này, thời gian trên đồng hồ sẽ không bị lạc hướng khi tắt. Tác giả đã mua mô-đun Grove RTC từ Seeed Studio. Nó là một bảng hoàn thành với một chip đồng hồ. Tác giả đã kết nối các chân của mô-đun SDA và SCL với Arduino trên các chân của A4 và A5, GND với mặt đất. Vì nguồn 5V bị chiếm bởi bảng đồng hồ, không có nơi nào để kết nối mô-đun. Tác giả đã quyết định cấp nguồn cho mô-đun từ một trong các chân kỹ thuật số, sẽ liên tục được cấp năng lượng.Ngoài ra, tác giả cần sửa đổi mã nguồn và thêm một thư viện đồng hồ thời gian thực.
Lắp ráp đồng hồ
Đã hoàn thành một công việc dài về mã, đã đến lúc cung cấp cho thiết bị một cái nhìn hoàn chỉnh và chuyển nó từ bảng mạch sang bảng mạch in. Trước hết, cần phải làm hệ thống dây điện cho bảng. Fritzing đã được sử dụng cho việc này, vì tác giả đã có ý tưởng về sự xuất hiện của đồng hồ, và ông đã xây dựng một sơ đồ thiết bị. Tác giả cũng tự tay truy tìm bảng, mất rất nhiều thời gian.
Dự án sản xuất bảng mạch in:
Sản xuất PCB đã được đặt hàng tại Trung Quốc. Seeed Studio có dịch vụ bo mạch PCB. Thông qua Fritzing, tập tin đã được xuất sang định dạng Extended Gerber, nhiều nhà sản xuất bảng làm việc với nó. Hai tuần sau, tác giả đã nhận được khoản phí được chờ đợi từ lâu trong thư.
Nó chỉ còn lại để hàn một phần bụi nhỏ trên bảng. Kết quả hoàn thành sau khi hàn trông tốt hơn nhiều so với cách bố trí trên Breadboard.
Tác giả của dự án đã làm việc chăm chỉ trong một thời gian dài và có được thứ mình muốn - một chiếc đồng hồ nhị phân độc đáo với đồng hồ bấm giờ và đồng hồ báo thức. Sử dụng ngăn chứa pin, đồng hồ có thể được đặt ở bất cứ đâu. Arduino đáp ứng mong đợi và hoàn toàn đối phó với nhiệm vụ.