Node.jsでフルカラーLEDを制御して見ます。
参考サイト
- https://github.com/kosamari/IoT-Boilerplate
Boilerplate to create Node.js IoT system with Arduino and Socket.io
- https://html5experts.jp/girlie_mac/17684/
Node.jsとArduinoでスマートデバイスのプロトタイプをしてみよう
概念図

IoT-Boilerplateより引用
準備
- 配線
- ソースコードのダウンロードと展開 (Linux, mac OSX)
- https://github.com/kimio-kosaka/IoT-FullColor-LED からソースをダウロードし展開します。
- 展開後の処理は「Node.jsでIoT(Internet of Things) Lチカ」と同様です。
- Arduino UNOにStandardFirmataの書き込み。
「Node.jsでIoT(Internet of Things) Lチカ」と同様です。
実行
「Node.jsでIoT(Internet of Things) Lチカ」と同様に実行します。
R,G,Bのスライダーを動かせばリアルタイムにフルカラーLEDの発色を変化させることができます。
動作
controller.html
次のhtmlスクリプトによりスライダーが表示されます。
<form action="javascript">
R : <input type="range" value="0" max="255" min="0" step="1" oninput=" led_r(this.value) ;" /> <span id="id_range_val_r">0</span>
<br />
ー略ー
</form>
- スライダーの値が変化した時oninputイベントでfunction led_r を起動します
- 引数this.valueには現在のスライダー値が入ります。
- 注意)Internet Explorer等は oninputに対応していません。そのようなwebブラウザを使うときはoninputをonchangeと書き換える必要があります。
function led_r
function led_r(data){
var led = document.getElementById('id_range_val_r');
led.innerHTML=data;
r = data;
send_rgb();
}
- this.valueはdataに引き渡されます。
- その値はスライダーの右に表示される値となります。
- グローバル変数rにdataを保存して
- funtion send_rgb を呼び出します
function send_rgb
function send_rgb(){
socket.emit('rgb',{r:r, g:g, b:b});
}
メッセージ’ rgb’ とグローバル変数r,g,bの値をserver.jsに送ります。
server.js
socket.on('rgb', function(data) {
socket.broadcast.emit('rgb', data);
});
rgbメッセージはclient.jsに送られます。
clien.js
socket.on('rgb', function(data){
rgb_led.color({red:data.r, green:data.g, blue:data.b });
});
rgbメッセージを受信すると,フルカラーLED制御ハンドラによr,g,b値がFirmataプロトコルによりArduinoに送信されます。
Arduino
StandardFirmataによってフルカラーLEDのRGBピンがPWM制御されLEDが発色します。