0
0

More than 1 year has passed since last update.

エレキ素人が何か考える(その11):7セグメントLED

Posted at

7セグメントLEDをArduinoから操作

(無理やり「エレキ」にこじつけ感がある。)
秋月電子で購入した「7セグメントLED A-551SRD」をArduinoから操作するのであるが、少々ハマったので記録。

データシート

データシートはここにあるが、ピン配置記載が十分でない。
a-551srd pin assignment.png
PIN1しか記載がない(最初はこれにも気が付かなかった)。トライ&エラーした結果、正しいピン配置は下記のとおり。
image.png
個人的には、アルファベット表記の代わりに、ピン番号を各LEDに割り付けたほうがわかりやすいと感じる。

やりたいこと

キーボード(シリアル)入力した数値を表示するのみ。

ソースコード

ArduinoのGPIOピンを、適当に各LEDに割り当てる。この7セグメントLEDはアノードコモンのため、LOWで点灯となるため、それを考慮し、0から9までのLEDテーブルを作成する。あとは入力値により、それぞれのLEDをdigitalWrite()するのみ。なお、エラー入力は未考慮。

#define A7_PIN  6
#define B6_PIN  9
#define C4_PIN  8
#define D2_PIN  2
#define E1_PIN  3
#define F9_PIN  5
#define G10_PIN 4

uint8_t ary[] = {A7_PIN, B6_PIN, C4_PIN, D2_PIN, E1_PIN, F9_PIN, G10_PIN};
int b_ary[] = {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};

void show_num(uint8_t num) {
  int disp_ary[][sizeof(ary)/sizeof(uint8_t)] = {
     // A   B   C   D   E   F   G
    {LOW, LOW, LOW, LOW, LOW, LOW, HIGH},     // 0 
    {HIGH, LOW, LOW, HIGH, HIGH, HIGH, HIGH}, // 1
    {LOW, LOW, HIGH, LOW, LOW, HIGH, LOW},    // 2
    {LOW, LOW, LOW, LOW, HIGH, HIGH, LOW},    // 3
    {HIGH, LOW, LOW, HIGH, HIGH, LOW, LOW},   // 4
    {LOW, HIGH, LOW, LOW, HIGH, LOW, LOW},    // 5
    {HIGH, HIGH, LOW, LOW, LOW, LOW, LOW},    // 6
    {LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH},  // 7
    {LOW, LOW, LOW, LOW, LOW, LOW, LOW},      // 8
    {LOW, LOW, LOW, HIGH, HIGH, LOW, LOW}     // 9
  };
  for (int i = 0; i < sizeof(ary)/sizeof(uint8_t); i++) {
    digitalWrite(ary[i], disp_ary[num][i]);
  }
}

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < sizeof(ary)/sizeof(uint8_t); i++) {
    pinMode(ary[i], OUTPUT);
    digitalWrite(ary[i], b_ary[i]);
  }
}

void loop() {
  if (Serial.available() > 0) {
    String data = Serial.readStringUntil('\n');
    uint8_t val = data.toInt();
    // Serial.println(val);
    show_num(val);
  }
}

実験(&配線状況)

IMG_20220628_203335のコピー.jpg
成功。
なお、抵抗が8個以上見えるが、同一値の抵抗が見つからず、複数の抵抗を並列接続して、できるだけ7箇所の抵抗値を近づけているため。

EOF

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0