こんにちは!けい(@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操作系は終了です
回路の作り方がまだ理解できていないので、そちらも勉強しないとな・・・
コメント