2017-12-02 16 views
-1

私は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 Display

+0

どのようにLEDに電力を供給していますか?率直に言って、あなたはそれらの多くを持っていて、私はArduinoがそれほど多くの電流を供給できるのか疑問に思う。 –

+0

私はただArduinoを使用している。君の言う通りかもね;十分な電流がない可能性があります。推奨する選択肢はありますか? – haost

+0

私がプログラムで見る1つのバグは、 "for(バイトマスク= 11111111;マスク> 0;マスク>> = 1){"です。 11111111はB11111111(標準では0xFF)にする必要があります。 11111111は10進数です。 –

答えて

0

、あなたのLEDのデータシートを読んで、彼らが描くどのくらい現在参照してください。もしあなたが100個のLEDのようになり、それぞれ20 mAを引き出すならば、それは2アンペアであり、Arduinoがそれを供給できないだけでなく、あなたはArduinoを燃やす危険にさらされている。あなたのシステムがどれだけの電流を必要としているかを理解した後、それを処理できる電源を使用する必要があります。いくつかの選択肢があります。たとえば、BJTは現在のアンプですが、設計が複雑になり、電気工学の背景が必要になります。もう1つの選択肢は、バッテリーやウォールプラグなどの外部電源を使用することです。それでは、あなたの現在のニーズに対応できる優れたアダプタまたは電圧レギュレータを購入するだけです。また、その場合、ArduinoでLEDを制御するために何らかのリレーが必要になります。リレーは、マイクロコントローラロジックでオン/オフを切り替えることができますが、オンの場合は外部電源を使用します。

関連する問題