トップページへ

キャッツコンピューターロボット研究会

Cats Computer Robot WorkShop
〜 A01 Lチカ LED点滅演習 〜


○学習に使用するマイコン
Arduino UNO R3(互換品含む) スターターキット
開発統合環境:arduino IDE , 開発言語:簡易型C,C++言語 , 使用するパソコン:windows , macなど

1. マイコン
2. PC接続用USB PORT
3. シリアル-USB変換IC
4. デジタルピン
5. アナログピン
6. 5/3.3[V]外部機器用電源端子
7. GND(クランド:0[V])
8. 外部電源入力端子
LED点滅サンプルsketch(スケッチ)の説明

/*
Lesson-1 Blink1
UNO R3の基板上ボードにはPin13 にLED が実装されています。
しかし、バージョンによって、実装されていないものもありますので、その場合は、Pin13に220Ω(注 LEDへの電圧電流制限なので抵抗は必ずつけること)の抵抗を付けてLEDと接続してください。
そのLED を一秒おきに繰り返し点滅させます
*/
// setup 関数では{}内の処理が最初に一回だけ実行される
void setup() {
// digital pin LED_BUILTIN を出力にセットする
// →LED_BUILTIN と記述すると自動的にPin13 が選択される
// 同じ意味です。→pinMode(13, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
}
// loop 関数では{}内の処理をずっと繰り返す
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // LED を点灯する
delay(1000); // 1 秒(1000msec)待つ
digitalWrite(LED_BUILTIN, LOW); // LED を点灯する
delay(1000) // 1 秒(1000msec)待つ
}

sketchの基本文法(c , c++の文法に準拠している)
void setup() { }内にプログラムの最初に一回だけ行う処理を記述 
void roop() { }内に繰り返し行う処理を記述
処理はIDEで提供されている関数を用いる ---> 多種の関数が提供されているのでレッスンの進捗に合わせて説明
関数名(引数,引数,,,);が基本形。
;を忘れないこと
例 digitalWrite(13,HIGH);

C言語独自の制御文もレッスン進捗に合わせて学習する。
サンプルプログラムで遊んだ後に応用課題をやってみましょう
1)上のサンプルプログラムを入力してみる→基板に実装されているLED点灯

2)ブレッドボードに220Ωの抵抗とLEDを装着し点灯

ヒント
 Pin13は、0[V]または5[V]が出力されます。
 arduinoからブレッドボードに5[V]の電源を供給する
 接続 Pin13--LED--抵抗--GND端子(0[V])
 (注 LEDへの電圧電流制限なので抵抗は必ずつけること)
3)D2-D13番ピン(使用可能)にLEDを1つ追加し交互に点灯させる

4)LEDを6個にして(D2-D13番ピンは使用可能)し順番に点滅させる
5)4)の操作を,配列やfor文を使用しスッキリしたプログラムコードにする
ヒント
int pinnumber[3]={0,1,2};と配列定義すると
 pinnumber[0]には、数字の0が代入される
 pinnumber[1]には、数字の1が代入される
 pinnumber[2]には、数字の2が代入される

for文
for 文を制御するための変数を定義
int i;
for( i=0 ; i<6 ; i++){
}
この場合、i=0からスタートして、iの値が6未満の間は1ずつ増やして6になったら「{}」内の繰り返しを終了します。

i++はi=i+1という意味です。iに入っている数字を1つ増やし、iに代入するという意味になります。
数学の場合は「=」は両辺が同じということを表しますが、プログラムでは、数字などの代入の意味になったり比較を表す表現になります。

6)乱数を使ってランダムにLEDを点灯させる、(位置、時間など)
ヒント
randomSeed(73); // 乱数発生のための初期値を与える
i=random(0,5); // 0から5のランダムな値をiに代入する

7) 6)と同じ配線(ブレッドボード)を使い1秒おきにLED0〜5 をランダムに点滅させる
LED の点滅用に新たな関数LEDonoff を定義します
ヒント
arg0…LEDが接続されているピン番号 , arg1…点灯時間 , arg2…消灯時間
void LEDonoff(int arg0, int arg1,int arg2){
digitalWrite(arg0, HIGH); //  arg0 ピンに接続されているLED を点灯する
delay(arg1); //          arg1 [ms] 待つ
digitalWrite(arg0, LOW); //  arg0 ピンに接続されているLED を消灯する
delay(arg2); //          arg2 [ms] 待つ
}

最後の課題
IDEのシリアルモニターを使用し、ミニルーレットゲーム機を作りましょう
これは難しいので先生にお問い合わせをしてください。解説記載の資料をお渡しします。
Arduino 日本語リファレンス→こちら
このドキュメントはArduino Teamにより執筆され、Takumi Funadaが翻訳し、一部加筆修正したもの

Copyright (C) 2022 Cats Computer Robot WorkShop ALL right reserved.