どうも、瀬古草夫です。
シングルボードコンピューターのOrange Pi Oneを購入したので、とりあえず、お決まりのLチカをしてみたいのですわ。
とは言っても、瀬古は電子回路なんて、勉強した事がありません。そういえば、小学生の頃、同級生の子が電子ブロックなんてものを持っていて、ブロックを組み合わせて、うそ発見器やらラジオなんかを一緒に楽しんで作った記憶があるのですが・・・。
でも、瀬古自身は、親に買ってもらう程の興味はなかったような・・・。
不安はありますが、シングルボードコンピューターを使いこなすために、まずはLチカから始めます。
目次
WiringOPをダウンロードしてインストール
まずは、GPIOを使う為に、WiringOPをダウンロードしてインストールします。
$ git clone https://github.com/zhaolei/WiringOP.git -b h3
$ cd WiringOP
$ chmod +x ./build
$ sudo ./build
gpioの状態を確認
$ gpio readall


ブレッドボードとLEDと抵抗をつなぐ
用意するもの
ブレッドボード、LED、ジャンパーワイヤー(メスオス)、抵抗

LEDの足の長い方が+(アノード)、短い方が-(カソード)
+を物理ピン7番(GPIO)に-を物理ピン1番(GNP)につなぎます。
ただ、このままだと電流が流れすぎて、LEDが壊れる可能性がありますので、抵抗をはさみます。
さて、どのくらいの抵抗を使えばいいのかですが、中学生の時に習ったオームの法則で計算します。
V(電圧)=I(電流)×R(抵抗)
この青色LEDの仕様は、順方向電圧(VF)3~3.2V、順方向電流(IF)20mA、そしてOrangePi OneのGPIOはHIGH時に3.3Vの電圧出力するので、おおよそ(3.3V-3V)÷0.02A=15Ω以上の抵抗を使えば問題ないことになります。
ただ、一つのGPIO端子につき、流せる最大の電流量が決まっているので、それを超えないようにしなけばいけません。OrangePiの場合は、20mAではないかと思うのですが・・・。
とりあえず、RaspberryPiの場合は、16mAなので、OrangePiも16mAと考えて計算すると、おおよそ(3.3V-3V)÷0.016A≒19Ω以上の抵抗を使う必要があるようです。
たまたま手元にあった抵抗は330Ωなのですが、LEDは少しの電流でも光るので、今回はこれを利用しました。

Lチカプログラムの作成と実行
#include <stdio.h> #include <wiringPi.h> #define WPI_N 7 // Physical Pin 7 int main(void){ if (wiringPiSetup() == -1) { printf("Error\n"); return 1; } pinMode(WPI_N,OUTPUT); while (1) { digitalWrite(WPI_N, HIGH); delay(1000); digitalWrite(WPI_N, LOW); delay(1000); } return 0; }
コンパイルと実行
$ gcc -o led led.c -lwiringPi
$ sudo ./led

おおっ、見事に1000ミリ秒(1秒)毎にLEDがついたり消えたりしました。

で、電流を測ってみると・・・1.7mA
抵抗を測ってみると、325Ωでした
という事は、このLEDのVFは、3.3-(0.0017×325) = 約2.75Vという事でいいのかな?
なんか面白い。

Aliexpressの紹介キャンペーン実施中!
下をクリックしてしてAliexpressに新規登録すると、もれなく2599円のクーポンがもらえます。

コメント