== nekoboardとnekoboard2の違いについて == [[Image(nekoboard1.jpg,300)]][[Image(nekoboard2.JPG,300)]][[BR]] [https://www.switch-science.com/catalog/1000/ nekoboard]はScratch 1.4のみ対応で、[https://www.switch-science.com/catalog/2700/ nekoboard2]はScratch 1.4と2.0に対応しています。[[BR]] [[BR]] まずnekoboardはArduino互換ボードなのでArduino IDEでファームウェアの書き込みができるようになっています。Arduino互換機のnekoboardはファームウェアを書き込む直前にFT232RLのDTRの信号をLにすることでリセットをかけています。[[BR]] リセットがかかった直後のnekoboardはブートローダが起動してファームウェア(スケッチ)の書き込みが可能になります。[[BR]] この点を踏まえてScratch 1.4でnekoboardを使う際の挙動を書くと次のようになっています。[[BR]] [[BR]] 1. Scratch 1.4では接続したnekoboardのポート番号を手動で選びます。[[BR]] 2. ポートが開くとDTRがONになります。[[BR]] 3. DTRがONになるとnekoboardのリセットがかかり、ブートローダが起動します。[[BR]] 4. しばらくするとブートローダが終了し、ファームウェア本体が起動します。[[BR]] 5. Scratch 1.4からの信号を受信すると、nekoboardがセンサーの値を送り返します。[[BR]] 6. Scratch 1.4上でセンサーの値が読み取れるようになります。[[BR]] ではScratch 2.0でnekoboardを使うとどうなるかを書くと、次のようになります。[[BR]] 1. 拡張機能を追加でPicoBoardを選択します。[[BR]] 2. Scratch 2.0では自動でポート番号を選択します。(一番小さいポート番号が選択されます。)[[BR]] 3. ポートを開いて通信を開始します。ポートが開くとDTRがONになります。[[BR]] 4. DTRがONになるとnekoboardのリセットがかかり、ブートローダが起動します。[[BR]] 5. ブートローダが実行中にScratch 2.0からの信号が送られてきます。[[BR]] 6. ブートローダ実行中にはセンサーの値を返信できません。[[BR]] 7. 時間内にセンサーの値が送られてこないとScratch 2.0は一度ポートを閉じて、再び接続を試みます。[[BR]] 8. 再びnekoboardにリセットがかかり、ブートローダが起動します。[[BR]] 9. 以下繰り返しでリセットがかかってしまい、ファームウェア本体が起動しません。[[BR]] [[BR]] この問題を解決するために、nekoboard2ではFT231XSのDTRの信号をリセット線から外してしまいました。[[BR]] このことによりArduino互換機ではなくなってしまいました。[[BR]] [[BR]] (nekoboardでもブートローダ無しのファームウェアを書き込めばScratch 2.0対応できると思いますが、この場合もArduinoとしてファームウェアの書換ができない事には変わりありません。)[[BR]] == 書き込まれているファームウェア == nekoboard2はArduino互換機ではありませんが、書き込まれているファームウェアはnekoboardのものをほぼそのまま使用しています。[[BR]] つまりブートローダは書き込まれたままになっていますので、Arduino IDEでコンパイルが終わった直後にうまくリセットをかけることができればArduino IDEでファームウェアを書き換えることも可能です。[[BR]] (J3と書かれたパッドのRESETとGNDをショートさせればリセットがかかります。)[[BR]] nekoboard2に書き込まれている[https://github.com/SWITCHSCIENCE/samplecodes/tree/master/nekoboard2/Arduino/nekoboard2 ファームウェアのスケッチ]です。