今回は第一回(初心者目線でRaspberry Pi+WindowsでIoT:001)で組んだLチカサンプルをアプリ側のボタンではなく、タクトスイッチというボタン付きの機器を押したら、LEDが付くように変更しています。
これで「ポチットな」と動作を制御することができます。
タクトスイッチはプラス側、マイナス側はありませんが、電気の流れを意識する必要はあるので、刺し方には注意が必要です。
毎度ながらAmazonで揃いをセットで購入したので、型番などはわかりません。検索した感じだとオーソドックスはタクトスイッチの形状のようです。
向きについてですが、言葉では上手く説明できないので、画像で紹介。
(見やすいように一旦機器から外したので、抵抗とLEDのラインとずれてしまっています・・・)
配線は、基本的に第一回のコードの間にスイッチを挟むだけなのですが、スイッチがそのままだとマスを必要とするので、ブレッドボードの中央を挟んで配置します。
注意するのは、下画像の横並びでいう、抵抗からスイッチに繋がる列と、スイッチからLEDのプラスに繋がる列が一列ずれていることです。同じ列だと常時通電し、列を変えることでスイッチのオンオフによる制御ができるようになります。あーなるほど、だから4つピンがあるのかと理解できると思います。
Raspberry Pi 2側の3.3V電圧からスタートし(画像右下)、ブレッドボードのプラス→抵抗(これは何オームでも良さそう)→スイッチの画面手前右側のピン→スイッチの画面奥左側のピンからLEDのプラス、LEDのマイナスからブレッドボードのマイナスに、ブレッドボードのマイナスからRaspberry Pi 2のGPIO5に接続します。
プログラムコードは以下。ボタンイベントではなく、初期化時に常に通電するように設定するだけです。
public sealed partial class MainPage : Page
{
/**
* GPIOピン
*/
private GpioPin pin;
private GpioPinValue currentValue = GpioPinValue.High;
public MainPage()
{
this.InitializeComponent();
var gpio = GpioController.GetDefault();
if (gpio == null)
{
pin = null;
return;
}
// GPIOの5番を取得
pin = gpio.OpenPin(5);
// GPIOピンの値をHighに設定(HighとLowの二種類あります。Highで消灯、Lowで点灯します)
// 今回はスイッチで制御するので常にオンにして点灯しておく
pin.Write(GpioPinValue.Low);
pin.SetDriveMode(GpioPinDriveMode.Output);
}
}
これでスイッチを押すことでLEDをつけたり消したりできます。
この配置で、スイッチを押さないでもLEDが付いている場合は、先に書いた通り、抵抗→スイッチ→LEDの列が同じ可能性があります。
Please give us your valuable comment