ラズパイとYoutube、LEDドットマトリクス(788BS)

 前回の記事に続き、今回もラズパイの話。
 かなりドップリと浸っています。
 ここ数日、まったくギターに触っていない程、夢中でプログラムを組んでいます。
 1月5日にギター教室あるので、ソロギターも何か練習しないとな~。

ラズパイとYoutube

 今回も動画を作成して、Youtubeにアップ中です。10分程度の動画ですので、恐らく明日の朝までアップロード中でしょう。さて、以前少し触れましたが、ラズパイ4は普通にYoutube鑑賞できます。


 実売14000円程度のモニター、キーボード、マウスなしの激安パソコンです。

 セキュリティ的な面の強化と、パソコンが苦手な人でも初期設定が簡易(基本OS組み込み済みとか、アンドロイドOS組み込み済みとか)になって、スマホとのデーター移動(写真とか、音楽とか)が簡単にできるなら、つぎの世代(ラズパイ5?)では、一般に普及していくかもしれませんね。

 私的には、もう少し処理速度がアップして、7インチモニターの廉価モデルが、現行の薄型モデル程度の軽さ、USBC接続(モニター電源不要)になったら、タブレットの代わりに寝床で使えそうです。

 でもあれか、その時にはタブレットも進化して、廉価モデルが性能上がっているから、ラズパイ5を選ぶ人は結局マニアな人かな^^

 さて、現行のラズパイ4(4GB)での、Youtube視聴の感想ですが、1080P(HD)で少しコマ落ちするかな程度です。ここ数日、電子工作の気分転換で、「トムとジェリー」をなんとなくYoutubeで観ていましたが、ものすごく普通に没頭して観ることができます。

 14000円でこの性能。すごい世の中になったものです。何せ14000円の内、本体の部分は7000円程度です。普通のWindowsパソコンの場合、7000円だと本体の基盤(マザーボード)しか買えません!

LEDドットマトリクス(788BS)

電子工作は、電卓数字の4桁7セグメントLEDの次に、8*8ドットのLEDマトリクス(788BS)という単色赤色のディスプレイ?を使った制御の練習。

 電子工作の難易度というか、仕組み的には電卓数字の4桁7セグメントLEDの考えかたと同じで、超高速に各行を1行づつ点灯させて残像を作ることによって、一つの文字を表示できます。
 前回と違う点は、74HC595という8ビットのシフトレジスタを2個直列で使用していることです。

 ICを2個使用することによって、ラズパイのGPIOは3本の信号線しか使わないのに、16本の出力が制御できることになります。

 で、まずは、パーツセットに付属していたPDFマニュアルのプログラムを手打ちして、流れを確認しながら組んでみたところ、表示が一瞬光ってすぐ消える。ぱっと見える表示は目的の点灯をしているので、配線的には問題ない。

 色んな箇所でtime.sleepを付けて、時間を止めながら確認すると、どうもプログラム的にシフトレジスターの操作タイミングがおかしい個所と、そもそもの表示データーの受け渡しにおかしな点あり。

2個つなげた時のRCLK信号のタイミング

 模範プログラムは、8個分(IC1個分)のデーターが溜まったら、RCLKが信号を出して、結果が出力されており、次の8個のデーターが溜まった後に、再度RCLKが信号を出して、結果が出力されるようになっていました。
 この途中(一回目のRCLK信号の後)に、1秒止めると、目的のものが表示されて常時点灯しています。次のRCLK信号で全部消えます。なので、この部分を16個分のデーターが溜まってから、RCLKが信号を出して、結果を出力するようにしました。

すると、まったく点灯しない。

 とりあえず、点灯パターンの変数に適当な16進数を入れてみると、ほとんどのパターンで何かしら点灯する。で、重大な間違いに気づきました。
 なんと、LEDマトリクスのプラス側の信号と、マイナス側の信号が逆になっています。模範プログラムが間違っていたか、自分が変数名を本文中に取り違えたのか、とりあえずこの変数の名前を入れ替えしたら、当初の目的通りの点灯となりました。
 とまあ、RCLKの信号はとりあえず16個分のデーターを送ってからでも問題ないと分かりました。
 
 この制御が何に応用できるかは未知数(LEDの制御以外で、素人が信号線の受け渡しを16個も使う電子工作何があるんだろう??)ですが、とりあえず楽しいです。
 これはアウト側の制御ですが、ジョイステック等のイン側の制御でも同じようにIC経由でできるのでしょうかね。今後の楽しみです。

8*8LEDで電光掲示板

 ここからはオリジナルでプログラミング。
 追加内容としては

 ・0~9の数字、空白分の文字パターンを変数に登録。左右1ドットで残すので、実質6*8ドットでの描写で難しい。
 ・2次元配列の仕組みをグーグル先生に聞く。文字値と数値の配列も可能ですが、今回は見送り。a~Zまで、暇があったら作りたい。

 ・表示する数字を入力、数字の桁数把握、入力数字の前後に空白を入れた後、最後にループ用に一番後ろに先頭の数字を追加。各数字を一つづつ変数に振り分け。
 ・文字操作用の演算子をグーグル先生に聞く。常にSTR,INTエラーとのいたちごっこ。

 ・①LED表示する際に、基本文字の右左側1文字分を合体(合計24ドット分)、その24ドットの中から任意の8ドットを取り出すことによって、スクロール。右から左だけのスクロールなら、2文字分の16ドットで可能。将来的に左右どちらにもスクロールさせてみたいから、応用が利くように3文字分合体させて処理。
 ・2進数表記文字化→0b接頭語排除→1文字8ビット分の不足0追加→3文字分合体→任意の8ドット抜き取り→0b接頭語追加→整数化。ここも毎度グーグル先生に聞く。

 ・マルチスレッドでのタイマーで、カウンター計測。1カウントで文字1個分、次の1カウントで1ドットスクロール。計8カウントで1文字スクロール。8カウントでスクロール完了。これを入力した数字の桁数分リピート。
 ・IF文、FOR文の使い方をグーグル先生に聞く。特にFOR文は、30年前のBASICと違って、妙に色んな機能がありますね。配列の数リピートしながら、配列の中身を取り出すとか。こいつらは、コピーして違うところに貼り付けると、インデントエラー(空白が足りないとか)や、そのインデントがずれて本来の動きをしないとか、ミスが出やすいですね。

グローバル変数が今一分からない

 ユーザー関数(という呼び名なのかな)で使うときに、そのジャンプ先で本筋で使用していた変数を使うときに、呼び出し宣言して使う変数であって、return時の戻り値とは別の使い方をする変数。
 マルチスレッドのtime系のユーザー関数で使用されている。

 よく分からないのは、ユーザー関数のほとんどは、グローバル宣言をしていないのに、本筋の変数を使用している。変数の値は確認できるけど、書き換えができないのか・・・。
 今回の自作プログラムでは、ユーザー関数を使用する際に、意識して引数と戻値を使用しましたが、GPIOのピンの数値とか変数として使えているから、わざわざ引数を使うのなんでだろうと思ってたり。

 電子工作も楽しみたいから、この疑問を解消するためのプログラムを検証するのが後回しとなっています。これに関して、ワードプレスのPHPでも今一納得できていなかったんですよね。

もし何か質問あればご遠慮なくコメントください!

 さて、色々調べながらこの記事を書いていますが、2時間は経っているのに、まだ動画のアップロードが60%です。もう深夜の2時です。早く寝ないとな~。

 Youtubeで今回使用したLEDマトリクスの動画を検索してみましたが、同じ部品で同じような電光掲示板を作成しているチャンネルが数チャンネル程度しか見つかりません。ジョイスティックの入力で、このLEDマトリクス上でドットを動かして動画は目標の一つとなりましたが、今のところ他に参考(目標)になるネタが見つかりません。

 そして、「ラズパイ LED 電光掲示板」な感じで検索すると、8*32の単色や、32*32のRGBカラーの動画がヒットするのですが、どうもこのサイズになるとすでにLED基板のほうに制御ICが付いていて、今回の自作プログラムでは制御できない(SPI通信とか、そもそものデーター転送方法が違う)。

 でもって、私もメンドイと感じながら、1~9のドット画を自作しましたが、a~Zまでのフリーの素材とか、制御するのもライブラリーを読み込んでの制御が主流のようです。
 現状、液晶ディスプレイのように制御ライブラリーを使っての表示よりも、すべて自分でプログラムして制御してみたいので、ある程度慣れてきたら、このLEDマトリクス(788BS)を3個と、8ビットレジスタ(74HC595)を6個追加で購入して、32*32にチャレンジしてみたいです。

 とまあ、今回の8*8LEDマトリクス電光掲示板をプログラムするのに、沢山の事をGoogle先生に聞いて、なんとか理解しながらプログラムをPythonで組んでいます。
 Pythonのプログラムついての記事は無数にあるのですが、実際の電子工作での、このような基本パーツの応用的な記事がなかなか見つからないので、これからラズパイと電子工作を楽しんでいきたいという人の手助けができるような記事を作っていきたいな~と思っています。
 今回のプログラムとかも公開してもいいのですが、そんな要望があるのかな~。

 このサイト、スタジオジブリの曲をソロギターで弾くというのが主なのですが、なんでもござれなブログ日記でもあります。コメントで質問されると、うしくて超長文でご返信しますので、ご遠慮なく質問とか、こんなアイデアどうですか?みたいなのお持ちしています。

コメント

タイトルとURLをコピーしました