arduino:出力基礎:led

はじめに

Arduinoのサンプルプログラムで最も基本的なものに,13ピンのLEDをブリンク(Blink:点灯消灯の繰り返し)を行うものがあります. まずはこの基本的なプログラムから学習してきます.Arduinoをつなぎ,下記Exampleを実行すると,ボード上のLEDが一秒おきに点滅をくりかえます.


int led = 13;
void setup() {                
  pinMode(led, OUTPUT);     // 13番ピンを出力モードに設定
}
void loop() {
  digitalWrite(led, HIGH);  // 13番ピンをHighにしてLEDを点灯
  delay(1000);              // 1秒ここで停止
  digitalWrite(led, LOW);   // 13番ピンをLowにしてLEDを消灯
  delay(1000);              // 1秒ここで停止
}

高機能LEDを使う

近年LED制御でしばしば利用されるモジュールがあります.テープLEDやシリアルLEDなどと呼ばれるもので, マイコン側から電源,GND,制御PINの3つの電極だけで複数のLEDを制御可能なものです.一般的にフルカラーLEDを 制御する場合,PWMピンを3本使うのがマイコンでは一般的ですが,それではたくさんのLEDを制御する場合限界が 生じます.そこでこのような高機能LEDの扱いに慣れておきましょう.ここではWS2812Bと呼ばれるモジュールを複数 利用して実際にLEDを制御してみます.

「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」で表示されるライブラリマネージャの検索窓に「neopixel」と入力すると,いくつかの候補が表示されます.その中のAdafruit Neo Pixelをまずはインストールしてください.

無事にライブラリの追加ができると,ArduinoのExampleにAdafruit_NeoPixelが追加されます.この中にあるsimpleを開いてみます. 下記にsimple Exampleを簡略化したものを記述しておきます.

  • Adafruit Neo Pixel
#include <Adafruit_NeoPixel.h>
#include <avr/power.h>

#define PIN            7
#define NUMPIXELS      16

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 500; // delay for half a second

void setup() {
  pixels.begin(); // This initializes the NeoPixel library.
}

void loop() {
  for(int i=0;i <NUMPIXELS; i++){
    pixels.setPixelColor(i, pixels.Color(0,150,0)); // Moderately bright green color.
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).
  }
}

  • arduino/出力基礎/led.txt
  • 最終更新: 2018/07/03 11:43
  • by baba