LoginSignup
0
0

More than 5 years have passed since last update.

やっとこさ、Lチカにたどり着いたのでチカチカしてみましょう。手元の Raspberry Pi 3 であれこれやろうと思っていたのですが、キュレーションメディアっぽくひと様のふんどしで相撲をとります。

World Map of Makers - Hackster.io

これは世界地図を表示してLチカする例なのですが、最初のところは入門編なので、良い教材になります。

配線例

慣れてくると回路図を使うのですが、こんな風に実体の配線図を使うと便利です。ジャンプワイヤーの色は、赤と青を使っていますが、何の色を使っても構いません。通例としては、マイナス極(GND)のほうを寒色(黒とか青とか緑とか)を使って、プラス極のほうを暖色(赤とかオレンジとか)を使うことが多いです。

002.jpg

ここでは、

  • 赤色のLED
  • 560Ωの抵抗

を付けています。実は、この抵抗値もおおざっぱでよくて(輝度を調節するためには正確に計算する必要がありますが)、100Ωから1kΩ程度のものを挟んでおけば、ひとまずLチカだけはできます。場合によっては、抵抗なしで直結でもokです。抵抗がない場合は、長く点灯するとLEDが壊れてしまうので注意してください。

コードを見る

このサンプルは https://github.com/ms-iot/adafruitsample/tree/master/Lesson_201 にあります。 adafruitsample/Lesson_201/FullSolution/MainPage.xaml.cs を見ていく...のが筋なのですが、結構ややこしいので前回のサンプルを元に解説をします。

https://github.com/ms-iot/samples/tree/develop/HelloBlinky/CS

参照設定で「Windows IoT Extension SDK」を追加します。

001.jpg

先頭で、Windows.Devices.Gpio を追加します。GpioController クラスが使えるようになります。

using Windows.Devices.Gpio;

初期値です。LED のピン(LED_PIN)は5番になっています。

private const int LED_PIN = 5;
private GpioPin pin;
private GpioPinValue pinValue;
private DispatcherTimer timer;

起動時に GPIO の初期設定をします。

private void InitGPIO()
{
    var gpio = GpioController.GetDefault();

    // Show an error if there is no GPIO controller
    if (gpio == null)
    {
        pin = null;
        GpioStatus.Text = "There is no GPIO controller on this device.";
        return;
    }

    pin = gpio.OpenPin(LED_PIN);
    pinValue = GpioPinValue.High;
    pin.Write(pinValue);
    pin.SetDriveMode(GpioPinDriveMode.Output);

    GpioStatus.Text = "GPIO pin initialized correctly.";

}
  1. GpioController.GetDefault で gpio を取得
  2. gpio.OpenPin で指定のピン LED_PIN(5) をオープンします。
  3. pin.Write で High に初期化
  4. pin.SetDriveMode で出力モードへ

Low で電流が流れて、High で止まります。Low で LED の明かりがついて、High で消えるということですね。

タイマーループで呼び出されるのが、Timer_Tick メソッドで、チカチカさせる部分です。

private void Timer_Tick(object sender, object e)
{
    if (pinValue == GpioPinValue.High)
    {
        pinValue = GpioPinValue.Low;
        pin.Write(pinValue);
        LED.Fill = redBrush;
    }
    else
    {
        pinValue = GpioPinValue.High;
        pin.Write(pinValue);
        LED.Fill = grayBrush;
    }
}

ピンの状態を pinValue で保持しているので、これを見て Low と High を切り替えます。

こんな仕組みで Windows IoT Core の Lチカができるようになります。

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