AIナイト2000を作る その2 | 波動砲口形状研究

AIナイト2000を作る その2

AIナイト2000の続きを書こうと思ってもなかなかできない。色々端折って書いてしまおうと思う。

 

まずはキットが喋っている間だけナイト2000のスキャナーが光るようにするための、PCとArduinoを連動について書いておく。

 

基本的にはKODAさんの記事を真似させていただいた。

 

環境づくりがなかなか一仕事だ。

 

まず、Arduinoを動かす環境としてArduinoIDEをインストールする。中華コピー品を使う場合はそれ用のドライバも。

 

次はNode.jsの導入。ネットワークアプリケーションの開発環境だそうだ。何なのかさっぱりわからない。途中で一度チェックマークするところがある。これチェック必須。

 

 

つぎはJonney-fiveのインストール。これも何なのか分からないがJavaScriptでマイコンを動かすためのライブラリだとか。

 

 

こちらを参考に、自分のPCのルートに「Knight」というフォルダを作ってそこにインストールしておいた。

 

ArduinoにStandard Firmataを書きこみ。

こちらも上掲のページを参考にさせていただいた。

 

ところで、最新版のIDEだと書きこみに失敗した。こちらのページで助けられた。

 

 

前回はこれでうまく行ったのだが、今回はexpress、soclet.ioがないと文句を言われる。コマンドプロンプトを出してnode_modulesのフォルダで

npm install -g express

npm install socket.io

とやってモジュールを追加。これでうまくいくかと思ったら今度はWSLがないと言われる。

再びコマンドプロンプトで

wsl --install

と入れるとなにやらインストールされて、ようやく動くようになった。

 

コードを以下に付す。といってもほぼKODAさんのものの引写しなのだが…

 

これを私の場合index.jsという名前でc:\knight/に保存した。

このコードはArduinoをUSBの3番ポートにつないだ時に機能する。違う場合は下記の"COM*"の*を自分がつないでいる番号に直す必要がある。

 

board = new five.Board({ port: "COM3" }),

 

また、実行させたいhtmlは、c:\knight\htdocs内に保存する必要がある。

これは

 

app.use(express.static('htdocs'));

 

この行の設定をそのまま使っているからで、変えたい場合はここを書き換える必要がある。

 

=============================

console.log("Node.jsアプリケーションが起動しました。");
var express = require('express'),
 app = express(),
 http = require('http').Server(app),
 port = 3000,
 io = require('socket.io')(http),
 five = require("johnny-five"),
 board = new five.Board({ port: "COM3" }),
//  const board = new Board({ port: "COM3" }); // Arduino Nanoを接続しているシリアルポート名を指定
 led,
  
server = function(){
 app.use(express.static('htdocs'));
 http.listen(port,function(){
  console.log("Expressサーバーがポート%dで起動しました。モード:%s",port,app.settings.env);
 });
};
 
board.on("ready", function() {
 server();
 led = new five.Led(12),
 io.on('connection', function(socket) {
  socket.on('led', function(data) {
   if (data === true) {
    led.on();   
   } else {
    led.off();
   }
  });
 });
});