Tôi có một vi điều khiển với một pin kỹ thuật số có sẵn.
Làm thế nào tôi có thể điều khiển 25 đèn LED?
Tôi có một vi điều khiển với một pin kỹ thuật số có sẵn.
Làm thế nào tôi có thể điều khiển 25 đèn LED?
Câu trả lời:
I2C IO Expander : - Một số giao thức trên cao, nhưng nó có thể mở rộng thành một số lượng rất lớn (hàng nghìn) đèn LED.
Thanh ghi thay đổi đơn giản - Giao diện chết đơn giản, đèn LED có thể nhấp nháy khi cập nhật nếu đồng hồ đăng ký thay đổi không khá nhanh. Sử dụng một thanh ghi thay đổi bộ đệm đôi sẽ khắc phục điều này.
Shift Đăng ký và I2C là tốt, nhưng chỉ khi có ít nhất 2 chân miễn phí. Tôi đề nghị bộ mở rộng cổng 1 dây Dallas DS2408 sẽ là một giải pháp tối ưu. Mã cho truy cập thiết bị 1 dây của Dallas không quá phức tạp và có rất nhiều bài kiểm tra trên web.
Bạn có thể sử dụng một số DS2408 được kết nối với một pin hoặc triển khai nhiều logic hơn sau DS2408 duy nhất tùy theo bạn muốn.
Chỉ với 1 chân IO, bạn có thể sử dụng thanh ghi giãn nở / dịch chuyển 1 dây hoặc thêm một thiết bị khác vào bus I2C của mình, như đã chỉ ra. Điều duy nhất chưa được đề cập là khả năng thêm một nô lệ khác vào cổng SPI của bạn.
SPI được gọi là giao thức 4 dây - Bạn có hai dòng dữ liệu, dòng đồng hồ và dòng chọn (cũng như mặt bằng chung, nhưng điều đó thường không được tính). Tuy nhiên, ba thiết bị đầu tiên được chia sẻ giữa tất cả các thiết bị trên xe buýt, vì vậy mỗi thiết bị sau thiết bị đầu tiên chỉ mất thêm một dấu vết / dây. SPI cũng tăng xe buýt của bạn lên song công hoàn toàn, nhưng điều đó không thành vấn đề đối với ứng dụng này.
Nếu bạn thực sự chỉ có 1 pin thì xe buýt 1 dây Dallas có vẻ như là điều rõ ràng nhất. Tuy nhiên, vì đây chỉ là đầu ra, nên có những giải pháp rẻ hơn. Một bus PWM nối tiếp mang cả dữ liệu và đồng hồ rất dễ cài đặt; xem trang của Roman Black như được đề cập bởi davidcary. Bạn chỉ cần các thanh ghi dịch chuyển song song nối tiếp như 74VHC164 , mà bạn có thể xếp tầng cho nhiều đầu ra như bạn muốn (một '164 có 8 đầu ra).
Trong giải pháp này, đèn LED được điều khiển tĩnh.
Nếu bạn có I / O khác mà bạn có thể chia sẻ, như SPI của I2C, bạn có thể tìm giải pháp xa xỉ hơn, như MAX6950 của Maxim . MAX6950 có điều khiển nhấp nháy và độ sáng, và giới hạn tốc độ xoay, để đặt tên cho một vài tính năng. Đèn LED được ghép kênh, có nghĩa là bạn chỉ cần một trình điều khiển 16 chân.
Câu trả lời có lẽ là "một loạt các thanh ghi thay đổi", nhưng bạn có thể cụ thể hơn trong câu hỏi của mình không? Vi điều khiển gì? "Cổng kỹ thuật số" nghĩa là gì? Một pin duy nhất?
25 Đèn LED tùy thuộc vào kích thước có thể tiêu thụ nhiều năng lượng cho một chân IO kỹ thuật số duy nhất trên bộ điều khiển vi mô. Thay vì điều khiển chúng trực tiếp, có lẽ bạn nên sử dụng một công tắc FET đơn giản (để IO được gắn vào cổng) để điều khiển nguồn cho chuỗi LED.
Tùy thuộc vào ứng dụng của bạn, có nhiều cách khác mạnh mẽ hơn để thực hiện điều này. Nhưng ném vào một thai nhi có thể sẽ giúp bạn làm việc nhanh nhất.
Ví dụ: nếu bạn muốn chuyển một tín hiệu thay đổi, có các thiết bị phức tạp hơn, đôi khi được gọi là rơle kỹ thuật số, cung cấp cho bạn một cách để chuyển đổi kỹ thuật số.
Đối với việc điều khiển riêng 25 đèn LED với một cổng IO. Như những người khác đề xuất, bạn có thể sử dụng một vài thanh ghi thay đổi. Có nhiều giải pháp phức tạp hơn liên quan đến việc giao tiếp với một IC khác bằng giao thức nối tiếp (ví dụ I2C).
Roman Black mô tả hệ thống shift1 cho phép bạn điều khiển độc lập bất kỳ số lượng đèn LED nào từ một chân vi điều khiển duy nhất.
@Fake Name, @Tim, @pingswept đều đề xuất kết nối một số thanh ghi thay đổi với nhau, chân đầu ra dữ liệu DO trên một cho ăn pin đầu vào dữ liệu DI ở lần tiếp theo. 74HC595 sẽ hoạt động tốt. (Có lẽ một số chip khác sẽ hoạt động tốt hơn một chút ).
(@reemrevnivek, với loại SPI được xâu chuỗi này, mỗi thiết bị sau lần đầu tiên không yêu cầu thêm bất kỳ chân nào trên vi điều khiển, trái với những gì nhiều người tuyên bố - tại sao bạn lại nghe chúng? :-).
Thông thường, điều này đòi hỏi 4 chân trên bộ vi điều khiển - MISO, MOSI, SCLK và chốt. Vì bạn chỉ đang thực hiện đầu ra, nên bạn không cần mã đầu vào MISO.
Roman Black đã phát hiện ra rằng với một thời gian rất cẩn thận trên một đầu ra của vi điều khiển duy nhất và với một số điều chỉnh cẩn thận của một mạch tương tự, một chân vi điều khiển duy nhất có thể điều khiển một mạch tương tự trông đơn giản tách ra SCLK chung, DI chân của chip đầu tiên trong chuỗi (MOSI) và tín hiệu chốt chung.
Sau đó, vi điều khiển đó có thể điều khiển 25 đèn LED từ một pin.