Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 如何在LED显示屏上点亮多条线路?_Arduino_Display_Words_Led - Fatal编程技术网

Arduino 如何在LED显示屏上点亮多条线路?

Arduino 如何在LED显示屏上点亮多条线路?,arduino,display,words,led,Arduino,Display,Words,Led,我正在做一个LED显示屏项目,试图在显示屏上显示一些文字,尽管我无法让连续的线条亮起。下面是代码 int greenPin = 7; int redPin = 6; int stbPin = 2; int clkPin = 3; int aPin = 4; int bPin = 5; int delayTime = 1; int i = 0; void setup() { pinMode(greenPin, OUTPUT); pinMode(redPin, OUTPUT); pin

我正在做一个LED显示屏项目,试图在显示屏上显示一些文字,尽管我无法让连续的线条亮起。下面是代码

int greenPin = 7;
int redPin = 6;
int stbPin = 2;
int clkPin = 3;
int aPin = 4;
int bPin = 5;
int delayTime = 1;
int i = 0;

void setup() {
  pinMode(greenPin, OUTPUT);
  pinMode(redPin, OUTPUT);
  pinMode(stbPin, OUTPUT);
  pinMode(clkPin, OUTPUT);
  pinMode(aPin, OUTPUT);
  pinMode(bPin, OUTPUT);
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, LOW);
  digitalWrite(stbPin, HIGH);
  digitalWrite(clkPin, LOW);
}

void loop() {
  digitalWrite(stbPin, LOW);
  digitalWrite(aPin, HIGH);
  digitalWrite(bPin, LOW);
  twoLines(B11111111, B11111111, B00000000, B00000000, B11111111, B11111111, B00000000, B00000000);
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, LOW);
  delayMicroseconds(delayTime);
  digitalWrite(stbPin, HIGH);
  delayMicroseconds(delayTime);
}

void twoLines( byte br, byte dr, byte ar, byte cr, byte bg, byte dg, byte ag, byte cg) {
  byte Garr[] = { ag, bg, cg, dg };
  byte Rarr[] = { ar, br, cr, dr };

  for ( int i = 0; i < 4; i++ ) {
    for (byte mask = 11111111; mask > 0; mask >>= 1) {
      digitalWrite(clkPin, LOW); // delayMicroseconds(delayTime);
      if (Rarr[i] & mask) {
        digitalWrite(redPin, HIGH);
      } else {
        digitalWrite(redPin, LOW);
      }
      if (Garr[i] & mask) {
        digitalWrite(greenPin, HIGH);
      } else {
        digitalWrite(greenPin, LOW);
      }
      delay(2);
      digitalWrite(clkPin, HIGH);
      delay(2);
    }
  }
}
int greenPin=7;
int redPin=6;
int-stbPin=2;
int-clkPin=3;
int-aPin=4;
int-bPin=5;
int delayTime=1;
int i=0;
无效设置(){
引脚模式(绿色引脚,输出);
引脚模式(红色引脚,输出);
pinMode(stbPin,输出);
引脚模式(clkPin,输出);
pinMode(aPin,输出);
pinMode(bPin,输出);
数字写入(aPin,低);
数字写入(bPin,低);
数字写入(stbPin,高);
数字写入(clkPin,低电平);
}
void循环(){
数字写入(stbPin,低);
数字写入(aPin,高);
数字写入(bPin,低);
两行(B11111111、B11111111、B00000000、B00000000、B11111111、B11111111、B00000000、B00000000);
数字写入(aPin,低);
数字写入(bPin,低);
延迟微秒(延迟时间);
数字写入(stbPin,高);
延迟微秒(延迟时间);
}
无效两行(字节br、字节dr、字节ar、字节cr、字节bg、字节dg、字节ag、字节cg){
字节Garr[]={ag,bg,cg,dg};
字节Rarr[]={ar,br,cr,dr};
对于(int i=0;i<4;i++){
用于(字节掩码=11111111;掩码>0;掩码>>=1){
digitalWrite(clkPin,低);//延迟微秒(延迟时间);
if(Rarr[i]&掩码){
数字写入(红色,高);
}否则{
数字写入(红色引脚,低电平);
}
if(Garr[i]&掩码){
数字写入(绿色,高);
}否则{
digitalWrite(绿色引脚,低电平);
}
延迟(2);
数字写入(clkPin,高);
延迟(2);
}
}
}
现在,我最多只能点亮两行,但我希望能够同时点亮三行来创建字母。感谢任何形式的帮助。下面是LED显示屏的外观


对于您要做的第一件事,请阅读LED的数据表,看看它们消耗了多少电流。如果你有100个LED,每个都消耗20毫安,那将是2安培,不仅Arduino无法提供,你还冒着烧毁Arduino的风险。在你计算出你的系统需要多少电流后,你必须使用一个能处理它的电源。你有几个选择,例如BJT是一个电流放大器,但它的设计复杂,需要一些电气工程背景。另一种选择是使用外部电源,如电池或墙壁插头。然后,你只需要买一个好的适配器或电压调节器,可以处理您当前的需要。此外,在这种情况下,您需要某种继电器来控制Arduino的LED。继电器的作用是,它允许您使用微控制器逻辑打开和关闭继电器,但当它打开时,它使用外部电源。

您如何为LED提供电源?因为坦率地说,你有很多,我怀疑Arduino能提供这么多的电流,我用的只是Arduino。你可能是对的;可能没有足够的电流。您有什么建议吗?我在程序中看到的一个错误在“for(byte mask=11111111;mask>0;mask>=1){”行中。11111111应该是B11111111(或者0xFF更标准)。11111111111是一个十进制数。