初めての Arduino 入門 (中編)

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

本日の Arduino - Project 16: 74HC595 wiki.keyestudio.com/index.php/Ks00… 今日はいよいよ「74HC595」というICを使う実験。 以前から薄々「何か複雑なことしようとすると、Arduino って圧倒的にIOピンが足りねぇんじゃね?(^_^;)」と感じていたが、どうやら当然、それを解決する方法がちゃんとあるらしい。

2018-11-25 16:18:17
戸田プロダクション @TodaProduction

出力するピンが不足した場合に出力ピンを増やす方法 geocities.jp/zattouka/Garag… 1.74HC595 を使えば、1個辺り8本のピン出力を増やすことが可能 2.しかもこの 74HC595 は「数珠つなぎ」のように何個でも増やせる 3.74HC595 を何個使っても、Arduino 側で必要な出力ピンは3本だけ 素晴らしい!

2018-11-25 16:19:52
戸田プロダクション @TodaProduction

74HC595 のデータシート (秋月電子) akizukidenshi.com/download/ds/ti… TC74HC595AP のデータシート (東芝) toshiba.semicon-storage.com/info/docget.js… 型番は違うが、英語版と日本語版、とりあえず両方ダウンロードして最初に眺めてみた。ただし内容はほとんど理解出来ない (哀しきゲルマ坊や (^_^;))。

2018-11-25 16:22:29
戸田プロダクション @TodaProduction

教本で示された今日の回路はこれ。最初は何がなんだか判らなかったが、自分で Fritzing で描いたら良く判った。74HC595 からの出力をグルっと一周させてLEDのアノードにブチ込んでるだけ。実際にワイヤを刺す時には最短距離で繋げば良かろう。この Fritzng 絵を最初に考えたヤツは天才だと思う w。 pic.twitter.com/wHFIc8lJVf

2018-11-25 16:26:19
拡大
戸田プロダクション @TodaProduction

ただ、この回路では 74HC595 の8番ピン (GND) が宙に浮いたままになっている点が気になる。色々ググったら GND に落としている回路図が結構見つかったが、それらは皆、別にコンデンサ経由ラッチ行き?の配線があってワケワカメだ。あいにくコンデンサが無いので、とりあえず教本通りでやってみる。

2018-11-25 16:30:03
戸田プロダクション @TodaProduction

教本で示された今日のスケッチはこれ。例によって自分好みのスタイルに書き換えてある。変数 LEDstate は要らないじゃないか?と思うがそのまま。この時点で shiftOut 関数が初見だったので、ググって意味を調べまくった。しかし、なかなか難しいねぇ (^_^;)。まだ shiftOut は完全には理解出来ない。 pic.twitter.com/l3nLZ3Wer3

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

いよいよ実行! しかし、これが一体どんな意図で展開されている点灯パターンなのか?イマイチ判らん (^_^;)。まさかブレッドボードの配線を間違ったわけじゃないよね? なんとなく1桁づつ繰り上がっているような感じにも見えるが、スケッチを見直してもなんだか良く判らない。この教本、正しいのか? pic.twitter.com/qZ5CTsXGoo

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

なんかこう、一桁づつ繰り上がる…という感じならこうじゃないか? void loop(){ for(int TX = 0; TX < 129; TX++){ UpdateLEDs(TX); delay(100);  } } void UpdateLEDs(int value) { digitalWrite(LATCH,OFF); shiftOut(DATA,CLOCK,LSBFIRST,value); digitalWrite(LATCH,ON); } pic.twitter.com/lsCLS5RARw

2018-11-25 17:10:53
戸田プロダクション @TodaProduction

ナイトライダー (^_^) void UpdateLEDs(int value, int FLG) { digitalWrite(LATCH, OFF); switch (FLG) { case 1: shiftOut(DATA, CLOCK, MSBFIRST, 1<<value); break; case 2: shiftOut(DATA, CLOCK, LSBFIRST, 1<<value); break; } digitalWrite(LATCH, ON); delay(100); } pic.twitter.com/PEFYehSaYd

2018-11-25 17:12:36
戸田プロダクション @TodaProduction

というわけで、長々と色々やってみたけど、結局のところ 74HC595 の動作について完全に理解出来たとは到底言えそうにない。肝心の shiftOut についても同様だ。こりゃまだ相当な勉強が必要みたいだ。とりあえず 74HC595 の8番ピンを GND に落とすべきか否か?あたりから調べ直そうと思う。おしまい。

2018-11-25 17:14:29
戸田プロダクション @TodaProduction

本日の Arduino - Project 17: 1-digit LED Segment Display wiki.keyestudio.com/index.php/Ks00… 半月前から始めた Arduino 入門も教本の後半戦に突入。今日は7セグLEDで数字を光らせる実験。8本のデジタル出力ピンを使い、表示器の内部の8個のLEDに点灯/消灯指示を送る。抵抗は内蔵じゃないんだな? pic.twitter.com/iD8Pq1xEYY

2018-11-26 19:20:40
拡大
へのへのもへじ @SBBCFFFFS707

@TodaProduction 最近のマイコンは自分が壊れないように保護回路は入っていますが、抵抗で明るさを調整するのが一般的だと思います。7セグメントで2桁表示できるとおもしろいですよ!

2018-11-26 19:39:36
戸田プロダクション @TodaProduction

実験動画。0~9の数字がクルクル切り替わる。少年時代は7セグ表示機なんて夢のまた夢、近未来的な香りが漂う憧れのパーツだったのに、今回、案外単純な仕掛けだと知り少し苦笑した。しかしこの回路を「石」だけで組むとなると、もっともっと高度な知識が必要なのだろう。まさに Arduino 様さま w。 pic.twitter.com/OBSpePSiMW

2018-11-26 19:40:21
戸田プロダクション @TodaProduction

ただ、教本のスケッチは数字の1文字毎1セグ毎に digitalWrite するもので、素人目で見ても長いし汚いしゴリゴリだし、ホント「ご苦労さま」としか言いようのないコードだった。やってみて初めて判ったが、8ビットの情報で1文字光るなら「まさしく昨日の 74HC595 の出番じゃないか?」とも思った。

2018-11-26 19:42:01
戸田プロダクション @TodaProduction

@SBBCFFFFS707 なるほど、表示機は表示に徹し、明るさはユーザーの好きにさせる…という思想なのですね? まだ始めたばかりで知らないことだらけです。7セグメントで2桁表示というのは面白そうですね (どんな仕掛けか?想像もつきませんが (^_^;))。

2018-11-26 19:48:25
へのへのもへじ @SBBCFFFFS707

@TodaProduction HC595と同様、配線を減らして表示機をつける技です。今お使いのモニターも縦と横の信号を時分割出力してそのぶつかったピクセルが光る仕組みです。7セグメント(ドットを入れると8セグメント)でも、一つ増えるたびに1本増やすだけでOKです。cqpub.co.jp/hanbai/books/1…

2018-11-26 19:52:52
戸田プロダクション @TodaProduction

教本の回路とスケッチを完全に改造し、74HC595 を用いて7セグ表示機を光らせてみた。狙い通り、デジタル出力ピンの本数を8本から3本に減らすことが出来た。ついでに今回は0~9の数字の他にA~Fも表示させてみた。思った通りの回路をこしらえることが出来て嬉しい (^_^)。 pic.twitter.com/QXLjC4aRif

2018-11-26 19:57:12
戸田プロダクション @TodaProduction

改造後のスケッチはこれ。なんのことはない、すべてのデータをテーブルで持ったみたいなコードで「ちょっとズルい」気もするが (^_^;)、shiftOut で1バイト出力する方法が理解出来たので良しとする。なんたって処理部がメチャクチャ短くなってスッキリ (^_^)。心なしか表示スピードも早い気がする。 pic.twitter.com/ZoGVTyjd3d

2018-11-26 20:06:42
拡大
戸田プロダクション @TodaProduction

@SBBCFFFFS707 有難うございます。ダイナミック点灯方式とは初めて聞きました。なるほど、時間差で複数の違う桁を高速切替するのですね? 実用的には何桁くらいまで表示可能でしょうか? まだ Arduino の割り込みを知りませんが、表示機を買い足し HC595 の1文字 shiftOut と組み合わて試してみたい気もします。

2018-11-26 20:28:54
へのへのもへじ @SBBCFFFFS707

人間の目は短時間光るものは見えるけど、短時間消えるものは見えにくい残像効果を利用しています。スケッチで書いても(割り込みを使わなくても)8桁位はできると思います。

2018-11-26 20:32:36
戸田プロダクション @TodaProduction

@SBBCFFFFS707 へー、8桁いきますか? 先人たちの知恵と工夫、というのは本当にすごいものですねぇ。少年時代から電気/電子工学は憧れの学問でした。遅きに失した感もありますが (^_^;)、残りの人生で少しでも勉強していきたいと思っています。

2018-11-26 20:40:08
戸田プロダクション @TodaProduction

本日の Arduino - Project 18: 4-digit LED Segment Display wiki.keyestudio.com/index.php/Ks00… 今日は4桁7セグのLEDが光る実験。キット付属部品は12本足、ん?7セグ(8LED)4桁で、なんで足が12本なんだ?と疑問に思って教本を読むと、なんと!昨日教えてもらったダイナミック点灯の実験だった!

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

さすがは keyestudio 学習キット、ちゃんとダイナミック点灯方式の実験も課題に組み込んでくれていた。嬉しくなって早速内容を確認したが、教本に載っている写真(1枚め原寸)と、キット付属部品(2枚め)の型番が違う。キット付属部品の SMA420364L でググってデータシートを探したが見つからない。 pic.twitter.com/2o9iEGkvOj

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

この部品がアノードコモンなのか?カソードコモンなのか?が判らない。ピン配置も判らない。教本には「小数点側を下にして裏返すと…」とあるが、言われた通り部品をひっくり返すと型番の印刷が教本の写真(1枚め)と実際の部品(2枚め)とで逆になる。なんでピン配置図を載せませんかね?(^_^;) > 教本 pic.twitter.com/wOw7Ze3r70

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

結局、最初の教本写真の型番(3461AS)でググったら、アリババ通販サイトでピン配置図付き仕様書をやっと見つけた。これでピン配置は確定したが、依然としてキット部品のアノード/カソードコモンが不明。これについてはスケッチと実体配線図を見て考えることにして、早速 Fritzing を起動したのだが…。 pic.twitter.com/5Mcr6Zz92j

2018-11-27 22:04:01
拡大
1 ・・ 4 次へ