I Shall Foot It! ~あるいてく~

銀河系を巻き込んだ親子喧嘩に加担した密輸業者の宇宙船の模型を作ってます

デアゴ ミレニアムファルコン作成記 Episode 097 [ラズパイとPICのLED制御について]

   

ただひたすらファルコンに電飾を仕込みたいが為に、独学でRaspberry PiやPICについて学んでましたが、ちょっと間が空いていたので、課題になっていた事を片付けて、制御について再検討しました。

動画

リハビリ兼ねて、ビットシフトレジスタを2個つないで16個のLEDをラズパイとPICでコントロールしてみました。動画は最終的にPICを接続したときのもの。

(プログラムは本記事にあります)

久しぶりだったので、環境再設定したり、いろいろ思い出すの大変でした。

個人的な備忘録として、今回ハマったのをメモ。

  • シフトレジスタをクリアするSRCLR端子(負論理[端子に上線表記あり])を無効にするためHIGHに接続しておくのを忘れてた。

 

 

ビットシフトレジスタへ降順に格納する

以前に、Raspberry PiからたくさんのLEDを制御する方法について書いた下記の記事。

課題が残ってました。

レジスタの格納順序が逆になるため、配列を逆から見たパターンがセットされるため、ループ内の変数は、後ろ側からセットしています。これは直感的でないので、反転するプログラムがあると楽かも。後日の課題とします。

レジスタの値をFirst In First Outでシフトして設定する動きをします。

なので、配列を降順にセットしてあげる様に変更しました。

PIC 12F683 降順にセットするプログラム

ループ処理(for文)をデクリメントさせてるだけです。

 

Raspberry Pi Python 降順にセットするプログラム

調査にちょっと手間取りましたが、reversedを使うらしい。簡単に済みました。

 

上記リンク(Episode 054)の修正バージョンです。

 

PICの配列定義の容量オーバーの問題

先日の投稿、

で、

defineで定義したデータの配列を永遠と書こうとおもったのですが、PICの変数用メモリが全然足りなくてエラーが発生しました。なので、今回は単純なロジックで1個ずつ点灯させるようにしました。

と書いてました。

今回も、

と、2行に増やした段階でエラーとなってしまいます。

宣言だけだと、エラー無し。

。。。となると、プログラム本文中にオンコードでパターンを設定するのはできそうだけど、上記のプログラムで既に40%程度の容量を食ってるみたいなので、すぐにリミットが訪れそうな気がしててがっつり組むのはちょっと怖い。

 

ランダムなLED制御はPIC、規則的な制御はラズパイで

(ラズパイから接続された)PICのある端子がHIGHになった状態で、PICでコクピットなどのランダム点灯を制御して、着陸灯や頭上注意灯など、完全に制御したいものはラズパイやArduinoでコントロールした方が良さげですね。

 

 

  関連記事

関連記事

 - Raspberry Pi, デアゴ ミレニアムファルコン ,