こんにちは、ガマンです。

Raspberry Pi PicoのGPIOピン全部にLEDをくっつけてみました。

全部のGPIOピンにLEDを付けた

今私が知っている知識は、GPIOピン1本に付き1個のLEDを光らせる方法です。
この知識で何個のLEDが光らせられるのか実験します。
まずは1個ずつLEDを光らせる実験をやっていきます。

  • LEDとか電子部品って気になってるけど、どうやって作ればいいかわからない
  • 壊わしちゃいそうで怖いな
  • 何そろえていいかわからない

という方もまねしてもらえれば、
LEDをRaspberry Pi Picoに接続できますし、壊れません。

LEDを壊さないために入れる電流制限抵抗の計算の方法も、
後半部分で説明しますので、まずはまねしていただいて、
LEDを光らせていただければと思います。

以前、Raspberry Pi Picoに搭載されているLEDを点灯、消灯、点滅させました。
今回は最初に外付けのLED、緑、黄、赤の3つを接続して光らせます。
プログラムは前回同様、Python専用開発環境のThonnyを使って、
Pythonを書いて光らせます。

●今回の項目
1 ブレッドボードを使ってLEDを接続する
2 LEDを光らせる
3 LEDの特性&便利な測定器
4 電流制限抵抗の計算方法

■準備

●LEDを光らすための道具

まず道具をそろえます。

道具1 Raspberry Pi Pico

道具2 USBケーブル(パソコンとRaspberry Pi Picoをつなぐ)

道具3 ブレッドボード

道具4 LEDの緑、黄、赤を1個ずつ

道具5 抵抗470Ωを3本(暗いなと思ったら330Ωまたは390ΩでもOK)

道具6 ジャンパ線

道具7 万能測定器TC1

私は電子部品屋さんのネット通販サイトや、電子部品屋さんの店舗、
先生からのプレゼント、アマゾンなどでそろえました。
概要欄に購入した商品を張り付けておきますので、
参考にしていただければと思います。

■ブレッドボードを使ってLEDを接続する

●3つのLEDを光らせる回路図

緑、黄、赤のLEDのアノード(+側)をそれぞれ470Ωの抵抗に直列につないで、
Raspberry Pi PicoのGPIOピンにつなぎます。
今回はGPIOの16,17,18を使います。
ブレッドボードのマイナスの列にRaspberry Pi PicoのGNDピンを接続して、
LEDのカソード(-側)すべてにつないでいます。

●ブレッドボードの構造


ブレッドボードって何?っということなのですが、
ブレッドボードは、はんだづけすることなく、
電子部品を接続し、回路にして使うための道具です。
メリット①回路の変更が簡単にでき、実験が容易に早くできる
メリット②部品の抜き差しが何回もでき、流用ができる
というメリットがあります。
反面、はんだ付けに比べて不安定なので、
あくまでも実験用として使われることが多いです。

ブレッドボードの構造を知っていると、すぐに組めるようになるので、お話しします。

ブレッドボードに入っている金属の構造
引用:https://www.sunhayato.co.jp/problem-solving/howto_SAD-101.html

ブレッドボードは、中にバネ状の金属の板が入っていて、
隣接する穴の中でこのように接続されています。
この金属の板に電子部品の足を接触させて、
電気的につなぐことができるのです。

ブレッドボードの中ほどの列は、金属の板が何本も入っていて、
ここにLEDや抵抗やトランジスタといった部品、
それからジャンパ線などをさします。
ブレッドボードの上下はじの列は、横に金属の板が入っています。
ここには電源のプラス側と、
GND(グラウンド)と呼ばれる電源のマイナス側をつなぎます。
ブレッドボードの種類によって構造が違ったりしますので、
確認しながら使ってください。

●電子回路をブレッドボードに組む

Raspberry Pi Picoには、ピンヘッダをあらかじめはんだ付けしておいてください。
回路が動かないときに考えられる原因として、
GND(グラウンド)がつながっていないことが多々あります。
Raspberry Pi PicoはGNDピンが8本あるので、どこかにつなぐようにしてください。
LEDはプラス、マイナスの極性があるので、向きを考えながらさしてください。

今回は、
GPIO16に緑色、
GPIO17に黄色、
GPIO18に赤色を接続しています。

■Pythonプログラムを書く

●実験①緑色LEDを光らせる

ではプログラムを書いて動かしてみましょう。
開発環境Thonnyを立ち上げて、下のshell枠にコマンドを打ち込んでいきます。
まず「GPIOのライブラリを読み込むよ」というコマンドを打ち込みます。
from machine import Pin
打ち込んだらEnterを押します。LEDに変化はありません。
次に「緑色LEDはGPIO16ピンに接続しますよ」というコマンドを打ち込みます。

led_green=Pin(16,Pin.OUT)

打ち込んだらEnterを押します。まだLEDに変化はありません。
次に「緑色LEDに1を出力して点灯させますよ」というコマンドを打ち込みます。

led_green.value(1)

打ち込んでEnterを押すと、緑色LEDが光ったと思います。光りましたか?

led_green.value(0)

を打ち込んでEnterを押すと消灯します。

●実験②黄色LEDを光らせる

次に黄色LEDを光らせてみましょう。
「黄色LEDを点灯させるよ」というプログラムを打ち込んでいきます。

led_yellow=Pin(17,Pin.OUT)

打ち込んだらEnterを押します。まだLEDに変化はありません。

led_yellow.value(1)

打ち込んでEnterを押すと、黄色LEDが光ったと思います。光りましたか?

led_yellow.value(0)

を打ち込んでEnterを押すと消灯します。

●実験③赤色LEDを光らせる

次に赤色のLEDを点灯させてみましょう。

led_red=Pin(18,Pin.OUT)

打ち込んだらEnterを押します。まだLEDに変化はありません。

led_red.value(1)

打ち込んでEnterを押すと、赤色LEDが光ったと思います。光りましたか?

led_red.value(0)

を打ち込んでEnterを押すと消灯します。

●実験④全部光らせる

それでは、緑色LED、黄色LED、赤色LEDを光らせるプログラムを作ってみましょう。
shell枠の上の枠にプログラムを書いていきます。

from machine import Pin
import utime
led_green=Pin(16,Pin.OUT)
led_yellow=Pin(17,Pin.OUT)
led_red=Pin(18,Pin.OUT)

while True:
    led_green.value(1)
    utime.sleep(5)
    led_green.value(0)
    led_yellow.value(1)
    utime.sleep(1)
    led_yellow.value(0)
    led_red.value(1)
    utime.sleep(3)
    led_red.value(0)

日本の信号機みたいに光りましたか?
この例では緑が5秒間、黄が1秒間、赤が3秒間点灯を繰り返します。

■改造するときのポイント

●ポイント①LEDの特性

LEDの足には極性があり、
長いほうもしくは細いほうをアノード(A)、
短いほうあるいは太いほうをカソード(K)といい、
接続する場合アノードを+側、カソードを-側(GND側)につなぎます。

LEDのデータシートには「順方向電圧」と「順方向電流」という値が記載されています。
順方向電圧とは、LEDに順方向(アノードからカソード向き)の電流を流したとき、
LEDの両端に加わる電圧のことです。
LEDの種類(特に色の違い)によりこの電圧値は変わります。

順方向電圧

また、順方向電流とはLEDが光るときに流れる電流のことで、
LEDのデータシートには流すことのできる最大の電流値や、
どのくらいの電流を流したときに順方向電圧が何Vで、
そのときの発光の明るさなどが記載されています。

順方向電流

LEDに電源をそのままつなぐと大電流が流れてしまうため、
通常、LEDには直列に抵抗を入れます。
これを電流制限抵抗といいます。

●ポイント②電流制限抵抗

電流制限抵抗(R)の計算は以下の式により計算します。
R[Ω] = (電源電圧[V] - 順方向電圧[V]) / 順方向電流[A]
例えば3.3Vの電源に順方向電圧2.0VのLEDを接続し、順方向電流3mA流したいときは、
R[Ω] = (3.3[V] - 2.0[V])/ 0.003[A] = 433[Ω]となります。
今回はそれに近い470Ωを用いました。

すでに実験された方はお気付きかと思うのですが、
緑、黄、赤で光る明るさが違っていると思います。
今回の実験ではすべて470Ωの電流制限抵抗を用いました。
しかし、色によって順方向電圧が異なるため、
結果として順方向電流が色によって変わってしまっているためです。
一般に明るさは順方向電流の大きさに比例します。

●ポイント③便利な測定器マルチテスタ

順方向電圧や極性がわからないLEDがあったときどうしたら良いかですが、
そのときに便利な測定器を紹介します。
この測定器は「TC-1」といって、
部品をさして挟んでボタンを1回押しただけで何の部品なのか、
またどんな極性を持っているのか、どれくらいの値なのかを表示してくれます。

ではここで、LEDの順方向電圧を測定してみましょう。
緑は 2.04V
黄は、2.00V
赤は 1.92V
でした。
LEDのほかにも、抵抗やトランジスタ、コンデンサがすぐに測れるのでとっても便利です。
どれも同じ電流値3mAで計算すると、それぞれ420Ω、433Ω、460Ωになります。
R[Ω] = (電源電圧[V] - 順方向電圧[V]) / 順方向電流[A]
緑 R[Ω] = (3.3[V] - 2.04[V]) / 0.003[A] = 420[Ω]
黄 R[Ω] = (3.3[V] - 2.00[V]) / 0.003[A] = 433[Ω]
赤 R[Ω] = (3.3[V] - 1.92[V]) / 0.003[A] = 460[Ω]

***
Raspberry Pi PicoにGPIOピンは26ピンあります。
全部にLEDをつけてみたところ、本当に全部光りました。
回路は緑、黄色、赤色LEDを光らせたとき同様に増やしていけばOKです。
プログラムも同様です。ぜひ実験してみてくださいね。

エンジニアのAyu先生に聞いたところ、Raspberry Pi Pico1個で、
工夫すればもっと多くのLEDを光らせることができるそうです。
はやくそんなことができるようになりたいです。

●リンク

ブレッドボードの使い方(サンハヤト)
https://www.sunhayato.co.jp/problem-solving/howto_SAD-101.html

One thought on “Pico全ポートにLEDつけてみた”
  1. 記事の計算では、LED 1個あたり3mA、全部で26個ですと、仮に全LEDを点灯時には3 x 26 => 78mAとなります。
    RPi Picoでは、ポートあたり16mAまで、全ポートの合計で50mAという仕様ですので、記事の抵抗値で全LEDを連続点灯し続けた場合には、定格を超えた使い方となり、いずれ壊れる可能性が高いです。
    まあ、全LED同時点灯させなければ大丈夫なんですけどね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です