初めての Arduino 入門 (中編)

生まれて初めて勉強してみる。目指せ、鉄道模型の自動制御システム!(^_^)
4
戸田プロダクション @TodaProduction

今度は4桁7セグ12本足のLED表示機が Fritzing のパーツの中に見つからない。なぜか全部12本足ではなく16本足のパーツばかりなのだ。4桁7セグで検索して検索して…片っ端から確認するけど全部16本足。この図の表示機、全部型番が違う別のパーツだけど、12本足はひとつも無いんだぜ? pic.twitter.com/njq6c4fvPq

2018-11-27 22:05:59
拡大
戸田プロダクション @TodaProduction

Fritzing Project - Test 4 Digits 7 segments displays fritzing.org/projects/test-… 結局12本足の4桁7セグ部品は、このページの回路図の中で使われているパーツを拝借することにした。サラリーマン時代、他人の作った常務会資料に貼られたクリップアートを使い回ししていたアレみたいなもんか?w pic.twitter.com/OmSvmsnVD7

2018-11-27 22:09:33
拡大
戸田プロダクション @TodaProduction

次にブレッドボード。いつも使うキット付属品は片側5穴の品物だが、教本の実体配線図(上)を見ると、どうしても片側6穴のボードでないと配線出来ない感じである。机の引き出しを開けたら片側6穴のボード(下)があったので、今回はこれを使うことにする。少し小さいかも知れないが大丈夫そうだ。 pic.twitter.com/lRFVhxBB14

2018-11-27 22:10:53
拡大
戸田プロダクション @TodaProduction

この小型ボード、2年半前、古いNゲージ国鉄電車のLED化とDCC化に夢中になっていた時期に購入したものだと思う。この片側6穴ボードの Fritzing 部品は、@ht_deko さんが以下のページで公開されている SAD-101 をダウンロードさせてもらった。有り難うございました。 ht-deko.com/delphiforum/?v…

2018-11-27 22:11:59
戸田プロダクション @TodaProduction

というわけで、教本スケッチ読みながらようやく自分で描き上げた Fritzing 絵がこれ。Arduino のピン番号と表示機のピン番号がズレてて苦労した。同じにした方が判りやすいんじゃないか?>教本 この絵を描いて初めて、今日の実験で使う4桁7セグ表示機はカソードコモンで間違いない!と確信できた。 pic.twitter.com/dSVNUfjd4D

2018-11-27 22:13:08
拡大
戸田プロダクション @TodaProduction

感心したのは教本スケッチのこの部分。ダイナミック点灯方式で表示桁を高速切替するため、指定された番号以外のカソードコモンを一時的に HIGH にして電流が流れないようにしてるんですよね? なるほど、これは実に上手い方法だと感動した。まぁ、自分が知らなかっただけのことなんでしょうけど…。 pic.twitter.com/1479LljXJd

2018-11-27 22:14:43
拡大
戸田プロダクション @TodaProduction

いつもの3倍くらい時間がかかったけど (^_^;)、部品を配線して実行してみた。見事に4桁数字が8本のアノードプラスと4本のカソードコモンだけで表示出来た! この表示が高速切替によるパラパラアニメ?だとは到底信じられない。こんな回路と表示方法を考えた先人たちって本当にすごいなぁと思う。 pic.twitter.com/CRi3kU5wtG

2018-11-27 22:16:30
拡大
戸田プロダクション @TodaProduction

ひとつだけ疑問があって、この回路とスケッチによるダイナミック点灯方式の場合、カソードコモンを HIGH にした桁のLEDについては、セグメントによっては一時的に逆電圧がかかり部品の負荷が大きいのではないか? 抵抗があるから大丈夫なのかな? もう一度教本スケッチを良く見直してみようと思う。

2018-11-27 22:18:53
戸田プロダクション @TodaProduction

あと、今の回路ではカソードコモン(教本の記述は正反対の誤植?)に4本、アノードに個別の出力ピン8本を使っているが、ここに HC595 を使えば出力ピンを5本減らせるんじゃないか? シフト/ラッチの遅延が生じるかも?だが、試してみる価値はありそうなので是非やってみたい。今日はこれでおしまい。

2018-11-27 22:22:55
戸田プロダクション @TodaProduction

やったー!(^_^) 74HC595 のシフトレジスタ機能を併用して、ダイナミック点灯方式で4桁7セグLEDに「AbCd (ABCD)」と表示することが出来た。 pic.twitter.com/I9tcd26unX

2018-11-28 12:12:23
拡大
戸田プロダクション @TodaProduction

この改造で Arduino の出力ピンを12本から8本に減らすことが出来た。当初の発想では5本減らせるつもりだったが、考えたら5V用の出力ピンが別に1本要るのだった (^_^;)。この回路だとスケッチ行数も大幅に減らせたが、やはり 74HC595 が要るからあんまりCPは高くないなぁ…というのが実感。

2018-11-28 12:16:31
戸田プロダクション @TodaProduction

あと、ループで回す Display() の中で、元の教本コードは delay(1) を入れて上手く4桁表示出来るのに、改造コードに delay(1) があると4桁表示のうち一部の桁が暗くなる。delay(1) を外すと全桁同じ明るさで表示出来るから、これはやっぱり 74HC595 のシフト/ラッチで遅延が生じているのだと思う。 pic.twitter.com/8SrUWXuOPe

2018-11-28 12:45:44
拡大
戸田プロダクション @TodaProduction

じゃぁ 74HC595 使う意味ねーじゃん!…というオチなのか?(^_^;) pic.twitter.com/JfNeJhne94

2018-11-28 13:28:15
拡大
戸田プロダクション @TodaProduction

本日の Arduino - Project 19: 8*8 LED Matrix wiki.keyestudio.com/index.php/Ks00… 今日は8×8のLEDマトリクス上に数字の「0」を点灯させる実験。例によって部品のピン配置が判らない。教本の図解だとパーツ側面に連結用?の切り欠きがあるが、キット付属品にはこの切り欠きがない。型番だけは読めるが…。 pic.twitter.com/sP6JYffuvE

2018-11-29 15:37:00
拡大
戸田プロダクション @TodaProduction

この型番でググったら、またもアリババ通販サイトでピン配置図付きの仕様書が見つかった。助かるわ。この仕様書で、今回のパーツは最初から明確に「アノードコモン」であると納得出来た。ピン配置は てっきり COL と ROW の通りに並んでいると思ったが、実際はグチャグチャ?に入り乱れているんだな? pic.twitter.com/c5OrJa3g0y

2018-11-29 15:38:15
拡大
戸田プロダクション @TodaProduction

資料倉庫 Fritzing Parts nekosan0.bake-neko.net/warehouse_frit… Fritzing オリジナル部品一覧 geocities.jp/zattouka/Garag… Fritzing 絵を描くのも一苦労だ (^_^;)。20ミリ角の8×8LEDマトリクス、及び立てた状態の抵抗パーツは、上記お二方のサイトからダウンロードさせてもらった。有り難うございました。 pic.twitter.com/O0NGLOAnUO

2018-11-29 15:39:41
拡大
戸田プロダクション @TodaProduction

いよいよ回路を組んで実行させてみたが、なーんか思ってたとは違う感じ??? pic.twitter.com/zwGYLWLr64

2018-11-29 15:40:29
拡大
戸田プロダクション @TodaProduction

教本のスケッチを修正して、正しい「0」の向きに90度倒してみた。このプロジェクトも結局はダイナミック点灯方式を応用した課題だったが、ここまで苦労してたった一文字「0」が表示されるだけでは少しショボく感じてしまう (^_^;)。 pic.twitter.com/rlSbL6YJRP

2018-11-29 15:42:18
拡大
戸田プロダクション @TodaProduction

とは言え、別の文字パターンをたくさん積むのも面倒なので、こんな動画でお茶を濁してみる。オシャレで「簡単な」点灯パターンはなかなか思いつかなかった。 pic.twitter.com/848VIYskh8

2018-11-29 15:48:22
へのへのもへじ @SBBCFFFFS707

@TodaProduction もうダイナミック点灯つかいこなしているようで~ duty(点灯時間)変えれば明るさの変化もできますよ。

2018-11-29 19:56:05
戸田プロダクション @TodaProduction

@SBBCFFFFS707 まだ「使いこなす」まで行ってませんが (^_^;)、一応理解は出来ました。確かに点灯時間を変えると明るさが変化しますね。ただ、この回路には念のため大きな抵抗を使ったので、あまり暗くするとチラツキが目立ってしまいます。明るさ3段階変更は少し無理で、2段階変更が精一杯でした (dB不足?)。 pic.twitter.com/XHmEpxSNLL

2018-11-29 21:52:27
戸田プロダクション @TodaProduction

@SBBCFFFFS707 前回のお返事を差し上げたあと、生まれて初めて delayMicroseconds(us) を知りました。てっきり delay(ms) しか「無い」と早合点していました (^_^;)。これを使えば delay(ms) より遥かにきめ細かい duty 制御が出来ますね?

2018-11-29 23:18:38
へのへのもへじ @SBBCFFFFS707

@TodaProduction delayと比べればdelayMicrosecondsのほうが精度がいいです。ただ、設定(μS)に比べて誤差は大きいと聞いています。(と言っても数十μSくらいかと思いますが)

2018-11-29 23:58:00
戸田プロダクション @TodaProduction

@SBBCFFFFS707 有り難うございます。なるほど、それなら概ね 100μS より大きめの値を指定して使うように心がけます。それでもミリ秒をさらに10分割くらいまで刻むことが出来るので、今の私には十分すぎる精度です。なんたってこれまでの人生、ミリ秒の単位までしか知らずに生きて来たのですからね w。

2018-11-30 00:27:27
戸田プロダクション @TodaProduction

本日の Arduino - Project 20: 1602 LCD (1) wiki.keyestudio.com/index.php/Ks00… 今日は16文字×2行の液晶キャラクタディスプレイに文字列を表示させる実験。こんな贅沢なパーツ (写真がそれ) を使えるようになるなんて、1ケ月前には思ってもいなかった。この学習キットを買って本当に良かったなぁと思う。 pic.twitter.com/35WoUOQQ26

2018-12-02 20:07:30
拡大