Arduino控制9 * 16 LED矩阵

时间:2012-08-22 05:39:18

标签: arduino

我介于一个使用Arduino Uno R3的小项目之间,我必须控制一个9 X 16 LED矩阵。

在我开始项目之前,我已经计划了8 X 8 LED矩阵(解决方案here将适用于8X8)我知道如果我使用Arduino Mega(具有更多输出引脚),相同的解决方案将起作用< / p>

任何人都可以建议我如何使用Arduino UNO控制9 * 16 LED矩阵

2 个答案:

答案 0 :(得分:0)

您可以使用一些MAX7221 LED驱动芯片驱动多达512个LED。 有关说明,请参阅here

答案 1 :(得分:0)

另一条路线是使用多路复用器。它们允许您使用少量arduino引脚来处理许多输出(或输入)。

类似于左侧的设置将允许嵌套多路复用器以实现对更多LED的控制。您遇到的唯一问题是LED在被寻址之间可能会变暗一点。

Arduino Multiplexer

这是关于该主题的Arduino页面(带有示例代码)。 http://www.arduino.cc/playground/Learning/4051

/*
 * codeexample for useing a 4051 * analog multiplexer / demultiplexer
 * by david c. and tomek n.* for k3 / malm� h�gskola
 *
 * edited by Ross R.
 */  

int r0 = 0;      //value of select pin at the 4051 (s0)
int r1 = 0;      //value of select pin at the 4051 (s1)
int r2 = 0;      //value of select pin at the 4051 (s2)
int count = 0;   //which y pin we are selecting

void setup(){

  pinMode(2, OUTPUT);    // s0
  pinMode(3, OUTPUT);    // s1
  pinMode(4, OUTPUT);    // s2
}

void loop () {

  for (count=0; count<=7; count++) {

    // select the bit  
    r0 = bitRead(count,0);    // use this with arduino 0013 (and newer versions)     
    r1 = bitRead(count,1);    // use this with arduino 0013 (and newer versions)     
    r2 = bitRead(count,2);    // use this with arduino 0013 (and newer versions)     

    //r0 = count & 0x01;      // old version of setting the bits
    //r1 = (count>>1) & 0x01;      // old version of setting the bits
    //r2 = (count>>2) & 0x01;      // old version of setting the bits

    digitalWrite(2, r0);
    digitalWrite(3, r1);
    digitalWrite(4, r2);

    //Either read or write the multiplexed pin here

  }  
}

看看这样的事情:http://www.arduino.cc/playground/Learning/4051