2009-07-15 30 views
5

Tôi vừa mua một Rainbowduino để điều khiển một tải các đèn LED riêng lẻ (KHÔNG phải là ma trận RGB). Tất cả các tài liệu cho đến nay là nhằm mục đích hướng tới kiểm soát các mảng RGB là không những gì tôi sau.Sự cố khi điều khiển cầu vồng Arduino

Nếu bạn không quen với Rainbowduino, đó là Arduino sao chép với 24 kênh hiện tại không đổi 120 mA, 8 kênh điều khiển nguồn siêu 500 mA mỗi kênh và điện áp đầu ra rộng từ 5 V - 12 V DC. Hoàn hảo cho đèn LED lái xe. Trang web sản phẩm ở đây: http://www.seeedstudio.com/blog/?page_id=187

Tôi đã kết nối lên 16 đèn LED và muốn có thể bật và tắt từng đèn LED với digitalWrite(). Tôi đã tải lên một số mã demo để hội đồng quản trị mà không thực sự làm việc. Tôi đã làm việc ra rằng 8 kênh nguồn trình điều khiển có thể dễ dàng kiểm soát với digitalWrite() trên chân 3-11. Tuy nhiên việc kiểm soát 24 kênh chìm khác khó khăn hơn. Rõ ràng chúng được điều khiển bởi 3 thanh ghi thay đổi (mỗi cái) mà tôi chỉ có thể truy cập với shiftOut. Tôi không biết nó hoạt động ra sao. Ai đó có thể giúp tôi đi đúng hướng không?

Một nửa số đèn LED được kết nối thành Blue 1-8 và nửa còn lại được kết nối với Green 1-8. Các chân tích cực được nối vào VCC1-2 đã được đặt thành HIGH. Tôi tự tin rằng mạch được kết nối đúng cách, đó là chương trình tôi đang gặp sự cố.

Tôi đã xem xét mã mẫu được gửi cùng với Rainbowduino, nhưng tôi không thể hiểu được nó. Làm cách nào để khắc phục sự cố này?

+0

Một hình ảnh của mạch của tôi cho đến nay: http://farm3.static.flickr.com/2436/3716019895_99b95b30c6_b.jpg Ngoài ra, có liên kết đến bản phác họa mẫu Rainbowduino: http://www.seeedstudio.com/depot/images/product/RaibowduinoCMD_Bata.rar – James

+0

Bạn có ý nghĩa gì với "đăng ký thay đổi 3"? – unwind

+0

Đó là những gì tôi được người khác nói, tôi cho rằng đó là thanh ghi thay đổi 3 bit. – James

Trả lời

3

Việc sử dụng thanh ghi thay đổi cho đa kênh (hoặc de-multiplex, tùy thuộc vào quan điểm của bạn) đầu vào/đầu ra rất phổ biến trong các thiết bị điện tử kỹ thuật số.

Về cơ bản, bạn trao đổi các ghim lưu trên bộ điều khiển của bạn vì phải bao gồm một con chip khác (thanh ghi thay đổi) trong thiết kế.

Trong trường hợp này, thanh ghi hoạt động như bộ chuyển đổi nối tiếp song song; nó có một dòng đầu vào nối tiếp, được cho ăn với các bit từ CPU của bạn. Nó cũng có 8 đầu ra song song, được kết nối với bộ nhớ 8 bit được tải serially từ CPU. Sử dụng điều này, bạn có thể "thay đổi" 8 bit dữ liệu trên một pin (cộng với một pin cho đồng hồ, thường), sau đó được lưu trữ trong thanh ghi thay đổi và có thể lái 8 đèn LED song song.

Trong trường hợp cụ thể này, bạn cần tìm ra cổng AVR nào ghi các thanh ghi thay đổi (trình điều khiển chìm liên tục MBI5168 chứa thanh ghi thay đổi, tại đây) được kết nối. Chúng phải được xích vào một cặp đầu ra, một cho dữ liệu và một cho đồng hồ. Một khi bạn biết các chân đó, bạn sẽ có thể tự lái chúng bằng cách sử dụng lệnh ShiftOut.

Đào một chút nữa, this sample "sketch" chứa các định nghĩa sau đây, trong tập tin gọi là "Rainbow.h":

//MBI5168 
#define SH_DIR_OE DDRC 
#define SH_DIR_SDI DDRC 
#define SH_DIR_CLK DDRC 
#define SH_DIR_LE DDRC 

#define SH_BIT_OE 0x08 
#define SH_BIT_SDI 0x01 
#define SH_BIT_CLK 0x02 
#define SH_BIT_LE 0x04 

#define SH_PORT_OE PORTC 
#define SH_PORT_SDI PORTC 
#define SH_PORT_CLK PORTC 
#define SH_PORT_LE PORTC 

Đây là khóa học tổng kỹ thuật số "tin đồn" (Tôi không sở hữu các thiết bị, Tôi chưa bao giờ lập trình trên bất kỳ loại * duino nào cả, nhưng tôi muốn nói đây là hệ thống phân phối đạn phun hạt mà bạn đang tìm kiếm.

tôi giải thích điều này như sau:

  • PORTC là một trong những kết nối với thanh ghi thay đổi, tất cả các pins kiểm soát được trong PORTC.
  • Bốn chân được dành riêng (thay vì hai thứ lạc quan tôi đã đề cập ở trên).
  • Đồng hồ là pin PORTC: 2 và dữ liệu là PORTC: 1.
+0

Cảm ơn thư giãn, im quen thuộc với những điều cơ bản của sổ đăng ký thay đổi nhưng tôi chỉ không biết được 2 cổng (pin dữ liệu và pin đồng hồ) tôi cần phải sử dụng cho mỗi kênh. – James

+0

Rất cám ơn một lần nữa. Tôi đã sử dụng câu trả lời của bạn cùng với mã mẫu của Rainbowduino được đăng ngày hôm qua (ở đây: http://www.seeedstudio.com/blog/?p=512) và bây giờ nó hoạt động hoàn hảo. Video ở đây: http://www.youtube.com/watch?v=t9m28RFg14E – James

2

Kiểm soát từng đèn LED đơn giản là tốn thời gian, tốt hơn nên nghĩ theo hàng, trong khi mỗi màu LED được hiển thị dưới dạng bit, vì vậy nó có 8 bit x 3 màu (đỏ, lục, lam). Tôi đã viết một thư viện Rainbowduino nhỏ cho phép bạn thiết lập mỗi hàng hoặc khung một cách dễ dàng:

Read my blog post on that

+1

ah, một và xem Trình chỉnh sửa cầu vồng của tôi: mtXcontrol: http://www.rngtng.com/mtXcontrol – RngTng

Các vấn đề liên quan