目次
前
次
JavaScript復習
15年以上もJavaScriptでプログラムを書いていないので
どんな感じだったのかと、手持ちの入門書を読み直し。
オブジェクト指向のスクリプト言語なので、数学に関する
メソッドはオブジェクトのインスタンスメソッドとして
記述する必要があります。
IchigoLatteの場合、オブジェクト指向を意識させない
スクリプトを採用して、BASICに近い記述になります。
JavaScriptは、オブジェクト名とメソッドを「.」で
接続します。IchigoLatteではオブジェクト名latte
を前置する必要はありません。
用意されているメソッドは、以下。
log(v, ...) : print v to screen
led(v) : led(1) = turn on LED , led(0) = turn off LED
btn() : return button status with logical value
gpin(v) : return IN status with logical value
cls() : clear screen
lc(x, y) : locate cursor in (x,y)
sleep(v) : sleep in v(msec)
inkey() : return keyboard code
rnd(v) : return random number (0 .. v-1)
chr(v) : return char as string of v
sin8(v) : return sin value by integer(x256) with degree format
tick() : return msec that from system booted
ana(p) : return analog value
scr(x, y) : return char value of the screen at (x,y)
pwm(p,d) : output pwm signal on port p with duration d(usec)
pwmt(t) : set pwm cycle to t(usec).[DEFAULT:20,000]
video(v) : switch ntsc signal with v=0(off) v=1(on) or v=2(invert mode)
setTout(f,d) : set a function f to be invoked at d(msec) later
setTout() : unset function about Tout
setKprs(f) : set a function f to be invoked at key pressed
setKprs() : unset function about Kprs
setBprs(f) : set a function f to be invoked at btn pressed/unpressed // bind
setBprs() : unset function about Bprs
input() : return a number that user inputted
bps(v) : set uart bps to v [DEFAULT:115,200]
uart(v, ...) : write v to uart
uart() : return a byte that uart received
i2cw(a, ...) : write to i2c device that is addressed a
i2cr(a, ...) : read from i2c device that is addressed a
exit(v) : exit code
lrun(n) : load from eeprom '@n' to file '.' and runs it
env(n) : set a environment variable to n
env() : get the environment variable
mem(v) : if v is number, a byte will return on the address v
mem("f") : fonts data address
mem(".") : file address
mem("s") : screen RAM address
mem(" ") : free RAM address
mem(a,v,...) : write v to memory of address a
mem() : call ARM Thumb code located in free RAM with the R0 value will return
ver() : get IchigoLatte version number
beep(h, d) : sounds beep for h(hz) in duration d(msec)
scroll(0,r) : scroll (UP) , r=0 normal / r=1 rotate
scroll(1,r) : scroll (RIGHT) , r=0 normal / r=1 rotate
scroll(2,r) : scroll (LEFT) , r=0 normal / r=1 rotate
scroll(3,r) : scroll (DOWN) , r=0 normal / r=1 rotate
配列も利用できますが、1次元だけ。
次のようにnewでメモリを確保して使います。
var a = new Array(10) ;
配列のサイズは、プロパティのlengthで参照できます。
プロパティは、オブジェクトが所有している値になる
ので、 a.length で参照。
算術と論理演算に関しては、ブラウザで使えるJavaScriptと
異なるところがあるので、目を通しておきます。
算術演算では、「++」や「--」のような演算子を重ねる記述が
使えません。BASICと同じように、代入の「=」の左辺と右辺に
変数名を書いて対応。
まとめてみます。
- v++ -> v = v + 1
- v-- -> v = v - 1
- ++v -> v = v + 1
- --v -> v = v - 1
- v += x -> v = v + x
- v -= x -> v = v - x
- v *= x -> v = v * x
- v /= x -> v = v / x
- v %= x -> v = v % x
条件式で使える「&&」「||」は、それぞれ論理積と論理和の
演算子である「*」、「|」を使います。
- if ( x == XVAL && y == YVAL ) -> if ( (x == XVAL) * (y == YVAL) )
- if ( x == XVAL || y == YVAL ) -> if ( (x == XVAL) | (y == YVAL) )
算術演算に関わるオブジェクトは、Mathを前において
たとえばcosやsinをつけますが、MathはIchigoLatteの
中に用意されているので、オブジェクト指定は不要と
考えています。
よく利用すると思われるsinは、sin8に角度を
degreeで与えて対応。
通常、三角関数の角度指定にはradianを利用
しますが、degreeを利用。radianでは、πを
意識しないと使えないので、πを組み入れる
作業が必要。これを省いていると考えられます。
sinの相棒であるcosは、位相が90度ずれている
ことを利用し、値を取り出せばよいと判断して
いるよう。
degreeでみれば、90度の位相差で考えます。
cos(0) =sin(90)
cos(90)=sin(0)
sinからcosの値を引き出すには、sinの角度から
90を減算するか、270を加算して対応。
360を1周期としているので、sinの0から359を
cosでは、sinのパラメータとして-90から269を
採用すれば等価な値を取得できると考えます。
目次
前
次