これは、PSoC Advent Calendar 2019の1日目に突っ込まれた記事です。
Groveのキットを買いました
もう半年以上も前になりますが、スイッチサイエンスさんでSeeed Studioさんが作っている**Grove**のスターターキットを買いました。Arduino準拠のハードウェアなので、きっと手持ちの評価ボードで簡単に使えるだろうという安易な気持ちからでした。
今年の一連の記事は、このスターターキットを**CY8CKIT-042-BLE-A Bluetooth Low Energy Pioneer Kit**で使ってみます。
Groveとは
私が考えるに、**Groveというのは、ゆるいハードウェアの規格です。4ピンのコネクタ形状が決められていて、そこにVCCとGNDと2本の信号線が通ります。2本の信号線にはアナログでもディジタルでも通して使うことができます。2本もあったら、I2CでもUARTでも通せるから十分だよね。
もっと詳しい解説は、Grove**本家にあたってください。
本プロジェクトで目指すゴール
本プロジェクトでは、スターターキットに入っていたLEDを点滅させることです。最初はやっぱり、Lチカですね。
必要なハードウェア
**CY8CKIT-042-BLE-Aには、Arduino準拠コネクタが搭載されています。
一方、スターターキットには、Groveコネクタが満載されたBase Shield V2が入っていました。
これを使えば、CY8CKIT-042-BLE-AでもGrove**が使えるようになります。
あとは、**Grove LEDというボードにLEDを載せてBase Shield V2に接続したら準備完了です。あぁ、このキットには、赤青緑の三色のLEDが入っているけれど、Grove LED**ボードは一つしか入っていないのですね。
ところで、**Base Shield V2**の沢山あるコネクタのどれに接続したらいいんでしょう?
Base Shield V2には、シルク印刷で、それぞれのコネクタがどの信号に接続されるかが分かるようになっています。
例えば、A0と書かれているコネクタには、A0とA1の二つの信号が接続されます。Arduinoの場合、これらの信号はアナログ信号を意味するのですが、PSoCには関係ありません。A0がP3[0]に、A1がP3[1]に電気的に接続されていて、それを何に使うのかはPSoCによって決められます。
**Grove LED**ボードは、A0が制御信号として使われて、A1は使われないようです。このため、PSoCからP3[0]ピンを制御するとLEDが点滅します。
回路図
プロジェクトでまず必要なのは、P3[0]を制御する方法を決める事です。このプロジェクトでは、純粋にソフトウェアで制御を行う事にして、P3[0]にソフトウェア制御可能なGPIO出力を接続します。
端子の割り当てもお忘れなく。
ソフトウェア
全てソフトウェアで制御することに決めたので、ソフトウェアディレイを使ったLチカプログラムに仕立てました。
# include "project.h"
int main(void) {
CyGlobalIntEnable; /* Enable global interrupts. */
for (;;) {
CyDelay(500L);
Pin_LED_Write(!Pin_LED_Read());
}
}
以上でプロジェクトは完了です。ビルドして書き込んだら、Lチカの出来上がりです。
GitHub リポジトリ
関連サイト
32-bit Arm® Cortex®-M0 PSoC® 4
PSoC® 4 BLE (Bluetooth Smart)
スイッチサイエンスのスターターキットのページ
関連記事
CY8CKIT-042-BLE-A でLチカ
CY8CKIT-042-BLE-A でLCD表示
CY8CKIT-042-BLE-A でバックライト点灯
CY8CKIT-042-BLE-A で気圧を表示
CY8CKIT-042-BLE-A で気圧を送信