Warning: The magic method InvisibleReCaptcha\MchLib\Plugin\MchBasePublicPlugin::__wakeup() must have public visibility in /home/c1235550/public_html/keichan-zakkiblog.com/wp-content/plugins/invisible-recaptcha/includes/plugin/MchBasePublicPlugin.php on line 37
Arduino Lチカやってみた - けいちゃんの雑記ブログ
※当サイトではアフィリエイト広告を利用しています

Arduino Lチカやってみた

IT

こんにちは!けい(@keichan_blog)です!

前回、環境構築の備忘録を書きましたので、今回はコーディングの備忘録を書いていきます

初心者が必ずやるLチカ、もといLED点滅をやってみます

使っている部材はこちら

教材として選んだのはこちら

コーディング

まずはLEDを点滅させるコードを書いていきます

「プログラミングは写経して覚える」って、前の会社で教えられたな・・・

全然勉強してなかったですが・・・

const int LED = 13; //LEDをデジタルピン13に接続

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

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED, HIGH); //LEDを点ける
  delay(5000);
  digitalWrite(LED, LOW); //LEDを消す
  delay(5000);
}

内容としては、デジタルピン13に接続したLEDを点滅させる処理となります

Boardを接続した段階で1秒間隔の点滅がされていましたので、点滅する間隔を5秒に変更してみました

読み込んだ時点から点滅の間隔が変わるようになります

コンパイル

次に、コードをコンパイルしていきます

「verify」となっている箇所をクリックするとコンパイルが実行されます

クリックすると、右下にコンパイル中であるメッセージが表示されます

問題なくコンパイルが完了すると、「Done compiling」と表示されます

メッセージは右下のベルマークをクリックすると表示されました

コンパイルでエラーが発生した場合、問題の箇所が表示されるので、指摘を確認して修正しましょう

これでコードは問題ありませんので、Boardに書き込んでいきます

アップロード

アップロードは左上のUploadをクリックすると実行されます

問題なくアップロードされると、「Done uploading」と表示されます

アップロードしたタイミングで、Board上のTXとRXのLEDが細かく点滅します

点滅したあとは、LEDの点滅の間隔が変わっていることがわかります

コーディング2

次はボタンを押したときに、LEDが点くようにします

const int LED = 13; //LEDが接続されているピン
const int BUTTON = 7; //ボタンが接続されているピン

int val = 0;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED, OUTPUT);
  pinMode(BUTTON, INPUT);

}

void loop() {
  // put your main code here, to run repeatedly:
  val = digitalRead(BUTTON); //入力を読み取りvalに格納

  if (val == HIGH){
    digitalWrite(LED, HIGH); //LEDを点ける
  } else {
    digitalWrite(LED, LOW); //LEDを消す
  }

}

今度はボタンを使うので、ボタンを押したかどうかを取得するようにピンを設定します

ボタンが押されたときに「HIGH」、押されないときなに「LOW」が入力されてきます

それに基づき条件式を書いて、LEDを点ける処理を書いていきます

今回はブレッドボードという板に回路を作りました

書き終えたら、コンパイル、アップロードをするとこのようになります

コーディング3

次にボタン操作によって、LEDが点いたり消えたりし、長押しでLEDの明るさが変わるようにしました


const int LED = 9;
const int BUTTON = 7;

int val = 0;
int old_val = 0;
int state = 0;

int brightness = 128;
unsigned long startTime = 0;

void setup() {
  // put your setup code here, to run once:

  pinMode(LED, OUTPUT);
  pinMode(BUTTON, INPUT);

}

void loop() {
  // put your main code here, to run repeatedly:

  val = digitalRead(BUTTON);

  if((val == HIGH) && (old_val == LOW)){

    state = 1 -state; 
    startTime = millis();
    delay(10);

  }

  if((val == HIGH) && (old_val == HIGH)){

    if(state == 1 && (millis() - startTime) > 500){
      brightness++;
      delay(10); 
      
      if(brightness > 255){
        brightness = 0;
      }
    }    

  }

  old_val = val;

  if(state == 1){
    analogWrite(LED, brightness);
  } else {
    analogWrite(LED, 0);
  }

}

コーディングは本の通りに記載したので問題ありませんでしたが、ブレッドボードの回路がハマってしまいました・・・

まだブレッドボードの使い方を理解していないので、もう少し勉強が必要ですね・・・

ひとまず、これでLED操作系は終了です

回路の作り方がまだ理解できていないので、そちらも勉強しないとな・・・

コメント

タイトルとURLをコピーしました