2018年9月29日土曜日

[Elegoo: 5]  デジタル入出力
 LEDの点灯・消灯をプッシュボタンで制御する




概要 (Overview)
  • デジタル入出力について学ぶ
  • Arduino IDEにてスケッチを作成し、LEDの点灯・消灯をプッシュボタンで制御する



参照 (Reference)

デジタルI/Oピン
  • D0~D13番の計14本
  • ピンの状態設定(入力/出力/プルアップ時)はスケッチ上で行う
  • 基本的にはHIGH(5V)かLOW(0V)の1Bit(0,1)
  • 「~」の付いたピン[3,5,6,9,10,11]は8Bit[0~255]でパルス幅変調(PWM)出力が可能


デジタル入出力関数

書式引数説明
void pinMode( [byte]pin, [boolean]mode ) pin:デジタルピン番号
mode:ピンモード
・INPUT:入力
・OUTPUT:出力
・INPUT_PULLUP:プルアップ
pinにmodeを設定
void digitalWrite( [byte]pin, [boolean]value ) pin:デジタルピン番号
value:HIGH/LOW
pin[D0-D13]に
value[HIGH(5V),LOW(0V)]
を出力
※) pinMode関数で
"OUTPUT"を設定
boolean digitalRead( [byte]pin ) pin:デジタルピン番号 pin[D0-D13]から
値[HIGH(5V),LOW(0V)]
を返す
※) pinMode関数で
"INPUT"を設定




使用する電子部品 (Component Required)
電子種別電子部品個数
マイコン Elegoo UNO R3 マイコンボード1
USBケーブル1
能動5mm LED(赤)1
受動220Ω 抵抗器1
機構プッシュボタン2
ブレッドボード MB-1021
ジャンプワイヤ(黒)[オス-オス]4
ジャンプワイヤ(赤)[オス-オス]1
ジャンプワイヤ(黄)[オス-オス]1
ジャンプワイヤ(青)[オス-オス]1




電子部品について (Component Introduction)

プッシュボタン


  • スイッチはボタンを押すと接点が接続されて、電気が流れるシンプルな電子部品
  • このレッスンで用いるスイッチには4つの足があるが、実際の電気接続は2つ(A&D, B&C)しかない





電子回路 (Electronic Circuit)

回路図 (Schematic)



実体配線図 (Wiring Diagram)

  • ジャンプワイヤは+5Vは赤、グランドは黒など用途別に色分けしておくと配線しやすい
  • 電流を流しすぎて電子部品を焼き切らないよう、必ずデータシートの絶対最大定格を把握し、電源(+5V、グランド)は最後に配線する




実践 (To Practice)

配線写真 (Example Picture)


プログラム (Code)

ライブラリ
  • 無し

スケッチ
/****************************************************/
/* 【 Elegoo:5 】デジタル入出力                     */
/*    LEDの点灯・消灯をプッシュボタンで制御する        */
/****************************************************/

/*--------------------------------------------------*/
/* SW_CASE : スイッチボタンの配置                     */
/*       0 :ONを押す間、LEDを点灯する                 */
/*       1 :ONを押すたびにLEDの点灯・消灯を繰り返す    */
/*       2 :ONでLEDを点灯/OFFでLEDを消灯             */
/*--------------------------------------------------*/
#define SW_CASE 0       // 0, 1, 2

// ピンの定義
#define LED  5          // D5 : LED
#define SW_ON 9         // D9 : Switch ON
#define SW_OFF 8        // D8 : Switch OFF

// LEDの点灯状態
boolean led_on = false; // true:点灯/false:消灯

/*********/
/* setup */
/*********/
void setup(){
  // Setting pins:Pinmode(PINNo,[INPUT|OUTPUT|INPUT_PULLUP])
  pinMode(LED, OUTPUT);           // 出力用
  pinMode(SW_ON, INPUT_PULLUP);   // プルアップ時に発動
  pinMode(SW_OFF, INPUT_PULLUP);  // プルアップ時に発動
}

/********/
/* loop */
/********/
void loop(){

  // --------------------------------------------------
  // スイッチボタンの配置別
  // --------------------------------------------------
  switch(SW_CASE){

    // --------------------------------------------------
    // Switch_ONを押す間、LEDを点灯する
    // --------------------------------------------------
    case 0:
        // ONを押した(LOW)
        if (digitalRead(SW_ON) == LOW){
          digitalWrite(LED, HIGH);  // LEDを点灯
        }else{
          digitalWrite(LED, LOW);   // LEDを消灯
        }
        break;

    // --------------------------------------------------
    // Switch_ONを押すたびにLEDの点灯・消灯を繰り返す
    // --------------------------------------------------
    case 1:
          // ONを押した(LOW)
        if (digitalRead(SW_ON) == LOW){

          // LEDの点灯状態が消灯なら
          if( led_on == false){
            digitalWrite(LED, HIGH);  // LEDを点灯
          }else{
            digitalWrite(LED, LOW);   // LEDを消灯
          }

          // LEDの点灯状態を変更する
          led_on = (led_on == false) ? true : false;
        }
        break;

    // --------------------------------------------------
    // Switch_ONでLEDを点灯/Switch_OFFでLEDを消灯
    // --------------------------------------------------
    case 2:
        // ONを押した(LOW) LEDを点灯
        if (digitalRead(SW_ON) == LOW) digitalWrite(LED, HIGH);

        // OFFを押した(LOW) LEDを消灯
        if (digitalRead(SW_OFF) == LOW) digitalWrite(LED, LOW);
        break;
  }

  delay(100);
}

結果(動画)・モニタリング


SW_CASE[0] ONを押す間、LEDを点灯する


SW_CASE[1] ONを押すたびにLEDの点灯・消灯を繰り返す


SW_CASE[2] ONでLEDを点灯/OFFでLEDを消灯

0 件のコメント:

コメントを投稿