Android +
 Runtime Environment
 「コンピュータを楽しもう!」という
ブログを書いています。




                     たろサ(@momoonga)
                     山本三七男
Luarida製作動機
3


         製作動機


   どこでも、ちょこちょこ
 プログラムするのが好きだった。



1980年代   90年代
ポケコン     ザウルス    2000年代
BASIC    BASIC   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

 「2種類のグラフィック画面」
持っているのは、それだけ!!
           W = color(255,255,255)
           R = color(255,0,0)
           canvas.drawCls(W)
 Bitmap用
 ワーク画面     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   if(exp)then
 block           block
end            elseif(exp)then
                 block
repeat         else
 block           block
until(exp)     end
17


         Lua言語の簡単な紹介

構文
     while(exp)do
      if(exp)then break end
     end
     for i=exp, exp [,exp] do
      block
     end
18


        Lua言語の簡単な紹介

構文
 条件式
     == > < <= >= ~=
     and or
 if(exp)then
   block
 end
19


      Lua言語の簡単な紹介

変数
 function f()   グローバル変数
   a=10         ローカル変数
   local b=20
   do
     local b=30
   end          20
   print( b )
 end
20


           Lua言語の簡単な紹介

テーブル
a={ b=20, c=30 }
 ⇒a.b a.c
 ⇒a[“b”] a[“c”]    a={
str =”b”             b={ c=30, d=40 }
 ⇒a[str]             }
                    ⇒a.b.c a.b.d
                    ⇒a[“b”].c
   20               ⇒a[“b”][“c”]
                    ⇒a.b[“c”]
21


           Lua言語の簡単な紹介

 テーブル(配列) a={ } 初期化されます
a={ }  1~です       a[1]={ b=20, c=30 }
 ⇒a[1]=10         a[2]={ b=21, c=31 }
 ×⇒a.1            ⇒a[1].b a[1].c
a={ 20, 30, 40 }  ⇒a[2].b a[2].c
 ⇒a[1]=20 a[2]=30 ⇒a[2][“b”] a[2][“c”]
 ⇒a[3]=40             a={ b={} }
for i=1,10 do         ⇒a.b[1]
 a[i]={ }             ⇒a.b[2]
end
 ⇒a[1][1] a[1][2]
アプリの登録
 公開方法
23


DOROKURI
24


              DoroLuarida

                   タオソフトウェアさんが
 Luaridaユーザ        実現してくれました。
  スクリプト作成
  (foo.lua)

                        DOROKURI
                スクリプトapk化
    foo.apk        サイト




Androidマーケットに Android
    登録できる    マーケット
25


DoroLuarida登録




   apkファイル名アプリ名
      アイコンは無ければデフォルト


         素材データはZIPファイル

           公開オプション
Luarida,
SaridaSAKURA
    の起動
27


                 起動すると


           Luarida起動
/sdcard      /sdcard/luarida/luarida.lua

                                  これが起動し、
                                 ここから始まります。
          SaridaSAKURA起動
/sdcard      /sdcard/SaridaSAKURA/sarida.lua
      /sdcard/SaridaSAKURA/sketch_bin/sketch.bin


                                           GR-SAKURA
SaridaSAKURA
   について
29


        Saridaとは

LuaでArduinoのようなマイコンボードを
     制御しようと思って開発中
30


             何故ゆえ?

2つのプログラムが必要
   Android




   Arduino
31


      お手軽開発に向けて


MicroBridge対応
   Luarida
   (ルアリダ)

ADK対応
   SaridaSAKURA
   (サリーダ桜)
32


                               実装コマンドなど

    Saridaへの実装
ピンモードの切り替え                         アナログライト
adk.pinMode(pin, mode)             adk.analogWrite(pin, value)
pin: ピン番号                          pin: ピン番号
mode: 0:Input, 1:Output            value: 出力PWM比率(0~255)
                                   analogWriteDAC(pin, value)
デジタルライト                            value: DAC出力(0~4095)
adk.digitalWrite(pin, value)
pin: ピン番号                          バイト送信
value: 0:LOW, 1: HIGH              adk.send(data, length)
                                   data: バイトデータ
デジタルリード                            length: データサイズ
adk.digitalRead(pin)
pin: ピン番号                          バイト受信
戻り値: 0:LOW, 1:HIGH                 adk.recv( [timeout] )
アナログリード                            timeout: 受信タイムアウト(s)
                                   戻り値: 受信データ,データサイズ
adk.analogRead(pin)
pin: ピン番号
戻り値: 10ビットの値(0~1023)
33


GR-SAKURAデモ

      実はまだ、ADK通信
      のところにバグがあっ
      て、ちゃんと動いてい
      ません。
34


           ロボットを作りました
MicroBridgeとLuaridaをつなげて、Luaridaで
操作するロボットを作りました。
MicroBridge-Luarida間はソケット通信しています。
大人の科学付録の「卓上ロボット掃除機」をAndroidから操作できる
ように改造させてもらいました。
ご清聴ありがとう
 ございました


 luarida-fun-club@googlegroups.com

Android + Runtime Environment

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