クリエイター手抜きプロジェクト[546]IoT IchigoLatte編 シェルを使う(コマンドの連続実行)/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,700文字)



今回は、IchigoLatteでのコマンドの連続実行について説明します。

IchigoLatteでコマンドを連続して実行するには、コマンドを;(セミコロン)で区切ります。例えば、プログラムをシリアル接続したパソコン側に出力した後で実行するには、以下のように書きます。

lash>cat .>uart;ms .

パソコン側からプログラムを読み込んで実行する場合は、以下のようになります。なお、この場合、すでにあるプログラムは消されてしまうので注意して下さい。

lash>cat uart>.;ms .





IchigoLatteのOSは使える残りのメモリが少ないので、ms uartやms @0といった指定ができません。このため、コマンドを連続して実行させなければいけないことがあります。

EEPROMからプログラムを読み込んで実行する場合は、以下のようになります。

lash>cat @1>.;ms .

IchigoLatteはプログラムを作成できるメモリが2KBと少なめなので、凝ったプログラムを作ろうとした場合、EEPROMが必要になります。

センサーからの入力をサーバーに送ったり、グラフ化する程度であれば2KBもあれば十分ですが、多数のセンサー入力を管理し処理し保存する場合や、ゲームなどでは、2KBではプログラム領域が足りない場合があります。

このようなとき、EEPROMを接続すれば本体2KB+EEPROM(1MBit))128KBで、最大130KBまでプログラムを作成することができます。さすがに130KBもあれば、十分すぎるでしょう。

IchigoLatte専用基板であれば、基板上に直接EEPROMを接続することができます。専用基板の場合、CPUの上と下の領域(Latteキャンバス)にEEPROMやセンサーを取り付けることができます。

複数のプログラムを読み込んで実行する場合は、以下のようにcatとmsコマンドを組み合わせます。

lash>cat @0>.;ms ;cat @1>.;ms .;cat @2>.;ms .

ただ、毎回このようにコマンドを入力するのは大変ですし、間違えてしまうこともあります。

このような場合は、コマンドでなく、プログラムで実行するEEPROMのプログラム番号を指定する方がよいでしょう。プログラムでEEPROM上のプログラムを読み込んで実行するにはlrun()を使います。

以下の例では、TESTの文字を出力した後にEEPROMにある3番目のプログラムを読み込んで実行します。

log("TEST\n");
lrun(2);
(\は半角バックスラッシュです)

lrun()を使ってプログラムを連続する際に、次のプログラムにデータを渡したい場合はあります。IchigoLatteでは、次のプログラムにデータを渡す方法はいくつかありますが、本体メモリだけで行う場合はenv()を使います。32ビットの数値1つを次のプログラムに渡すことができます。

例えば、123を保存するには以下のように指定します。


env(123);

保存した数値を他のプログラムで読み出すには、以下のようにします。この場合、変数aに値が読み出されます。

var a=env();

実際のところ、センサー値の入力処理やグラフ表示程度では、2KBのプログラム領域を使い切ってしまうことはまずありません。しかし、作成するプログラムによっては2KBでは足りないこともあります。このような場合は、コマンドでの連続実行や、プログラムを使っての連続実行処理が必要です。

env()では32ビットの数値ひとつしか渡せませんが、画面の領域(32文字×24行)を使えば768バイトものデータを渡すことができます。

また、1KBを超えるデータを渡すような場合は、EEPROMを利用する方法もあります。さらに、MixJuiceなどの通信ボード(シールド)を使えば、サーバーとのデータ送受信ができるのでデータは、ほぼ無限に保存、読み出しができます。

まだ説明していない命令もありますが、データサイズによって使用する命令は、以下のようになります。

・32ビット数値1つ
 env()

・768バイトまで
 scr(),mem(),log(),lc()

・128KBまで (要EEPROM)
  i2cw(),i2cr()

・数GB,TB (要シリアル接続されたパソコンなど)
 uart()

・ほぼ無限(要MixJucieとサーバー)
 uart()

用途によりけりですが、IchigoLatteには様々なデータの受け渡し方法が使えるというのは、覚えておいて損はないでしょう。


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

いろいろネタはあっても、技術がないので実現できないことも多々あります。ただ、技術力のなさをアイデアでカバーするという方法はあります。が、だんだんと歳を取ってきたので、そのアイデアもしぼんできているという何ともな状態。若い人のぶっとんだ発想は大事にしてあげましょう。


・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram

・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/

・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605

・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591

・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/