でばいすの山小屋

デバイスとかクラウドを実験中。IoTのふもとあたりをうろうろ。

PSoC 4 BLE で、Lチカしてみる(4)

PSoC 4 BLE で、Lチカしてみる」の4本目。
LEDの明るさを制御してみます。
今回は、PWMを使います。PWMは、PRoC BLE / EZ-BLE でも使えます。特に EZ-BLEは小さいので、プラモデルなんかに組み込んで、BLE で LEDをコントールとかも出来そうです!

1. プロジェクトの作成

プロジェクト「LED04」を作成します。

2. コンポーネントを配置する

2-1. コンポーネントの配置

Component Catalog から、
・Clock
・PWM
・Digital Output Pin
・Logic Low '0'
を持ってきて、TopDesign.cysch に配置する。

2-2. Clockコンポーネントの設定

f:id:blgkns:20150809235011p:plain:w320

2-3. PWMコンポーネントの設定

f:id:blgkns:20150809235009p:plain:w320

2-4. Digital Output Pinコンポーネントの設定

f:id:blgkns:20150809235010p:plain:w320

2-5. コンポーネントの接続

f:id:blgkns:20150809235012p:plain:w320
コンポーネントの設定後、このように接続します。

2-6. 配線

f:id:blgkns:20150809235013p:plain:w320
LED04.cydwr を開き、LEDを P2[6] につなぐ。
「Generate Application」ボタンを押す

3. コードを書く

Workspace Explorer から main.c を、開く。
コードはこんな感じ。

#include <project.h>

int main()
{
    CyGlobalIntEnable; /* Enable global interrupts. */
    int led_output = 0;

    PWM_Start();

    for(;;)
    {
        PWM_WriteCompare(led_output);
        led_output++;
        
        if(led_output > 255)
            led_output = 0;
        
        CyDelay(5);
    }
}


4. 動作の説明(ざっくり)

PWM_WriteCompare( led_output ) で、LED の点灯時間を設定します。点灯時間は、led_output / 255 となります。led_output が255の時は、ずっとついていて、0なら消灯します。
このプログラムでは、led_output を1ずつ大きくしていって、255 になったら、0 に戻しています。
これで、LEDは、だんだんと明るくなり、明るくなったら、消灯に戻り、また明るくなるというのを繰り返します。

5. 実行

Programボタンを押して、実行。