SPI、DAC、viコピペ、16ファイル、表示拡大、数々の新機能を搭載し「IchigoLatte typeR 20211006」リリース!

新しい IchigoLatte typeR ファームウェア リリース、目玉はこちら。

  • SPI out
  • DAC
  • 画面表示拡大
  • コピー&ペースト
  • 16ファイル
  • USB&PS2キーボード

たとえば、

SPIデバイスもこの通り、楽しく演出。

// 8 Digit SPI

var C=new Array(10);{
 C[0]=0xc0; C[1]=0xf9;
 C[2]=0xa4; C[3]=0xb0;
 C[4]=0x99; C[5]=0x92;
 C[6]=0x82; C[7]=0xf8;
 C[8]=0x80; C[9]=0x90;
 C[10]=0xff;
}

var N=80000000;
var S=1000;


video(0);
spim(0);

var d=new Array(8);
var t0=tick();
var m=8;

while(!inkey() * m){
 if(S<tick()-t0){
  m=m-1;
  t0=tick();
 }

 var num=N;
 var i=8;
 while(m<i){
  i=i-1;
  if(num) d[i]=num%10;
  else    {m=0;d[i]=10;}
  num=num/10;
 }

 i=m;
 while(i){
  i=i-1;
  d[i]=rnd(10);
 }

 out(0);

 i=8;
 while(i){
  i=i-1;
  var dot=0x80*((8-i)%3==1);
  dot=dot*(d[i]!=10);
  spi(C[d[i]]+dot);
 }

 out(1);
 sleep(66);
}

spim(-1);
video(1);

ソースコードは JS-like な MINIScript でこんな ↑ 感じ。

// SpiLED8 module
function SpiLED8(){

 var d=new Array();{
  d[10]=0xc0; d[11]=0xf9;
  d[12]=0xa4; d[13]=0xb0;
  d[14]=0x99; d[15]=0x92;
  d[16]=0x82; d[17]=0xf8;
  d[18]=0x80; d[19]=0x90;
  d[20]=0xff;
 }
 this.d=d;

 this.dot=0;

 this.show=function(){
  var dt=0x80*this.dot;
  video(0); spim(0);out(0);

  spi(this.d[10+this.d[7]]);
  spi(this.d[10+this.d[6]]);
  spi(this.d[10+this.d[5]]);
  spi(this.d[10+this.d[4]]
          +dt*(this.d[4]!=10));
  spi(this.d[10+this.d[3]]);
  spi(this.d[10+this.d[2]]);
  spi(this.d[10+this.d[1]]
          +dt*(this.d[1]!=10));
  spi(this.d[10+this.d[0]]);

  out(1);spim(-1); video(1);
 };

}
// 8 Digit SPI by module
include(2);

var o=new SpiLED8();
o.dot=1;

var N=3330000;
var S=1000;


var t0=tick();
var m=8;

while(!inkey() * m){
 if(S<tick()-t0){
  m=m-1;
  t0=tick();
  beep(440);
 }

 var num=N;
 var i=8;
 while(m<i){
  i=i-1;
  if(num) o.d[i]=num%10;
  else    {m=0;o.d[i]=10;}
  num=num/10;
 }

 i=m;
 while(i){
  i=i-1;
  o.d[i]=rnd(10);
 }

 o.show();

 if(m==0) beep(587*2,666);

 sleep(66);
}

IchigoLatte typeR の JS は include(...) 機能に対応しているので、SpiLED8オブジェクトを別モジュール(ここでは2番)にしておく、こんな ↑ やり方も可能。

      max length of an array:
        256
      number of arrays that can be created:
        4
      max number of members of an object:
        16
      number of objects that can be created:
        64

LPC1114 の LatteJS に比べて、仕様も拡大、なんとオブジェクトは同時に64個も生成可能!これなら面白いゲームつくれちゃうかも!?

DACは、INポート2,3 で可能。

\ DAC sin,cos @FORTH
0

BEGIN
 inkey 0 = WHILE

 2
 OVER      sin8 256 + 8 * 4095 * 4096 /
 dac
 3
 OVER 90 + sin8 256 + 8 * 4095 * 4096 /
 dac

 1 +
REPEAT

こんなFORTH-likeなコードをかけば、

出力電圧はsinとcosの波形に! 距離センサーや湿り気センサー、ジョイスティックのようなアナログ出力のデバイス側になることもできそう。もちろん JS-likeにもRuby-likeにもPython-likeにもかける。

lash には video コマンドが追加され、IchigoJam BASIC のように画面表示を拡大可能。

なんと、vi には コピペ が導入されました。

セーブできるファイル数は 16 に拡大。

USBキーボードに対応しワイヤレスなものも動作、PS2も接続可能。

// Kawakudari JS

var x=15;

cls();

while(!scr(x,5)){

 lc(x,5);        log("O");
 lc(rnd(31),23); log("*");

 sleep(50);

 var k=inkey();
 x=x-(k==28)+(k==29);

 scroll(0);
}

JS-like な MINIScript によるこのようなプログラミングも可能ですが、

# 64bit timer by nuby
def show()
 video(0)
 spim(0)
 out(0)

 l = nl
 spi(l&0xff); l=l>>8
 spi(l&0xff); l=l>>8
 spi(l&0xff); l=l>>8
 spi(l)

 h = nh
 spi(h&0xff); h=h>>8
 spi(h&0xff); h=h>>8
 spi(h&0xff); h=h>>8
 spi(h)

 out(1)
 spim(-1)
 video(1)
end

nh = 0xffffffff
nl = 0xffffffff

while(true)
 show()
 msleep(1000)
 nl=nl-1
 nh=nh-(nl==0xffffffff)
end

↑ このような Ruby-like な Nuby や、

# Hello from nython on digitLED

video(0)
spim(0)

while(not inkey()):
  out(0)
  spi(0xff-0x00)
  spi(0xff-0x00)
  spi(0xff-0x00)
  spi(0xff-0x3F) # O
  spi(0xff-0x38) # L
  spi(0xff-0x38) # L
  spi(0xff-0x79) # E
  spi(0xff-0x76) # H
  out(1)
  msleep(666)
  out(0)
  spi(0xff-0x00)
  spi(0xff-0x00)
  spi(0xff-0x00)
  spi(0xff-0x00)
  spi(0xff-0x00)
  spi(0xff-0x00)
  spi(0xff-0x00)
  spi(0xff-0x00)
  out(1)
  msleep(666)

spim(-1)
video(1)

↑ このような Python-like な Nython でもプログラミングできます、もちろん FORTH-like な TSUMUScript でも!

選べる言語4種類、お好きな言語の IchigoLatte typeR で、楽しいプログラミングライフを!