LoginSignup
1
1

More than 5 years have passed since last update.

Kinoma Create: PWM を試すの巻

Last updated at Posted at 2015-02-09

PWM制御を試してみました。
PWMのサンプルプログラムというと、以下のページにサンプルがあります。このサンプルでは、アノードコモンLEDを使っています。
http://kinoma.com/create/samples/pwm-tri-color-led/
手元にあったのが、カソードコモンLEDだったので、ちょっと変更が必要になりました。

動作としては、スライダーのつまみが左にあるときに光らない、右にあるときに光るようにしたいのです。

アノードコモンの場合、アノードは HIGH(=1) なので 光らない時 HIGH(=1)である必要があり、
つまみが右に行くにつれ、LOW(=0)に近づいていく設定にします。
スライダーのつまみが左から右にいくにつれ、スライダーの値が 0 から 1 まで変化するので、ちょうど逆向きになります。

カソードコモンの場合には、この逆でスライダーの値をそのまま LED の出力に入れればいいことになります。楽チン。

まず、初期値を変更します。anode については丸無視です。これについては後ほど。

device/led.js(初期値の変更)
exports.pins = {
    red: { type: "PWM", value: 1 },
    green: { type: "PWM", value: 1  },
    blue: { type: "PWM", value: 1  },
    anode: { type: "Digital", direction: "output", value: 1  } 
};
// 初期値を全て0にする ---> 
exports.pins = {
    red: { type: "PWM", value: 0 },
    green: { type: "PWM", value: 0  },
    blue: { type: "PWM", value: 0  },
    anode: { type: "Digital", direction: "output", value: 1  } 
};

そして、スライダーで値が変化した時に呼ばれるであろうところの挙動を変えます。

device/led.js
exports.write = function( parameters ) {
    switch( parameters.color ){
        case( "red" ):
            this.red.write( 1 - parameters.value );
            return;
        case( "green" ):
            this.green.write( 1 - parameters.value );
            return;
        case( "blue" ):
            this.blue.write( 1 - parameters.value );
            return;
    }
}
// スライダーのつまみの値をそのまま入れる --->
exports.write = function( parameters ) {
    switch( parameters.color ){
        case( "red" ):
            this.red.write( parameters.value );
            return;
        case( "green" ):
            this.green.write( parameters.value );
            return;
        case( "blue" ):
            this.blue.write( parameters.value );
            return;
    }
}

(simulator/led.xmlのところにも、同じような式があるのですが、こちらは名前の通り simulatorを動作させた時に動くコードのようです)

配線ですが、KinomaCreateの後ろのピンのPin28 を赤、Pin30を緑、Pin34を青につなぎます。
前のピンでは、PWM 制御はできないようなのね。ちょっと残念。
そして、カソードをPin1 の GND につなぎます。
ですので、プログラム中の anode 設定は全く意味をなさなくなります。
(そもそも直接 3.3Vなり5Vなりにつないでおけばいいのだと思いますが。。。)

src/main.xml
        application.invoke( new MessageWithObject( "pins:configure", {
            led: {
                require: "led",
                pins: {
                    red: { pin: 28 },
                    green: { pin: 30 },
                    blue: { pin: 34 }, 
                    anode: { pin: 24 }
                }
            }
        }));

kobito.1423484681.028846.png

こうすると、ちゃんと http://kinoma.com/create/samples/pwm-tri-color-led/ のサンプルの動画と同じように動くようになりました。

kobito.1423485569.611147.png

そろそろ、それらしいところを変更するだけじゃなく、ちゃんと Kinoma Create のフレームワーク?(KPR:Kinoma Platform Runtime)を理解したいところです。

'exports' とかいうあたりは、ここだな。
http://www.kinoma.com/develop/create/pins/

1
1
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
1
1