3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Intel Edison Breakout board & Node.js】PWMを使ってLEDの明るさを制御

Last updated at Posted at 2015-11-19

作業環境

  • MacBook Air (13-inch, Mid 2012) & Mac OS 10.11
  • Intel Edison Breakout Board & Poky (Yocto Project Reference Destro) 1.7.2

参考サイト

  • 基本的なLチカ
  • PWMの参考プログラム
  • ピンの役割と名前の確認
  • 上記のピンアサインメントを用途別に並び替えたもの

1. Intel XDK IoT Editionを使わずにLEDを点灯させる

以前はIntel XDK IoT Editionを使ってプログラムをしていたが、何故か使えない。
ちょうどよい機会なのでターミナルからプログラムを触ってみる。

まずはサンプルプログラムが格納されているフォルダに移動する。

terminal
cd /usr/share/mraa/examples/javascript

次にプログラムを作成してviで開く。

terminal
vi blink.js

次のプログラムを書き込み、保存してviを終了。

node.js
var mraa = require('mraa'); //require mraa
console.log('MRAA Version: ' + mraa.getVersion()); //write the mraa version to the Intel XDK console

var myOnboardLed = new mraa.Gpio(14);
myOnboardLed.dir(mraa.DIR_OUT); //set the gpio direction to output
var ledState = true; //Boolean to hold the state of LedperiodicActivity(); //call the periodicActivity functionfunction periodicActivity()
{
  myOnboardLed.write(ledState?1:0); //if ledState is true then write a '1' (high) otherwise write a '0' (low)
  ledState = !ledState; //invert the ledState
  setTimeout(periodicActivity,1000); //call the indicated function after 1 second (1000 milliseconds)
}

以下のコマンドでプログラムを実行する。

terminal
node blink.js

Breakout Boardの裏面にLEDを接続する

  • J18-1pin -> LED + (足の長い方)
  • J19-3pin -> LED - (足の短い方)

LEDが1秒おきに点滅する。(動画はプログラム修正前のものでJ18-2pinにつないでいる。)
直接ポートにLEDをつないでしまっているため、LEDの種類によっては電流が足りず光らない場合がある。(今回は赤色のものを使ったが、白色だと点かなかった。)

【Intel Edison Breakout board】Lチカ

プログラムの終了はctrl + z

2. プログラムを変えてPWMでLEDの明るさを変える

別のプログラムを作成してviで開く。

terminal
vi ledpwm.js

次のプログラムを書き込み、保存してviを終了。(viの使い方は他のサイトを参照ください)

node.js
var mraa = require('mraa'); //require mraa
//Initialize PWM on Digital Pin #1 (D1) and enable the pwm pin
var pwm1 = new mraa.Pwm(14);
pwm1.enable(true);

//set the period in microseconds.
pwm1.period_us(2000);
var value = 0.0;

setInterval(function () {
    if (value >= 1.0) {
        value = 0.0;
    }
    value = value + 0.03;
    pwm1.write(value); //Write duty cycle value.
    console.log(pwm1.read());//read current value that is set before.
}, 100);

以下のコマンドでプログラムを実行する。

terminal
node ledpwm.js

Breakout Boardの裏面にLEDを接続する。

  • J18-1pin -> LED + (足の長い方)
  • J19-3pin -> LED - (足の短い方)

LEDが徐々に明るくなると同時にterminalにも数値が出力される。
【Intel Edison Breakout Board】PWMでLED制御

image

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?