intel Edisonで何か作ってみよう その4
さてこれまでで、割といい感じにLチカまで持ってこれたかと。
ということで、何かしらセンサーやらボタンやらを組み込んでLチカとか何かをハックしたりとかwebサービスと連携したりとか遊んでみたいと思う。
pushボタンで点灯
hello worldの少し上のレベルかな。
制御すべきハードウェアを二つ増やし、io部分の実装も必要かな。
購入したキットにあるチュートリアルを参考に。
jsに書き換えた
/*jslint node:true, vars:true, bitwise:true, unparam:true */ /*jshint unused:true */ // Leave the above lines for propper jshinting //Type Node.js Here :) var mraa = require('mraa'); console.log('MRAA Version: ' + mraa.getVersion()); var buttonPin = new mraa.Gpio(2), ledPin = new mraa.Gpio(13); var ledState = 0, prev = 0; // setup buttonPin.dir(mraa.DIR_IN); ledPin.dir(mraa.DIR_OUT); // start loop(); function loop() { prev = ledState; ledState = buttonPin.read(); if (prev !== ledState) console.log('current led state ' + (ledState === 1 ? 'HIGH' : 'LOW')); ledPin.write(ledState); setInterval(loop, 1000); }
若干気になったのは、
- consoleの文字列連結に()が必要だったっけ?
- 標準出力に出しすぎるとXDKが無反応になる。
- DIR_OUT_HIGHの値が2である (最初HIGHとLOWの判定に使ったら違った)
- DIR_INにwriteしたり、DIR_OUTにreadしたらどうなるんだろー。
学習メモ
- INPUTとOUTPUTの方向がある。
- GPIOはGeneral purpose ioの略で、一般的なIO目的で利用されるらしい。
- readの返り値は0 or 1
- Arduinoにはloopとかsetupの関数が用意されているっぽいがjsでは自分で実装
- readでその時の状態を読んで、writeで書き出す。