(DIYvideo応用)NXTのTV出力


▲DIYvideoの使い道を考え中なのですが、ここではSerial adapterとつないでみました。
これで、NXTインテリジェントブロックから直接文字をTV出力できます。


▲回路図です。基板間を3本(Vcc、GND、Rx)つなぐだけです。

▲動作中の様子です。
入力ポート1に接続している光センサの値(0〜100)をTV出力しています。
Serial adapterは入力ポート3につなぎます。
DIYvideoはPB0のジャンパピンをつないでキャラクタモードに設定します。

▲DIYvideoのかわりに、DEYledを接続するとこうなります。

▼NXT側のプログラムです(言語はNXC)。光センサの値をキャラクタコードにして9600bpsで出力します。

//serial tx program(original sensor)
// by takuya matsubara
#include "NXCDefs.h"

#define IN_I2C IN_1
//INPUT PORT(1/2/3/4)
#define I2CWAIT 15

byte writebuf[3];    //send command
byte readbuf[1];    //recv command

void send_onebyte(byte bytedata)
{
  int readcnt = 0;     //sensor to NXT. input bytes

  writebuf[0] = 0x02;   // slave address(SLA)
  writebuf[1] = 0x44;   // command(TX command)
  writebuf[2] = bytedata;
  I2CBytes(IN_I2C, writebuf, readcnt, readbuf);
  Wait(I2CWAIT);     //delay[msec]
}

void put_numx(int tempval)
{
   send_onebyte((tempval / 100)+'0');
   send_onebyte(((tempval / 10)%10)+'0');
   send_onebyte((tempval % 10)+'0');
   send_onebyte('.');
}

task main()
{
  int val=0;

  SetSensorLowspeed (IN_I2C);
  Wait(I2CWAIT);     //delay[msec]

  SetSensorLight(IN_3);

  while(1){
    val = Sensor(IN_3);
    put_numx(val);
    Wait(100);
  }
}