キャッツコンピューターロボット研究会
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が翻訳し、一部加筆修正したもの |