今更だがIchigoJamって整数計算しかできないとは・・・

IchigoJamでロボットアームでも作ろうかと思ったのですが、三角関数どころか実数計算も出来ません。これはプログラム電卓より相当厳しいです。

イメージ 1


IchigoJam BASIC リファレンス ver 1.1

操作 解説 例題
#16進数 16進数で数を表記します #FF
(数) カッコ内は優先して計算する PRINT 1+(1*2)
: コマンドを連結する WAIT 60:LED 1
[数] 配列([0]から[101]までの102コの連続した変数として使えます) LET[0],1,2,3で連続代入可能 [3]=1
`2進数 2進数で数を表記します `1010
~数 ビット反転(ビット演算) ?~A
ABS 絶対値を返す(マイナスはプラスになる) ?ABS(-2)
ANA 外部入力の電圧(0V-3.3V)を0-1023の数値で返す(2:IN2、5-8:IN5-8(OUT1-4)、0,9:BTN、省略で0) ?ANA()
ASC 文字に対する文字コードを返す PRINT ASC("A")
BEEP BEEPを鳴らす 周期(1-255)と長さ(1/60秒単位)は省略可 ※SOUND(EX2)-GNDに圧電サウンダー接続 BEEP
BIN$ 数を2進数の文字列にします(2番目の数は桁数、省略可) ?BIN$(255,8)
BPS シリアル通信速度を変更する(0で初期値の115,200bps) BPS 9600
BTN ボタンが押されていれば1、そうで無いとき0を返す(数:0(付属ボタン)/UP/DOWN/RIGHT/LEFT/SPACE、省略で0) LED BTN()
CHR$ 文字コードに対応する文字を返す(コンマ区切りで連続表記可) PRINT CHR$(65)
CLK キーバッファとキーの状態をクリアする CLK
CLP キャラクターパターン(#700-#7FF)を初期化します CLP
CLS 画面を全部消す CLS
CLT 時間をリセットする CLT
CLV 変数、配列を全部0にする 別名:CLEAR CLV
CONT 実行中の行や、中断した行を再度実行する CONT
DEC$ 数を文字列にします(2番目の数は桁数、省略可) ?DEC$(99,3)
END プログラムを終了する END
FILE() 最後にプログラムを読み込み、書き込み行った数を返す ?FILE()
FILES 数1(省略可)〜数2のプログラム一覧を表示する(EEPROM内ファイル表示に対応、0指定ですべて表示、ESCで途中停止) FILES
FOR 変数に数1をいれ、数2になるまで数3ずつ増やしながらNEXTまでをくりかえす (STEPは省略可) FOR I=0 TO 10:?I
FREE() プログラムの残りメモリ数を返す ?FREE()
GOSUB 数または式で指定した行番号に飛び、RETURNで戻ってくる 省略形:GSB GOSUB 100
GOTO 指定した行番号へ飛ぶ(式も指定可能) GOTO 10
HELP メモリマップを表示します HELP
HEX$ 数を16進数の文字列にします(2番目の数は桁数、省略可) ?HEX$(255,2)
I2CR I2Cで周辺機器から読み込む I2Cアドレス、コマンド送信アドレス・長さ、受信アドレスと長さ(http://fukuno.jig.jp/989) R=I2CR(#50,#700,2,#702,2)
I2CW I2Cで周辺機器に書き込む I2Cアドレス、コマンド送信アドレス・長さ、送信アドレスと長さ(http://fukuno.jig.jp/989) R=I2CW(#50,#700,2,#702,2)
IF 数が0でなければ次を実行し、0であれば次2を実行する (THEN,ELSEは省略可) IF BTN() END
IN(数) IN1-9から入力する(0または1) 数を省略してまとめて入力できる (IN1,4はプルアップ、IN5-8は切り替え時) LET A,IN(1)
INKEY() キーボードから1文字入力する(入力がないときは0) PRINT INKEY()
INPUT キーボードからの入力で数値を変数にいれる INPUT "ANS?",A
LED 数が1なら光り、0なら消える LED 1
LET アルファベット1文字を変数として数の値を入れる(配列に連続代入可能) 省略形:変数=数 LET A,1
LINE() 現在実行中の行番号を返す(非実行時は0) ?LINE()
LIST 行番号1以上、行番号2以下のプログラムを表示する(行番号は共に省略可、ESCで途中停止) (F4) LIST 10,300
LOAD プログラムを読み出す(0〜2の3つ、100-227 外付けEEPROM、省略で前回使用した数) LOAD
LOCATE 次に文字を書く位置を横、縦の順に指定する(縦=-1で無表示) 省略形:LC LOCATE 3,3
LRUN プログラムを読み込み後、実行します LRUN 1
NEW プログラムを全部消す NEW
NEXT FORコマンドに戻り、変数にSTEP指定の数だけ増やし、TOに到達していない場合くりかえす NEXT
NOT 式が0の時に1、それ以外で0を返す (!でも可) IF NOT A=1 LED 1
OUT 外部出力OUT1-7に0または1を出力する 数2を省略でまとめて出力できる(OUT1-4、数2に-1指定でIN5-8へ切り替え) OUT 1,1
PEEK メモリ読み出し(キャラクターパターン0-#7FF) ?PEEK(#700)
PLAY MMLで記述した音楽を再生する MML省略で停止 ※SOUND(EX2)-GNDに圧電サウンダー接続する http://fukuno.jig.jp/892 PLAY "$CDE2CDE2"
POKE メモリへの書き込み(#700-#100F内が書き込み可能 http://fukuno.jig.jp/1178) POKE #700,#FF
PRINT 文字を表示する (文字列は"で囲む、";" で連結できる) 省略形:? PRINT "HI!"
PWM 外部出力OUT2-4に数2で0.01msec単位で指定するパルスを出力する(0-2000、周期20msec、サーボ使用時100-200前後)、数3で周期を指定(省略時2000=20msec) PWM 2,100
REM これ以降の命令を実行しない(コメント機能) 省略形:' REM START
RENUM プログラムの行数を指定数から数2刻みにする (数省略で10、GOTO/GOSUBの飛び先は手で変更必要) RENUM
RESET IchigoJamをリセットします RESET
RETURN GOSUBで呼び出された次へ戻る 省略形:RTN RETURN
RND(数) 0から数未満の正数をランダムに返す PRINT RND(6)
RUN プログラムを実行する (F5) RUN
SAVE プログラムを保存する(0〜2の3つ、100-227 外付けEEPROM、省略で前回使用した数) ボタンを押した状態で起動すると0番を読み込み自動実行 SAVE 1
SCR 画面上の指定した位置に書かれた文字コードを所得する(指定なしで現在位置) 別名:VPEEK PRINT SCR(0,0)
SCROLL 指定した方向に1キャラクター分スクロールする(0/UP:上、1/RIGHT:右、2/DOWN:下、3/LEFT:左) SCROLL 2
SLEEP プログラムを休止する (ボタンを押すと復帰する) SLEEP
SOUND() 音が再生中なら1、そうで無いとき0をを返す ?SOUND()
SRND 種を指定して乱数を初期化する SRND 0
STOP プログラムを中断する STOP
TEMPO 再生中の音楽のテンポを変更する TEMPO 1200
TICK() 時間を返す(1/60秒で1進む) PRINT TICK()
UART 数1:シリアル出力設定(0:オフ、1:PRINTのみ、2:PRINT/LC/CLS/SCROLL、3:PRINTのみ/改行コード\r\n、初期値:2)、数2:シリアル受信設定(0:オフ、1:オン 省略時) UART 0
USR マシン語呼び出し(注意!高確率でIchigoJamが停止します) A=USR(#700,0)
VER() IchigoJam BASICのバージョン番号を返す ?VER()
VIDEO 画面表示非表示を切り替える 0で画面表示を停止し処理高速化 (F8で表示)、省略可能な数2でVIDEO0時CPUクロックを1/数2に変更し省電力化 VIDEO 0
WAIT 数の数値フレーム分待つ 60で約1秒 WAIT 60
AND どちらの式も1の時に1、それ以外で0を返す (&&でも可) IF A=1 AND B=1 LED 1
OR どちらかの式が1の時に1、それ以外で0を返す (||でも可) IF A=1 OR B=1 LED 1
- 引き算する PRINT 2-1
% 割り算した余りを返す PRINT 10%3
& 論理積(ビット演算) ?3&1
* 掛け算する PRINT 7*8
/ 割り算する(小数点以下は切り捨てられます PRINT 9/3
^ 排他的論理和(ビット演算) ?A^1
| 論理和(ビット演算) ?3|1
+ 足し算する PRINT 1+1
< 比較して未満の時に1、それ以外で0を返す IF A<B LED 1
<< 左シフトする(ビット演算) ?A<<1
<= 比較して以下の時に1、それ以外で0を返す IF A<=B LED 1
<> 比較して等しくない時に1、それ以外で0を返す (!=でも可) IF A<>B LED 1
= 比較して等しい時に1、それ以外で0を返す (==でも可) IF A=B LED 1
> 比較してより大きい時に1、それ以外で0を返す IF A>B LED 1
>= 比較して以上の時に1、それ以外で0を返す IF A>=B LED 1
>> 右シフトする(ビット演算) ?A>>1