2009-07-15 24 views
5

Sadece tek bir LED yükünü denetlemek için bir Rainbowduino aldım (bir RGB matrisi DEĞİL). Şimdiye kadar olan tüm belgeler, olmayan RGB dizilerinin kontrol edilmesine yöneliktir. Eğer Rainbowduino yabancıysanızBir Rainbowduino denetleme sorunları

120 mA 24 sabit akım kanalları bir Arduino klonu, 8 her biri 500 mA süper kaynağı sürücüsü kanalı ve 5 V geniş bir çıkış gerilimi adaptasyon - 12 V DC. LED'leri sürmek için mükemmeldir. Ürün web sayfası: http://www.seeedstudio.com/blog/?page_id=187

16 LED'i bağladım ve her birini digitalWrite() ile tek tek açıp kapatabiliyorum. Gerçekten çalışmayan panele bir demo kodu yükledim. 8 sürücü kaynağı kanalının 0-no'lu uçları 3-11 pinleri ile kolayca kontrol edilebildiğini öğrendim. Ancak diğer 24 lavabo kanalını kontrol etmek daha zordur. Görünüşe göre, sadece shiftOut ile erişebileceğim 3 vardiya kaydı (her biri bir tane) tarafından kontrol ediliyor. Bunun nasıl yürüdüğüne dair hiçbir fikrim yok. Biri bana doğru yönde işaret edebilir mi?

LED'lerin yarısı Mavi 1-8'e bağlanır ve diğer yarısı Yeşil 1-8'e bağlanır. Pozitif bacaklar YÜKSEK olarak ayarlanmış olan VCC1-2'ye bağlanır. Devrenin doğru şekilde bağlandığından eminim, sorunlarımın olduğu bir program.

Rainbowduino ile birlikte gönderilen örnek kodları inceledim, ancak anlamıyorum. Bu sorunu nasıl giderebilirim?

+0

şimdiye kadar benim devrenin bir resmi: http://farm3.static.flickr.com/2436/3716019895_99b95b30c6_b.jpg Ayrıca, Rainbowduino örnek taslağına bir link: http://www.seeedstudio.com/depot/images/product/RaibowduinoCMD_Bata.rar – James

+0

"3 vardiya kaydı" ile ne demek istiyorsun? – unwind

+0

Başka biri tarafından söylendiğim şey, onun 3 bitlik bir kayma kaydını olduğunu farz ediyorum. – James

cevap

3

Dijital elektroniklerde, bir vardiya kaydının multipleks (veya bakış açınıza bağlı olarak de-multiplex) giriş/çıkışların kullanılması çok yaygındır.

Temel olarak, tasarımdaki başka bir çipi (kaydırma yazmacını) dahil etmek zorunda kalmanız için denetleyiciniz üzerindeki ticaret pini ticareti gerçekleştirirsiniz. Bu durumda, kayıt bir seri-paralel dönüştürücü olarak çalışır; CPU'nuzdan bitlerle beslenen bir seri giriş hattına sahiptir. Ayrıca, CPU'dan seri olarak yüklenen 8 bit belleğe bağlı 8 paralel çıkışa sahiptir. Bunu kullanarak, 8 bit veriyi tek bir pimde (normalde saat yönünde bir pim) "kaydırıp" kaydırabilirsiniz, bunlar kaydırma yazmacında saklanır ve 8 LED'i paralel olarak çalıştırabilirler.

Bu özel durumda, kaydırma kayıtlarının (MBI5168 sabit akım havuzu sürücülerini burada bulunan kaydırma kayıtlarını içeren) hangi AVR bağlantı noktası pinlerine bağlandığını öğrenmeniz gerekir. Biri veri, biri saat için olmak üzere bir çift çıkışa zincirlenmelidirler. Bu iğneleri öğrendikten sonra, bunları ShiftOut komutunu kullanarak kendiniz sürmeniz gerekir.

biraz daha ileri Kazı, this sample "sketch" "Rainbow.h" denilen dosyada, aşağıdaki tanımları içerir:

//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 

Bu tabii toplam dijital "kulaktan dolma" (Ben cihaza sahip vermezken, Hiç bir şekilde * duino'yu programlamamıştım, ama bunun için aradığınız parçacık-spewing mermi dağıtım sistemi olduğunu söyleyebilirim.

ben şöyle yorumluyorlar:

  • PORTC değişiklik kayıtlarının bağlı biridir tüm kontrol pimleri PORTC içindedir.
  • Dört pim tahsis edilmiştir (yukarıda bahsettiğim iyimser ikisinden ziyade).
  • Saat pin PORTC: 2'dir ve veriler PORTC: 1'dir.
+0

Söylediğiniz, vardiya kayıtlarının temellerini bildiğim için teşekkürler, ancak her kanal için hangi 2 portu kullanmam gerektiğini (veri pin ve saat pinini) bilmiyorum. – James

+0

Çok teşekkürler tekrar gevşeyin. Cevabınızı dün yayınlanan Rainbowduino'nun örnek koduyla (burada: http://www.seeedstudio.com/blog/?p=512) ve şimdi mükemmel şekilde çalışıyordum. Video burada: http://www.youtube.com/watch?v=t9m28RFg14E – James

2

Her bir LED'i kontrol etmek oldukça pahalıdır, satırlarda düşünmek daha iyidir, oysa her bir LED rengi bit olarak sunulur, yani 8 bit x 3 renk (kırmızı, yeşil, mavi). Ben kolayca her satır veya çerçeveyi ayarlamak sağlayan küçük Rainbowduino kütüphane yazdı:

Read my blog post on that

+1

ah, bir ve benim Rainbowduino Editörümü görmek: mtXcontrol: http://www.rngtng.com/mtXcontrol – RngTng