赤外線リモコン

RXコントローラーを使ってみるぞ!(5)赤外線リモコンについて3

前回、受信に関して調べましたが、なんて〜ことないんですが、送信に関してもとりあえずhappy01paper

●赤外線LEDとケース

赤外線のLEDは以前秋月で買った安物(もっと少ないパックも、もっといい質のもあります)

あと、普通のLEDを2種類、100均で買ってケースとして使うことに、少しは照射範囲が広がるでしょうかね???

20120219152015 20120219152023

20120219155448

こっちは、元々あったLEDを基板から外して、赤外線LEDに変えて、ケースの後ろに孔を開けて、ケーブルを出しましたhappy01

20120219154806

自転車のライトの方のケースは、ハサミで切れる基板を使って、元の基板と同じ大きさに切って、同じ位置に赤外線LEDが来るように取り付けましたhappy01

●スケッチ

今回は、送信したデータをRXコントローラーやロボゼロが認識することを確かめるだけのつもりだったので、特別なものではなく、以前も使わさせていただいたOkiraku Programmingさんの「Arduinoで学習リモコン」から抽出した「InfraRedReceiver.pde」(ここのダウンロードでダウンロードできるものの中にある)を使いましたhappy01

いちおう、このスケッチは、

  • 赤外線LEDを13番に繋げる(抵抗はLED抵抗値計算のページとかで計算して合ったものを入れる)
  • データは、10us単位でHiとLowの時間をスペースで区切って、最後に0と書いたものをシリアルモニターで送信する。
    例 218031 856 410 62 41 64 38 62 147 62...

20120219161106

●登録、送信してみる

RXコントローラ、HSWB-4Fが認識するデータとして、

例えば、

  • リーター部分:900 400
  • 理論0:60 40
  • 理論1:60 150

で認識するので、Arduino シリアルモニターに

  • 200000 900 400 60 40 60 150 .... 60 40 0

と、最低16ビット分書いておき、

  1. RXコントローラで「リモコン登録」
  2. シリアルモニターで「Send」

で、登録できました。そして、当たり前ですが、このデータで認識してロボゼロが動くことも確認しましたhappy01

●今後、どんなことを考えてる?

無線ポートを使うには、DSWを切り替えたりとか、まじ、そんな使い方、うざい、ださい、んですよねcoldsweats01

なんで無線ポートを使わないで、赤外線通信のような環境に影響されない通信をできるようにしたいと思い、

この前、bluetooth>TTL>RS232>PCポートで、プログラムを転送したり、実行させたりとやってみました。

とりあえず、PCポートからコントロールする方法は、うまく行くことがわかったので、今度は、

  • Bluetooth>Arduino>赤外線LED

のモジュールを作って、

赤外線LEDを赤外線受信機の目の前に設置する形にすれば、環境に影響されない赤外線通信コントロールを行うってことを考えていますhappy01paper

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

RXコントローラーを使ってみるぞ!(4)赤外線リモコンについて2

前回、RXコントローラーを使って、いろいろリモコンを認識させてみましたが、RXコントローラーは、どんなデータが読み取れて、どんなデータが読み取れないのかを関連づけする為に、Arduino+赤外線受信モジュール(PL-IRM0101-3)でリモコンのデータをチェックしてみましたhappy01

●スケッチ

以前にやった時のArduinoのスケッチを、さらにネット上のサンプルを組み合わせて、見やすいように

  • H/Lのデータ
  • Bitデータ
  • Hexデータ

で表示できるようにしました。※ただし適当な部分も多々含まれていますし、赤外線信号もいろいろなパターンありますので、すべてに対応しているわけではありませんので、その都度、数値などを書き換える必要があります。以下コピペして使ってみて下さい。

int ir_in = 8;//IR受信機シグナル
int state=0;
int tunit=10;

int last = 0;
unsigned long us = micros();

#define datanum 512
int bitData[datanum];
int nnn=0;
double bitDataH=0,bitDataL=0;
double ratio=2;

// セットアップ
void setup() {
  Serial.begin(57600);    // シリアル通信速度の設定
  pinMode(ir_in, INPUT);  // 入出力ピンの設定
}

void loop() {
  unsigned int val;
  unsigned int cnt = 0;

  // Wait for incoming IR signal
  while ((val = digitalRead(ir_in)) == last) {  // パルスが切り替わるまで待機
    if (++cnt >= 30000) {  // 30000回ループで信号が終了したとみなす
      if (cnt == 30000)  {
        Serial.print("L");
        Serial.print("----");
        Serial.print(")\n");//ストップやリピートの場合は、改行する
        printBitData();//binary, Hex表示
        Serial.print("\n");
      }
      cnt = 30000;
    }
  }
 
  unsigned long us2 = micros();
  unsigned long us3=us2-us;//時間
  if(state==1 && val==LOW && us3>10000) {//ストップ
    state=0;
    Serial.print("L");
    Serial.print(us3/tunit, DEC);
    Serial.print(")\n");//ストップやリピートの場合は、改行する
    printBitData();//binary, Hex表示
  }
  //if(status==0 && val==HIGH && us3>5000) status=1;//リーダーを区別する
  if(state==0 && val==HIGH) state=1;//リーダーを無視する
  if(state==1) {//受信中
    if(val==HIGH) {//Hiの時
      bitDataH=0;
      if(us3<3400) bitDataH=us3;//Hiの時間を記録、リーダーなら無視
      Serial.print("(H");//Hiです
      Serial.print(us3/tunit, DEC); //赤外線のON/OFFが続いた時間を tunit us単位で送信
      Serial.print("/");
    } else {
      bitDataL=0;
      if(us3<3400) bitDataL=us3;//Lowの時間を記録
      if(bitDataH>0 && bitDataL>0) {//HiもLowもデータありなら
        //if(bitDataL/bitDataH>ratio || bitDataH/bitDataL>ratio) bitData[nnn]=1;//bitオン
        if(bitDataL>1000) bitData[nnn]=1;//bitオン
        else bitData[nnn]=0;//オフ
        nnn=nnn+1;//カウンター
        if(nnn>=datanum) nnn=datanum-1;//バッファー越えの対処
      }
      bitDataH=0;
      bitDataL=0;
      Serial.print("L");//Lowです
      Serial.print(us3/tunit, DEC); //赤外線のON/OFFが続いた時間を tunit us単位で送信
      Serial.print(")");
    }
  }
  last = val;
  us = us2;
}

//binaryで表示
void printBitData(void) {
    int i;
    if(nnn>0) {
      for(i=0; i<nnn; i++) {
        Serial.print(bitData[i],DEC);
        if(i%8==7) Serial.print(" ");
      }
      Serial.print("\n");
      DspData(nnn,bitData);//Hexで表示
      Serial.print("\n");
      nnn=0;
    }
}

//Hexで表示
void DspData(int num,int *data)
{
     int i , j , x , dt ;
      x = num / 8 ;
      // ビット文字列データから数値に変換する
      for (j=0 ; j < x ; j++) {
           dt = 0 ;
           for (i=0 ; i < 8 ; i++) {
                if (*data++ == 1) bitSet(dt,i) ;
           }
           Serial.print(dt,HEX);    // HEX(16進数)で表示
           Serial.print("H ") ;
      }
}

●配線

20120213233507

●取得データ

シリアルモニターで、こんな感じにみれます。
Arduinoscreensnapz003_2

  • (H77/L168)(H38/L205) ... HとLの時間(10us単位)
  • 11100010 00000100 ... (1)のH/Lをビットで表したもの
  • 47H 20H ... (2)を16進数で表したもの(※ビットは左から並べる)

という感じに、データをみることができ分かり易いです。ただし、ビットの決め方は決めうちなので、例えばHの方が長いと1のソニーのリモコンの場合とか、リモコンごとにスケッチを書き換える必要があるかと思います。

●RXコントローラー(HSWB-4F)との対応

さて、上記の値は、RXコントローラー(HSWB-4F)では、どの様に読み取っているかというと

  • 18208 -1

これは

  • V130=18208
  • V131=-1

です。これは16進数で

  • 0247H FFFFH

となっていることからわかるように、V130の方は、エンディアンがリトルで表されてるので逆にすれば、上記の47H 20Hと同じですねsign01で、V131の方は、リピートが来ちゃうとFFFFとなるのかな?V131が-1以外の値を示すリモコンがないので正確なところは不明です。

で、いろいろなリモコンのデータを見てみて、RXコントローラー(HSWB-4F)が読み取れないデータは

  • Hの方が長いデータ
  • 1のLが1000us以下のデータ
  • 16ビットより短いデータ

などがありましたhappy01

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

RXコントローラーを使ってみるぞ!(3)赤外線リモコンについて

(1)と(2)とロボゼロの冊子のロボット・ラボの内容をやってみましたが、今回は「RXコントローラー for Macを作るぞ!」で作っているXcontrollerに赤外線リモコン関連の機能を付ける為に、RXコントローラーを使って、その辺りやってみましたhappy01

one赤外線リモコン登録の手順
赤外線関連の操作はポーズエディタの右側にあります。
Parallels_desktopscreensnapz039_2

  1. リモコン受信:ボタンをクリックした後、リモコンのボタンを押してみます。うまく認識されれば、通信モニター欄にV130,V131の値が表示されます。※うまく認識されないとタイムアウトになるまでハングアップに近い状況になります。※この操作は単にリモコンの送信している値の確認のように思います。この操作はある意味必要ありません。
  2. リモコン登録:FileNoリストを選択した後、リモコン登録ボタンをクリックし、登録させたいリモコンボタンを押します。うまく行けばV130とV131の値がリストに表示されます。※FileNoを選択しないまま、リモコン登録ボタンをクリックすると、ハングアップします。
  3. 2の操作を登録したいFileNoに対して行います。
  4. リモコン初期化:もし2の操作を間違えたなら、この操作で選択したリストが消去できます。
  5. リモコン書込み:2の登録が全部済んだら、このボタンで、ロボゼロのmicroSDにデータを書込みます。※03IRLINK.TXT
  6. リモコン全初期化:ボタン名と通り、FileNoリストが初期化されます。

という感じでリモコンの登録はできるようですhappy01scissors

いちおう、赤外線通信でロボゼロが動くことが確認できましたhappy01paper

two赤外線リモコンに関して

まだロボゼロ用のリモコンが来てないので、Xcontrollerへの赤外線の対応はまだ先かなぁ?と思っていましたが、どうも汎用の赤外線リモコンが使えるようだったので、自宅にあるリモコンを試してみましたが、うまく認識しなかったので、

23社対応の

  • 多社対応のテレビリモコン(約1000円)

を買ってきました。

20120211003816

「立てられるテレビリモコン」っていう名前で、これ場所とらなくていいねぇhappy01

メーカのページは、こちら

兎に角、23社対応なら、どれかうまく動くものがあるだろうと、やってみましたよぉrock

下の表がリモコン番号で、電源ボタンを押したまま、以下の表の数値を押すと、そのリモコンになるそうです。

ひとつひとつ試していきました。

なんせ大変なのは対応してないと、タイムアウトするまで2〜3分待たされるんですよね。

下の表で、赤いマーカとオレンジのマーカと黄色のマーカーと、マーカのないものと4種類がありますが、マーカー無しは試してないもの、赤とオレンジがダメだったもの、そして黄色が上手くいったものですscissorsscissorsscissors

いやぁ〜、殆どのリモコンがダメなんじゃんsign03sign03

確かなことではないんですけど、50番以上はダメっぽい感じですねwobbly

でも、兎に角、対応してるリモコンがあって良かったですhappy01
Screensnapz060

ロボゼロの赤外線リモコンもテレビのリモコンのような形で、面白みがないので、赤外線リモコン ヘリコプターが、いろんなのがあるので、ヘリの方はどうでもいいんですが、カッコいいプロポがあれば、それを認識させようかと考えていましたが、上の表のように対応している確立が低いので、折角買っても認識しなさそうなので、現時点では買っていませんhappy01

ということで、リモコンは、学習リモコン機能が付いたものが良さそうですよね。とはいえ、あれこれ欲しい、今日この頃。メモっておきますhappy01

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (4) | トラックバック (0)

「SoftModemインターフェースボード2」を買いました

またまたSoftModemインターフェースボードを買ってしまいましたhappy01paper
今回で3つ目ですが、3つとも形が違います。

  1. SoftModemインターフェースボード
  2. SoftModemインターフェースボードv2(試作)
  3. SoftModemインターフェースボード2

20110529043536 上からv1,v2(試作),v2

SoftModemインターフェースボード2は、左側は切って右側だけを使う予定ですが、その右側切ったとしても、SoftModemインターフェースボードv2(試作)の方が小さいですね。

iPhoneからBT->BTヘッドフォン->Softmodem->Arduino->マイコンコントロールっていうのを計画がなかなか進まないbearing

-------------------------------
Softmodemに関するブログ

ROBOMIC(ブログ)

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村 


| | コメント (0) | トラックバック (0)

SoftModemインターフェースボード で遊んでみる(3)

前回「SoftModemインターフェースボード で遊んでみる(2)」の続きです。2年ちょっと前に、ロボザックの赤外線リモコンのドコモのiアプリ版のRZ1Infraredというのを作ってみましたが、
Safariscreensnapz001

今日は、SoftModemインターフェースボードで、ロボザックの赤外線リモコンを行う為の、iPhone用のアプリを作ってみましたhappy01paper

oneコード

  • SoftModemインターフェースボードのページで、「SoftModemTerminal iPhoneアプリ」のサンプルプロジェクト SoftModemTerminal-004.zip をダウンロード
  • このページの「iPhoneソースコードの使用方法」に書いてある通りに、必要なことがらを組み込んで、後は自分用にアレンジすればいいかと思います。
  • 私の作ったコードは、そのうち、ダウンロードできるようにするかもしれませんcoldsweats01

twoアイコンは、以前作ったiアプリは、ロボザックが携帯電話を持っていたんですが、その携帯をiPhoneに持ち替えたアイコンにしましたhappy01

Iosscreensnapz002

threeシミュレータのスクショ

Iosscreensnapz001

fouriPhone上での写真
Dsc00268x

sixシミュレータの動画
----------------

----------------
----------------

ROBOMIC

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村 

| | コメント (1) | トラックバック (0)

パソコンで赤外線リモコン(2)

パソコンで赤外線リモコン(1)」で取得したリモコンのデータを送信するためのProcessingのアプリ(図)を作りましたhappy01paper

Screensnapz037_2

one赤外線データの送信用のArduinoのプログラム:受信の時と同じく、Okiraku Programmingさんの「Arduinoで学習リモコン」のページにある受送信のプログラムを、送信部分だけ切り抜いて、少しモディファイしたものを使いました。

下のダウンロードできるファイルの中の「InfraRedSender」です。

  • Processingとのやり取りに邪魔になるので、Serial.printは、すべてコメントアウト(もしくは、削除)
  • void sendSignal()の中を少し改良?
void sendSignal() {
 
for (int cnt = 0; cnt < 512; cnt++) {
   
unsigned long len = data[cnt]*10;  // dataは10us単位でON/OFF時間を記録している
   
if (len == 0) break;      // 0なら終端。
   
int hl=1-(cnt&1); //Mofified
   
unsigned long us=len+micros(); //Mofified
   
do {
      
digitalWrite(ir_out, hl);// cntが偶数なら赤外線ON、奇数なら0のOFFのまま
      
delayMicroseconds(8);  // キャリア周波数38kHzでON/OFFするよう時間調整
      
digitalWrite(ir_out, 0);
      
delayMicroseconds(7);
    }
while (long(us-micros()) > 0); // 送信時間に達するまでループ
  }

}

two赤外線LED
赤外線LEDは、以前、秋月から買って持ってたものを使いました。100個入りで以下のスペックです。

  • VF:1.25V(@20mA)
  • ピーク波長:940nm
  • 半減角:15°
  • 推奨電流:20mA

1.25V@20mAということなんで、とりあえず3つ繋げました。
Dsc00033
で、半減角が15度。資料によると図のような感じだそうで、
Safariscreensnapz031_2
角度を変えると、ほとんど光って見えません。送信時は、赤外線LEDをちゃんと受信機の方に向けないと、うまくデータが届かないようです。
Dsc00032

three赤外線データの送信用のProcessingのプログラム:下のダウンロードできるファイルの中の「RZ1IRRemocon」というのを作りましたhappy01paper

InfraRedSenderは、最初がスペース、最後が0+スペースのデータを受け取って、LEDを点減させる仕組みになっています。前回得たデータを、以下のようにStringのArrayにして、

String[] data={
" ",
" 500 100 50 50 50 100 50 50 ...略... 50 50 0 ",
" 500 100 50 50 50 100 50 50
...略... 100 50 0 ",
" 500 100 50 50 50 100 50 50
...略... 100 50 0 ",
...略...

として、クリックされたボタンの番号に合わせて、

Serial.write(data[btn]);

する仕組みです。

fourroboBASICのプログラム:ロボザックの赤外線リモコン用のプログラムをMR-C3024に転送しておけば、実際にロボザックでテストできるんですが、サクサクとテストできないので、受信した値を第一変数に入れるだけのプログラム(Infrared.bas)を作って、RZ1Basicのコントローラーデータ取得で、確認しましたpaper

  • 取得データは第一変数である「SRAM 0x0140」にセットして「取得開始」させます。
  • RZ1IRRemoconを起動して、ボタンをクリックすれば、サクサクと、受信状況が確認できます。

Rz1irremoconscreensnapz001

fiveMiconoIRDemo:サンプルコードをダウンロードできるようにしましたhappy01paper

各自の責任においてご利用下さい。

ダウンロード

内容:

  • Arduino
    • InfraRedReceiver:リモコンからデータを取得する為のArduinoのコード
    • InfraRedSender:赤外線LEDを点減させて、データを送信する為のArduinoのコード。
  • Processing
    • RZ1IRRemocon:ロボザックの赤外線リモコンのインターフェイスを持つProcessingのコード。Arduinoには、InfraRedSenderのコードを入れておく。
  • roboBASIC
    • Infrared.bas:受信テストの為のコード。第一変数に受信した値が入る様になっている。
  • References
    • 関連資料のリンク

------------------------------------------

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

パソコンで赤外線リモコン(1)

この前、パソコンからArduinoを使ってラジコン送信してロボザックをコントロールできるようにしたので、どうせなので、赤外線リモコンでもロボザックをコントロールできるようにしてみようと思いやってみましたhappy01paper
Rz1basicscreensnapz001

まず、Arduinoの赤外線リモコンの為のプログラミングですが、検索して「Arduinoで学習リモコン」というページを参考させて頂きましたpaper

oneロボザックの赤外線リモコンは、赤外線受信センサーも赤外線リモコンも第36号に付いてきます。その受信センサーを使って、Arduinoと接続しました。

黄色:8番ポート
赤色:5V PWR
黒色:GND

Dsc00028

twoArduinoで学習リモコン」のページに受送信のプログラムがあります。これをそのまま使えばいいんですが、データ取得用と、データ送信用とにプログラムを2つに分けました。

-------------------------------------------------------------------

int ir_in = 8;

int last = 0;
unsigned long us = micros();

// セットアップ
void setup() {
  Serial.begin(57600);    // シリアル通信速度の設定
  pinMode(ir_in, INPUT);  // 入出力ピンの設定
}

void loop() {
  unsigned int val;
  unsigned int cnt = 0;
 
  // Wait for incoming IR signal
  while ((val = digitalRead(ir_in)) == last) {  // パルスが切り替わるまで待機
    if (++cnt >= 30000) {  // 30000回ループで信号が終了したとみなす
      if (cnt == 30000)  {
        Serial.print("¥n");
      }
      cnt = 30000;
    }
  }

  unsigned long us2 = micros();
  Serial.print((us2-us)/10, DEC);   // 赤外線のON/OFFが続いた時間を10us単位で送信
  Serial.print(" ");
  last = val;
  us = us2;
}

-------------------------------------------------------------------

  1. 上記ソースをArduinoに「Upload」
  2. 「Serial Monitor」を表示
    Arduinoscreensnapz005
  3. Baudrateを57600に設定(ソースと合わせる)
    Arduinoscreensnapz004
  4. リモコンのボタンを押すと、「Serial Monitor」上に数値が表示されます。この数値は、ソースのコメントにあるように、赤外線のON/OFFが続いた時間が10us単位で表示されることになります。

three得られたデーターを整理する
生データは例えば、以下の様な数値になっています。
¥n323198 503 96 54 45 55 94 55 45 54 95 54 44 55 44 55 .....

で、最初の数字はデータを受信してない部分なので無視して、その次の数値からがデータになります。

ここで、以前、ロボザックの赤外線リモコンようのiアプリを作っているし、どんなデータが送られているのかは解析済みなんですよねhappy01

  • 5000µs:スタート
  • 500µs (L) 500µs (H):理論0
  • 1000µs (L) 500µs (H)理論
  • 50µs:ストップ

なんで、生データは、
503 96 54 45 55 94... (10us)
=5030 960 540 450 550 940... (1us)
=5000 1000/500 500/500 1000....
=スタート 理論1 理論0 理論1 理論0 ....

ってな感じになりますねrock

ということで、Arduinoで受信した32個のボタンの生データを整理してみました(※50は幅を合わせる為に050と書いてます)。
Miscreensnapz004

というところで、今日の所はここまでhappy01paper

Arduinoのプログラムの「Upload」ボタンは、「Download」という名称の方が正しいのではないのかな???ま、「Upload」の方がなんとなく理解しやすいからいいんだけど。。。

------------------------------------------

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

携帯でコントロール(13)

Rz1infared03_48 ロボザック用の赤外線リモコンを携帯電話でコントロールするiアプリのタイプ3をダウンロードできるようにしました。今回のタイプ3は、ロボザックのラジコンに対応した値を赤外線送信できるようにインターフェイスを作りました。

RZ1Infrared Type3

ダウンロード
Rz1infrared3qr

ボタンの対応

  • プロポのスティックを動かす方向の上下左右に対応するボタンを携帯で押すと、実際プロポから送信される値を同じ数値を赤外線送信します。
  • いちおう、右スティックの右上、左上は、ソフトキーの1と2に対応させてありますが、右スティックの右下、左下は、対応するボタンは用意していません。
  • 左右のスティックに対応するボタンを、右/左同時に押すことはできません。

Parallels_desktopscreensnapz021

プログラム

例として、「無線タッチサウンド.bas」のファイルをRZ1Basicで、「IF RR=」で、検索してみた。赤外線とは異なって、無線の場合は、特別なコマンドなしにデータを書き換えることができるため、RR(第一変数)の判定を何カ所かでRRの値を調べています。
Rz1basicscreensnapz010

RRの条件分岐の前に、REMOCONコマンドを入れればOKです。

WALKMODE:
RR
=REMOCON(1)
IF RR = 2 THEN GOTO STOPWALK
IF RR = 16 THEN GOTO FACS2
IF RR = 32 THEN GOTO BACS2
GOTO WALKCONT

-----------------------------

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

携帯でコントロール(12)

人にお見せできるようなコードではないのですが、RZ1Infrared Type2の方のソースコードをダウンロードできるようにしました。

ダウンロードはこちらからできますpaper

DoJaを使ってやってみたいという方は、携帯でコントロール(10)で書いた必要なものをインストールして、やってみて下さい。

-----------------------------

----------------
にほんブログ村 科学ブログ 
ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

携帯でコントロール(11)

Rz1infared02_48ロボザック用の赤外線リモコンを携帯電話でコントロールするiアプリのタイプ2をダウンロードできるようにしました。バージョン2という訳でなく、先日公開したタイプ1とはインターフェイスが異なっています。

RZ1Infrared Type2

ダウンロード
Rz1infrared2qr

使い方

  • 左上のボタンで以下のように画像が変更します。
    ボタンの番号は、オリジナルのリモコンと同じ番号なります。
  • 右上のボタンでID番号を変更できます。
  • ボタンを押すと、送信されます。

Parallels_desktopscreensnapz011
Parallels_desktopscreensnapz012

キャリアは持ってないのですが、auやSoftbankのものも作ってみようかと思い、少しやってみてますが、DoJaが使いやすいわけではないのですが、DoJaが使いやすく感じるくらい使い難いdown資料もほとんどひっかからないし、簡単ではなさそう。。。

-----------------------------

----------------
にほんブログ村 科学ブログ 
ロボットへ
にほんブログ村

| | コメント (0) | トラックバック (0)

より以前の記事一覧