現在、特定の単語を含むツイートがされればp
という指示をArduinoに送り、Arduinoでモータを0.2秒だけ回転させるプログラムを作りたいと思っています。
https://dotstud.io/blog/arduino-nodejs-twitter-connect/
↑こちらの記事を参考にし、#tonpy move
がつぶやかれればp
の信号をArduinoに送りモータを回転させ、#tonpy stop
がつぶやかれればq
の信号をArduinoに送りモータを止める操作はできるようになりました。
しかし、#tonpy stop
のことは一度無視して#tonpy move
という単語を含むつぶやきがあったときその都度p
の指示をArduinoに送る方法がわからず、#tonpy
を含む別のツイートがされるまで永遠にモータが回ってしまいます。
そこで、特定の単語を含むツイートがされたときその都度Arduinoにp
という信号を送るプログラムを書くにはどうすればいいのか教えていただきたいです。
app.js
//----------------------------------------------- // twitterからツイートを取得 //----------------------------------------------- const twitter = require("twitter"); const client = new twitter({ consumer_key: '',//Dev Accountで取得したkeyを書く consumer_secret: '', access_token_key: '', access_token_secret: '', }); let tweetText ='w'; client.stream('statuses/filter', {track:"#tonpy "}, (stream) => { stream.on('data', (tweet) => { tweetText = tweet.text; (~tweetText.indexOf('move')) ? (tweetText = 'p') : (tweetText = 'w'); }); stream.on('error', (error) => { console.error(`Error: ${error.message}`); stream.destroy(); }); }); //----------------------------------------------- // Node.jsからArduinoに送信 //---------------------------------------------- const SerialPort = require('serialport'); const port = new SerialPort('/dev/tty.xxx',{ baudRate: 9600 }); port.on('open', () => { console.log('Serial open.'); setInterval(write, 1000); }); port.on('data', (data) => { console.log(`Data from Arduino: ${data}`); }); const write = () => { console.log(`Input to Arduino: ${tweetText}`); port.write(tweetText, (error) => { if(error) { console.error(`Error: ${error.message}`); } }); }
Arduinoは、p
が入力されたときだけモータが0.2秒だけ回転するようにプログラムを書き込み、シリアルモニタを使った単体のテストでは成功しています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/24 05:06