このブログを検索

2024/10/26

7セグLEDをArduino UNOで使う

7セグLEDを使ってみたいとずっと思っていて、何個か買ってもあるのだがめんどくさくて使わずにいた。

OSL10564-74HC595-R と書いてあるモジュールがあった。

いつどこで買ったか覚えていないのだが、どうやら秋月電子で売っているこれのようだ。

7セグメントLEDシリアルドライバーキット(DIP化キット LED別売): キット一般 秋月電子通商-電子部品・ネット通販


とりあえずArduino Unoで動かしてみた。

秋月電子にサンプルスケッチがあるのだが、なぜかIDEで開けない。

仕方がないのでテキストエディタで開いてスケッチにコピーして動かした。


PDFなど見てもどう配線すべきかがよくわからない。SPI接続とGPIO接続がある、とかいう情報も出てくるがなんのこっちゃ。

スケッチのソースを見るとこうなっていたので、

//SCK D13
//LATCH D10
//SDI D11



このようにつないだ。電源は5Vが必要らしい。


スケッチを貼っておく。

--------------

//ARDUINO UNO
//AE-7SEG-BOARD * 2
//SCK D13
//LATCH D10
//SDI D11
#include<SPI.h>
int sck = 13;
int latch = 10;
int sdi = 11;
int scroll_speed = 200;
const byte digits[] = {
  0b11111100, // 0
  0b01100000, // 1
  0b11011010, // 2
  0b11110010, // 3
  0b01100110, // 4
  0b10110110, // 5
  0b10111110, // 6
  0b11100000, // 7
  0b11111110, // 8
  0b11110110, // 9
};

void setup() {
  pinMode(latch, OUTPUT);
  pinMode(sck, OUTPUT);
  pinMode(sdi, OUTPUT);
  SPI.begin();
  SPI.setBitOrder(LSBFIRST);
  SPI.setDataMode(0);
}

void loop() {
  for (int j = 0; j < 10; j ++) {//10の桁
    for (int i = 0; i < 10; i ++) {//1の桁
      //SPI
      digitalWrite(latch, 0);
      SPI.transfer (digits[j]+1);//10の桁 +1でドット表示
      SPI.transfer (digits[i]);//1の桁
      digitalWrite(latch, 1);
      //
      delay(scroll_speed);
    }
  }
}

--------------------------





「びんぼうでいいの」でも動いた。