Upload
-
View
597
Download
5
Embed Size (px)
Citation preview
Android +
Runtime Environment 「コンピュータを楽しもう!」という ブログを書いています。
たろサ(@momoonga)
山本三七男
Luarida製作動機
3
製作動機
どこでも、ちょこちょこプログラムするのが好きだった。
1980年代ポケコンBASIC
90年代ザウルスBASIC
2000年代944BASIC
4
製作動機
Androidでもちょこちょこプログラム
SL4A(Scripting Layer for Android)環境
・Python・Perl・JRuby・Lua・JavaScript
う~ん。取っつきにくいなぁ!
5
製作動機
もっと、敷居の低いもの
そう、BASICのような・・・
・Eclipseはインストールしなくていい。
・Androidのバージョン違いも関係なく。
・簡単・単機能で、入り易いもの。
6
製作動機
無ければ作るしかない
移植が簡単そうな
・Lua言語
Androidに 移植。
イメージはBASIC
7
イメージはBASIC
10 print”Hello World.”20 goto 10
while(true)do print(”Hello World.”)end
さすがに、こんな感じに
無ければ作る
Luaridaについて
9
Luaridaの特徴
1.昔のBASICのような命令体系
2.Android単体プログラム
3.開発環境(JotaTextEditor)
4.アプリ配布サーバー用意
5.ADK, MicroBridge接続可能(Sarida)
10
イメージはBASIC
「2種類のグラフィック画面」持っているのは、それだけ!!
11
イメージはBASIC
メイン画面
Bitmap用ワーク画面
「2種類のグラフィック画面」持っているのは、それだけ!!
W = color(255,255,255)R = color(255,0,0)canvas.drawCls(W)
for x=0,100,2 do canvas.drawLine(x*2,0,200-x*2, 200, R) canvas.drawLine(0, x*2, 200, 200-x*2, R)end
12
イメージはBASIC
「ダイアログ・トーストも簡単」
a = dialog( "", "メッセージのみです。" )a = dialog( "", "OKで閉じます",1 )a = dialog( "a= "..a, "Yes No のサンプル", 2 )a = dialog( "a= "..a, "Yes No Cancelのサンプル",3)toast( "トーストです。a= "..a )
13
イメージはBASIC
「リストダイアログも簡単」
item.clear()item.add("みかん", 0 )item.add("たちうお", 1 )item.add("海", 0 )t = item.list( "好きなものを選んでください" )t = item.radio( "好きなものを選んでください", 2 )t = item.check( "好きなものを選んでください" )
14
Luaridaのコマンド一覧
Lua言語について
16
Lua言語の簡単な紹介
構文
while(exp)do blockend
repeat blockuntil(exp)
if(exp)then blockelseif(exp)then blockelse blockend
17
Lua言語の簡単な紹介
構文
while(exp)do if(exp)then break endend
for i=exp, exp [,exp] do blockend
18
Lua言語の簡単な紹介
構文
条件式
if(exp)then blockend
== > < <= >= ~= and or
19
function f() a=10 local b=20 do local b=30 end print( b )end
Lua言語の簡単な紹介
変数
グローバル変数ローカル変数
20
20
a={ b=20, c=30 } ⇒a.b a.c ⇒a[“b”] a[“c”]str =”b” ⇒a[str]
Lua言語の簡単な紹介
20
テーブル
a={ b={ c=30, d=40 } } ⇒a.b.c a.b.d ⇒a[“b”].c ⇒a[“b”][“c”] ⇒a.b[“c”]
21
Lua言語の簡単な紹介
テーブル(配列)
a={ } 1~です ⇒a[1]=10 × a.1⇒a={ 20, 30, 40 } ⇒a[1]=20 a[2]=30 ⇒a[3]=40for i=1,10 do a[i]={ }end ⇒a[1][1] a[1][2]
a[1]={ b=20, c=30 }a[2]={ b=21, c=31 } ⇒a[1].b a[1].c ⇒a[2].b a[2].c ⇒a[2][“b”] a[2][“c”] a={ b={} } ⇒a.b[1] ⇒a.b[2]
a={ } 初期化されます
アプリの登録
公開方法
23
DOROKURI
24
DoroLuarida
Luaridaユーザ
スクリプトapk化サイト
Androidマーケット
Androidマーケットに登録できる
スクリプト作成(foo.lua)
foo.apk
タオソフトウェアさんが実現してくれました。
DOROKURI
25
DoroLuarida登録
apkファイル名アプリ名
アイコンは無ければデフォルト
素材データはZIPファイル
公開オプション
Luarida,
SaridaSAKURA
の起動
27
起動すると
/sdcard /sdcard/luarida/luarida.lua
これが起動し、
ここから始まります。
/sdcard /sdcard/SaridaSAKURA/sarida.lua
Luarida起動
SaridaSAKURA起動
/sdcard/SaridaSAKURA/sketch_bin/sketch.bin
GR-SAKURA
SaridaSAKURA
について
29
Saridaとは
LuaでArduinoのようなマイコンボードを制御しようと思って開発中
30
何故ゆえ?
2つのプログラムが必要
Android
Arduino
31
お手軽開発に向けて
MicroBridge対応Luarida(ルアリダ)
SaridaSAKURA(サリーダ桜)
ADK対応
32
実装コマンドなど
Saridaへの実装
adk.pinMode(pin, mode)
pin: ピン番号
mode: 0:Input, 1:Output
ピンモードの切り替え
デジタルライト
adk.recv( [timeout] )
timeout: 受信タイムアウト(s)
戻り値: 受信データ,データサイズ
デジタルリード
adk.digitalWrite(pin, value)
pin: ピン番号
value: 0:LOW, 1: HIGH
アナログライト
adk.analogWrite(pin, value)
pin: ピン番号
value: 出力PWM比率(0~255)
analogWriteDAC(pin, value)
value: DAC出力(0~4095)
adk.digitalRead(pin)
pin: ピン番号
戻り値: 0:LOW, 1:HIGH
adk.analogRead(pin)
pin: ピン番号
戻り値: 10ビットの値(0~1023)
アナログリード
バイト送信adk.send(data, length)
data: バイトデータ
length: データサイズ
バイト受信
33
GR-SAKURAデモ
実はまだ、ADK通信のところにバグがあって、ちゃんと動いていません。
34
ロボットを作りました
MicroBridge-Luarida間はソケット通信しています。大人の科学付録の「卓上ロボット掃除機」をAndroidから操作できるように改造させてもらいました。
MicroBridgeとLuaridaをつなげて、Luaridaで操作するロボットを作りました。