LoginSignup
1
0

ArduinoでLチカ

Last updated at Posted at 2021-10-07

Lチカ

まずは、LEDを光らせてみましょう。LEDをチカチカさせることをLチカといいます。

使うLED

LED

LEDのプラス、マイナス

LEDは長い方が+、短い方がーです。
+はアノード
ーはカソード
といいます。
small_IMG_0101.jpg

LEDとArduinoのピンを接続

LEDの
長い方(+)を13番ピン
短い方(ー)をGNDに
につなげます。

↑は5V用に抵抗が入ったものを使っています。そうでないものを使う時は適宜、抵抗を入れてください。

スクリーンショット 2021-10-07 15.13.08.png

PNGイメージ-715F0B70A42C-1.png

Lチカプログラム

下記のプログラムをコピペし、スケッチに貼り付けし、保存後にArduinoに書き込んでみましょう。

void setup() {
  // put your setup code here, to run once:
  pinMode(13,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(13,HIGH);
  delay(500);
  digitalWrite(13,LOW);
  delay(500);

}

Arduinoに書き込み

プログラムの書き込みは下記の赤枠のボタンを押します。
スクリーンショット 2023-03-07 10.14.15.png

Macでエラー

macを使っている人で書き込みができなかった人は、ターミナルから下記のコマンドを実行してRosettaをupdateしてみてください。

softwareupdate --install-rosetta --agree-to-license

プログラムの解説

ポイント1:setupとloop

void setup() {
}
void loop() {
}

Arduinoのスケッチを作成するとという2つのプログラムがもともと書いてあります。

setupは最初に一回だけ実行されるプログラム
loopはずっと繰り返し実行されるプログラム
です。
{ 〜 }の間がそれぞれのプログラムになります。

ポイント2:約束事(文の最後はセミコロン;)

プログラムの中をみると、ところどころに;(セミコロン)があります。
Arduinoでは基本的に命令文の最後には;(セミコロン)をつけます

※ただし、ifやforのように{}でくくるループや条件分岐の場合は除きます。

ポイント3:ピンの設定と出力

デジタルピン(1〜13)の設定
・pinMode:指定したピンを入力用に使うのか、出力用に使うのかを設定する
今回はLEDを点灯させるために13番ピンから電気を流したい(出力したい)ので、
pinMode(13,OUTPUT);

・digitalWrite:デジタルピンの出力をLOWかHIGHで設定します。
LOW→0V
HIGH→5V
が出力されます。
つまり、
digitalWrite(HIGH)でLEDがつく
digitalWrite(LOW)でLEDが消える
事になります。

ポイント4:delayで待つ

delayは指定した時間待つ命令です。
単位はミリ秒(ms)です。
例)
delay(1000)→1秒待つ (1000/1000=1)
delay(100)→0.1秒待つ(100/1000=0.1)
delay(10)→0.01秒待つ(10/1000=0.01)

LEDを高速で点滅させると、点滅しているかわからないので、ある程度の間隔をおいてHIGHとLOWを切り替えます。

練習:For文を使って制御

下記のプログラムは0.3秒ごとの点滅を10回繰り返し、その後2秒ごとの点滅を3回繰り返す、というプログラムです。
最後まで行ったら、また0.3秒の繰り返しに戻ります。

void setup() {
  // put your setup code here, to run once:
  pinMode(13,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  for(int i=0; i < 10; i++){
    digitalWrite(13,HIGH);
    delay(300);
    digitalWrite(13,LOW);
    delay(300);
  }
  
  for(int i=0; i < 3; i++){
    digitalWrite(13,HIGH);
    delay(2000);
    digitalWrite(13,LOW);
    delay(2000);
  }

}

プログラムの解説

ポイント For文

for (初期化式; 条件式; 変化式){
  // 繰り返しの中で実行される処理
}

下記の式は

  • iという変数で繰り返しを判断する
  • iは0から始まる
  • iが3未満の間は繰り返す(0から始まるので、3回の繰り返しになることに注意)
  • i++はiが1ずつ足される
  for(int i=0; i < 3; i++){
         //繰り返しの中で実行される処理
  }

長縄跳びを想像しましょう。跳んでる時に「いーち、にー、さーん・・・」と数えていきますよね。その数字がiに入っているということになります。

if文

条件分岐は

void setup() {
  // put your setup code here, to run once:
  pinMode(13,OUTPUT);
}

void loop() {
  // intervalという変数を作って、間隔を制御する
  int interval=0;
  
  for(int i=0; i < 13; i++){
    if(i<10){
      // もしiが10より小さかったら間隔は0.3秒
      interval=300;
    }else{
      // そうじゃなかったら間隔は2秒
      interval=2000;
    }
      digitalWrite(13,HIGH);
      delay(interval);
      digitalWrite(13,LOW);
      delay(interval);
  }

}

プログラムの解説

ポイント

if (条件式){
 処理内容1  //条件式を満たす場合にのみ実行する
}
else{
 処理内容2  //条件式を満たさない場合にのみ実行される
}
1
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
1
0