目次

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を  採用すれば等価な値を取得できると考えます。

  • 目次

    inserted by FC2 system