我正在制作一个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);
}
}
}
现在,我最多只能点亮两行,但我希望能够一次点亮三行来创建字母。任何形式的帮助表示赞赏。以下是LED显示屏的外观。
答案 0 :(得分:0)
对于您这样做的第一件事,请阅读LED的数据表并查看它们绘制的电流量。如果你得到100个LED并且每个吸收20 mA,这将是2安培,不仅Arduino无法提供它,你冒着燃烧你的Arduino的风险。在确定系统需要多少电流后,您必须使用可以处理它的电源。您有多种选择,例如BJT是电流放大器,但它使设计复杂化,需要一些电气工程背景。另一种选择是使用外部电源,如电池或墙上插头。然后,您只需购买一个可以满足您当前需求的适配器或稳压器。此外,在这种情况下,你需要某种继电器来控制你的Arduino LED指示灯。继电器的作用是它允许您使用微控制器逻辑打开和关闭它,但是当它打开时它使用外部电源。