【Raspberry Pi Pico入門 – 6】バー表示LEDの制御

2023年9月4日Raspberry Pi Pico入門,基本編

概要

Raspberry Pi Picoでバー表示LEDの制御をしてみます。
中身の構造はLEDが並んでいるだけの単純なもので、電流制御用の抵抗を付けるだけで動かすことが出来ます。

実行環境

IDE:Arduino IDE 2.1.1
MCU:Raspberry Pi Pico

バー表示LED:YSLB-102510R3-10
※OSX10201シリーズや、Amazonで「バーグラフLED」と調べて出てくる部品でもOKです。

今回のテーマ

  • 複数のGPIOを制御してみる

回路

以下のように配線します。抵抗の位置はLEDの前でも後でもOKですが、今回は配線を楽にするためにLEDの後に配置します。

コーディング

新しくスケッチを作成し、以下の内容をコピペしてください。

const byte led_pins[] = { 16, 17, 18, 19, 20, 21, 22, 26, 27, 28 };
int led_cnt = 0;
int state = 0;

void setup() {
  int i = 0;
  led_cnt = sizeof(led_pins);
  for (i = 0; i < led_cnt; i++) {
    pinMode(led_pins[i], OUTPUT);
  }
}

void loop() {
  BarGraphLED(state);

  state++;
  if (state > led_cnt) {
    state = 0;
  }

  delay(100);
}

void BarGraphLED(int val) {
  int i = 0;
  for (i = 0; i < val; i++) {
    digitalWrite(led_pins[i], HIGH);
  }

  for (i = val; i < led_cnt; i++) {
    digitalWrite(led_pins[i], LOW);
  }
}

動作確認

バー表示LEDの点灯数が徐々に増えていき、MAXになったら全て消灯、再度徐々に増えていく動作をすれば成功です。

解説

回路図

回路図は以下のようになっています。
【Raspberry Pi Pico入門 – 3】の回路を10個並べたような回路です。抵抗値の決め方についても同様です。

今回は「ネットラベル」というものを使用して回路図を書きました。今回のように部品の多い回路で全ての配線を書くとゴチャゴチャになって見にくくなりますし、回路を変更したくなったときの手間も膨大になります。そのため、「同じマーク同士、同じラベル同士は全て繋がっているものとする」というルールのもとラベルを付けて回路図を整理することで見やすくなります。

デメリットとして三又や四又の配線は表現できないので、実際の回路とは見た目が異なってきます。
ただ最近の回路CADは、PCB設計画面で回路図を元に配線忘れを指摘してくれるので大きなデメリットではありません。

コードの解説

今回は「BarGraphLED()」という関数を定義してコードを整理しました。
バー表示LEDはインジケータのように何かのレベルを表示するために使うことが多いので、引数にレベルを入力するだけで使えるような関数を定義しています。
このように「これから動かす部品はどのように使いたいか」を意識すると使い勝手のいい関数を作ることが出来ます。