マイコンArduinoを使って電光掲示板を作る。

 

 

マイコンArduinoを使って電光掲示板を作る。

 

続き

前回のダラダラと長いプログラムを短くまとめてみました。

 

新しく書いたプログラム

// slx_5024
byte address[ ] = {5, 4, 3, 2};      // アドレスは扱いやすい様に配列で持つ

void setup() {
  for (int i = 0; i < 11; i++) {
    pinMode(i, OUTPUT);             // 各ピンの設定 全てアウトプット
  }

  digitalWrite(0,HIGH); // SE     L 自動でRAM切り替わり   // A/BB書換えを使うHをセット
  digitalWrite(1,LOW); // A/BB   書き込み用RAM選択        // その他は全てLをセット
  digitalWrite(6,LOW); // GREEN  緑データ
  digitalWrite(7,LOW); // CLK    クロック
  digitalWrite(8,LOW); // WE     書き込み信号 Hで書き込み
  digitalWrite(9,LOW); // RED    赤データ
  digitalWrite(10,LOW); // ALE   アドレスラッチ Hで有効

  for (int i = 0; i < 16; i++) {                        // アドレス0~15
    for (int j = 0; j < sizeof(address); j++)
      if ((i & 0x1 << j) != 0)                          // address[0]~address[3]にビットをセット
        digitalWrite(address[j], HIGH);
      else
        digitalWrite(address[j], LOW);
        
    digitalWrite(9,LOW); // RED    赤データ              // データのセット
    digitalWrite(6,LOW); // GREEN  緑データ              // データのセット
    clock_n(32); // クロック
    write_ale_we(); // 書き込み操作 関数にまとめて有る
  }

  digitalWrite(1,HIGH); // A/BB   書き込み用RAM選択
}

void loop() {
}

void write_ale_we() {
  digitalWrite(10,HIGH); // ALE   アドレスラッチ Hで有効
  digitalWrite(8,HIGH); // WE     書き込み信号 Hで書き込み
  digitalWrite(8,LOW); // WE     書き込み信号 Hで書き込み
  digitalWrite(10,LOW); // ALE   アドレスラッチ Hで有効
}

void clock() {
  digitalWrite(7,HIGH); // クロック
  digitalWrite(7,LOW);  // クロック
}

void clock_n(int n) {
  for (int i = 0;i < n;i++)
    clock();
}

中身は前回のプログラムと全く同じです。

書き込み用RAM選択はwrite_ale_we()にまとめて関数化

 

プログラムの流れは前回と同じでsetup()の中で行っているので1回限りの実行です。

 

次回はloop()の中での実行と動きの有るプログラムを書いて行きます。

 

では、また。

 

mckeechan.hatenadiary.com