私は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);
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);
}
}
}
は今のところ、私はせいぜい2つの行を点灯することができますが、私は機能は、文字を作成するために、一度に3行を点灯することができるようにしたいです。どんな種類のヘルプも感謝しています。以下は、LEDディスプレイの外観です。あなたは、この最初の事のようなものについては
どのようにLEDに電力を供給していますか?率直に言って、あなたはそれらの多くを持っていて、私はArduinoがそれほど多くの電流を供給できるのか疑問に思う。 –
私はただArduinoを使用している。君の言う通りかもね;十分な電流がない可能性があります。推奨する選択肢はありますか? – haost
私がプログラムで見る1つのバグは、 "for(バイトマスク= 11111111;マスク> 0;マスク>> = 1){"です。 11111111はB11111111(標準では0xFF)にする必要があります。 11111111は10進数です。 –