snovaのブログ

主にプログラミングやデジタルコンテンツについて書きます。最近はPython, Flutter, VRに興味があります。

Arduinoの初期設定から2つのLEDを光らせるまで with vscode

イントロダクション

学生のころ、Arduinoを購入して電子工作で遊んでいました。 数年使っていませんでしたが、久しぶりに遊んでみたので、報告します。

今回は、セットアップからLEDを光らせるまでです。

目次

環境

  • Arduino UNO
  • IDE : ARDUINO 1.8.9
  • PC : Macbook Air
  • OS : macOS Mojave

初期設定

Arduinoを動かすためには専用のソフトウエアが必要です。 公式のダウンロードページからダウンロードしてください。

画面の指示に従っていき、ソフトウエアを起動します。

LEDを点滅させる

以下はLEDを1秒毎に点滅させるプログラムです。 記述したあとコンパイルすれば、デジタル出力ポート13番にある付属LEDが点滅します。

int ledPin = 13;  // LED connected to digital pin 13

void setup()
{
  pinMode(ledPin, OUTPUT);  // sets the digital pin as output
}

void loop()
{
  digitalWrite(ledPin, HIGH);  // sets the LED on
  delay(1000);  // waits for a second
  digitalWrite(ledPin, LOW);  // sets the LED off
  delay(1000);  // waits for a second
}

vscodeでArduinoを動かす

プログラムを作っているときに気づいたのですが、Arduino IDEにはコードの補完機能等々がありません。 そこで、vscodeの拡張機能を使って、ArduinoのLEDを点滅させます。

  1. vscodeでarduinoと検索しMicrosoft製のArduino拡張を導入
  2. コマンドパレットでArduino: Initialize→プロジェクト名決定→ボードを選択
  3. コード作成
  4. コマンドパレットでArduino: Upload(またはcommand + alt + U)でArduinoへ書き込み

ブレッドボードに繋いだLEDを点滅

ブレッドボードとLEDとジャンパー線を組み合わせて簡単なLED点滅システムを作りました。 今回はArduinoのデジタル出力12番とLEDのプラス側(足が長い方)に接続し、グランド(GND)をLEDのマイナス(足が短い方)に接続します。

ジャンパー線がすべて同じ色なのでわかりにくいですが、完成写真はこちら。

プログラムは以下のようにします。

int ledPin1 = 12; //12番ポート

void setup()
{
  pinMode(ledPin1, OUTPUT);
}

void loop()
{
  digitalWrite(ledPin1, HIGH);
  delay(1000);
  digitalWrite(ledPin1, LOW);
  delay(1000);
}

画像なのでわかりにくいですが、ちゃんと点滅しています。

LEDの段階的点滅

リファレンスを読むとArduinoはPWM(パルスの幅で出力信号を変化させる)で出力信号を制御しているようです。 そこで、赤色LEDは周期的に点滅させ、緑LEDは光の強さを時間的に変化させるシステムをつくりました。

通常のデジタル出力信号はdigitalWrite()関数で、PWMで制御する出力信号はanalogWrite()関数を使います。

int ledPin1 = 12; //12番ポート : Red
int ledPin2 = 3; //3番ポート : Green
int t_val = 0;
float t_rad = 0.0;
float two_pi = 2 * 3.1415;

void setup()
{
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
}

void loop()
{
  // time
  t_val += 1;
  t_rad += two_pi/120;

  // Red
  if (t_val % 100 < 50){
    digitalWrite(ledPin1, HIGH);
  }
  else{
    digitalWrite(ledPin1, LOW);
  }

  // Green
  float out_sin = 255*sin(t_rad);
  if (out_sin < 0){
    out_sin = -out_sin;
  }
  analogWrite(ledPin2, out_sin);
  delay(50);
}

配線と点滅の様子を示した画像はこちら。

まとめ

ArduinoでLEDの点滅させました。 arduinoのプログラムはvscodeから書き込むことができます。 今後はArduinoを使ったシステムの構築にも取り組みます。

参考サイト

Google Play and the Google Play logo are trademarks of Google LLC.