09時44分10秒この記事は5年ほど前に投稿された記事です。この記事の内容は古くなっている可能性があります。更新日時にご注意ください。今まではLEDを点灯させてたり「そんなの電池に直結すれば」と思われるような物が多かったけれど、今回はちょっとマイコンらしい事をしてみようと。1桁の7セグLEDを制御してみようと思います。適当なケーブルWiringPiそもそも7セグLEDとはなんぞや7セグLEDとは、1つのモジュールの中に7つのLEDを詰め込んで、主に数字を表示する為の部品であり、自販機の価格表示や時計など、様々なところで使われています。詳しい仕様は私よりも詳しい人が分かりやすく書いたサイトが沢山有りますのでそちらを見ていただくとして。簡単に説明しますと7セグLEDにはアノード(+)を一つにまとめたアノードコモンと、カソード(-)を一つにまとめたカソードコモンがあり、制御方法が変わってきますが、今回はポートをHにすれば光るカソードコモンの方が分かりやすいと思いこちらを採用しました。1桁の7セグLEDの場合はコモンが2本と各LEDに割り当てられた端子がドットも含めて8本の計10本の端子が出ています。ここに電流を流す事によって各LEDが点灯し、数字やアルファベットなどの情報を表示する事が出来ます。一般的な7セグLEDは、頂上のセグメントから時計回りにABCDEFで真ん中がGとなっていて、端子は表示面下側から反時計回りに123...10となっています。(裏側からみて下から時計回り)※ただし、7セグLEDによってこの辺の仕様は違う場合がありますので、実際の配列は入手した7セグLEDの仕様書を見てから使ってください。この各LEDに抵抗を挟んで接続します。何処のポートに繋ぐかは好きにしてください。(本当はトランジスタで増幅したり、制御ICを使って使うピンを減らしたりするのですが、とりあえずDIYで光れば良いのであればこれで十分。)2015年6月7日:GPIOポート表更新この表だと22~29を使うのが良さそうですね。F-Aの順に接続しました。点灯7セグLEDと言っても、ものはただのLEDなので普通にGPIOポートのオンオフをすれば使えます。(抵抗がないって?抵抗はいつも君の心の中にあるさ。22こんな感じにLEDのポートを定義。LED_A~LED_Gは各7セグのポートでLED_Pが小数点。←17digitalWrite(LED_A,seg[num][0]);digitalWrite(LED_B,seg[num][1]);digitalWrite(LED_C,seg[num][2]);digitalWrite(LED_D,seg[num][3]);digitalWrite(LED_E,seg[num][4]);digitalWrite(LED_F,seg[num][5]);digitalWrite(LED_G,seg[num][6]);digitalWrite(LED_P,dot);}こんな感じで関数を作ってあげて、2次元配列を読み取って表示してやると良いでしょう。{1,1,1,1,0,0,1}を流した場合はこうなります。1=点灯))となっていて、例えば3.を表示したい場合にはLED_SET(3,1);1LED_SET(3,1);となる。おわりにこのように、単純に一桁の表示をするだけなら凄く簡単です。これに桁数を増やしていくともう少しマイコンらしい感じになります。複数の桁を表示するには、トランジスタやフォトカプラ、専用ICなんかで電気を流すLEDを選択してあげて高速で切り替えると言う手段があります。それはまたそのうちやりますね。ちなみにラズパイ2(初代B+と2)は論理上は9桁まで行けると思います。※上の条件で動作させるためのソースコードを置いておきます。基本的な部品は前回7セグLEDを点灯させたものと同じ。それに今回使用するICが加わった感じです。74HC595は非常にポピュラーな半導体なので色々なところから出ていますが。今回は東芝製の「TC74HC595AP」を使いました。マルツのオンラインで1つ130円+税ほど。日本企業製以外なら本家Tiのものが秋月なんかで40円程度で買えますね。なんとアマゾンにもあります。基本的にどのICも同じはずなので好きなものを。こだわりがなければTi製の安いものでいいでしょう。2にて7セグLEDの制御をしましたが。今回は2桁以上の7セグLEDに数字を表示してみたいと思います。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。252ヴィッツ(NSP130)にナビ取り付けました。169DAC買いました。142スピーカー買いました。7年ぶりにメインのカメラを買い換えました。77キーボード買いました。テレビ台をDIYする。