2018年9月29日土曜日

[Elegoo: 4] アナログ入出力
RGB LEDの色をポテンショメータで制御する




概要 (Overview)
  • PWM幅変調とアナログ入出力について学ぶ
  • RGB LEDの色をポテンショメータで制御する



参照 (Reference)
PWM(パルス幅変調)
  • PWM(パルス幅変調)は電力を制御する技術
  • 「~」の付いたデジタルI/Oピン[D3,D5,D6,D9,D10,D11]の6本
  • ピンの状態設定(出力)はスケッチ上で行う
  • 基本的にはHIGH(5V)かLOW(0V)の1Bit[0,1]だが
    デューティ比として8Bit[0~255]の値を出力可能

アナログI/Oピン
  • A0~A5番の計6本
  • ピンの状態設定をスケッチ上で行わない
  • ピンの電圧を10Bit[0~1023]で取得可能

アナログ入出力関数

書式引数説明
void pinMode( [byte]pin, [boolean]mode ) pin:デジタルピン番号
mode:ピンモード
・OUTPUT:出力
pinにmodeを設定
void analogWrite( [byte]pin, [byte]value ) pin:デジタルピン番号
value:デューティ比
pin[D3,D5,D6,D9,D10,D11]に
value[0-255]を出力
※) pinMode関数で
"OUTPUT"を設定
int analogRead( [byte]pin ) pin:アナログピン番号 pin[A0-A5]から値[0-1023]を返す
※) pinMode関数で
ピンの状態を設定しない




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




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

RGB LED


  • 内部にRGBのLEDが存在し、個々のLEDの明るさ[0-255]を制御することで、様々な色を表現できる
  • ピンは一番長いCATHODEの”ー(GND)”を挟んで1本が"赤"、2本のうちCATHODE横のピンが”緑”、隣が”青”の計4本
  • 各LEDを直接電源に接続すると多くの電流が流れて破壊されるため、抵抗器で電流を調整する

ポテンショメータ

  • ボリューム(音量)の調整等、抵抗値を調節できる3端子の可変抵抗器
  • 形状としては、回転角度を検出するロータリーポテンショメータと、直線上の位置を検出するリニアポテンショメータがある
  • 使用方法としては二つの固定電極の両端に基準電圧を掛け、可動電極の電圧を測定することで可動電極の位置を判定する




電子回路 (Electronic Circuit)

回路図 (Schematic)


実体配線図 (Wiring Diagram)






実践 (To Practice)

配線写真 (Example Picture)


プログラム (Code)

ライブラリ
  • 無し

スケッチ
/****************************************************/
/* 【 Elegoo:4 】アナログ入出力                      */
/*    LEDの色をポテンショメーターで制御する            */
/****************************************************/

/*----------------------------*/
/* RGBリスト:表示する色(RGB)  */
/*----------------------------*/
long  RGB_LIST[] = {
    0x000000,   // BLACK
    0x0000FF,   // BLUE
    0x00FFFF,   // CYAN
    0x00FF00,   // GREEN
    0xFFFF00,   // YELLOW
    0xFF0000,   // RED
    0xFF00FF,   // MAZENTA
    0xFFFFFF,   // WHITE
};
// RGBリスト_配列数
byte bytRgbNum;

// ポテンショメータ値
int intMeter = 0;

// ピンの定義
#define METER 0   // A0:ポテンショメータ
#define BLUE  3   // D3:BLUE
#define GREEN 5   // D5:GREEN
#define RED   6   // D6:RED


/*********/
/* setup */
/*********/
void setup(){
  // --------------------------------------------------
  // デジタルピンを出力に設定
  // --------------------------------------------------
  pinMode( BLUE,  OUTPUT );
  pinMode( GREEN, OUTPUT );
  pinMode( RED,   OUTPUT );

  // --------------------------------------------------
  // RGBリストの配列数を設定
  // --------------------------------------------------
  bytRgbNum =  sizeof(RGB_LIST) / sizeof(RGB_LIST[0]);
}

/********/
/* loop */
/********/
void loop(){
  // ------------------------------------------------------------
  // ポテンショメータ[0-1023]の値を[0~RGBリストの配列数]で読み込む
  // ------------------------------------------------------------
  intMeter = map( analogRead(METER), 0, 1023, 0, bytRgbNum );

  // --------------------------------------------------
  // RGBリストの中からポテンショメータ値のRGBを出力する
  // --------------------------------------------------
  analogWrite( BLUE,  (   RGB_LIST[intMeter] & 0x0000FF ) );
  analogWrite( GREEN, ( ( RGB_LIST[intMeter] & 0x00FF00 ) >> 8) );
  analogWrite( RED,   ( ( RGB_LIST[intMeter] & 0xFF0000 ) >> 16) );
  
  delay( 100 );
}

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


RGB LEDの色をポテンショメーターで制御する

[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を消灯

2018年9月23日日曜日

[Elegoo: 3] 電子回路の基礎を学ぶ



概要 (Overview)
  • 電子部品の組み合わせ方(電子回路)を学ぶ
  • 抵抗器の値の読み方を学ぶ
  • 異なる値の抵抗器を使用して、LEDの明るさを変更する方法を学ぶ



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



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

LED


  • LED (Light Emitting Diode) は「発光ダイオード」と呼ばれる半導体素子で、サイズ(直径)は3mm、5mm、8mm、10mmが一般的
  • 形状ごとに光の方向性に違いがあり、砲弾型(正面)、テープ型(拡散)、角型(拡散)、チップ型(拡散)などがある
  • LEDを直接電源に接続すると多くの電流が流れて破壊されるため、抵抗器で電流を調整する
  • 長いピンが正(+)、短いピンが負(ー)

抵抗器(レジスタ)


  • 抵抗器は電気の流れに抵抗し、抵抗値が高いほど抵抗が大きくなり、電流は少なくなる
  • 抵抗の単位はオーム(Ω)で色の縞模様(カラーコード)で抵抗値を示し、正と負のピンはない


カラーコード

ブレッドボード


  • ピンの差し込み口(ピンソケット)が碁盤の目状に配置され、田付けなしでピンを自由に着脱できる基板(ボード)
  • メインのピンソケットとは離れて2つのピンソケットがある場合、通常は+5Vとグランドのペアになっている。これらはレールと呼ばれ、ボード上の電子部品やポイントに電源を接続できる
  • 電子工作には必須パーツのひとつで、様々な形状やサイズの製品があり素早く回路を試作できるが、外れやすく半田付けほどの信用性はない

ジャンプワイヤ


  • ブレッドボード上の配線を行う際に役立つツール
  • 通常はリード線の両端にオス・メス・ワニ口クリップ等のピンが固定され、長さも数mmから数十cmまで用意されている
  • 接続する電子部品のピンの形状や回路の規模に合わせてジャンプワイヤを選択する
  • 単線タイプのジャンプワイヤは数mmから数cmまでの短いものが多く、固めの単線をコの字型に曲げて作成されている



電子回路 (Electronic Circuit)

回路図 (Schematic)


実体配線図 (Wiring Diagram)


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



実践 (To Practice)

配線写真 (Example Picture)


プログラム (Code)


ライブラリ
  • 無し

スケッチ
  • 無し

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


抵抗器:220Ωbr

抵抗器:1kΩ


抵抗器:10kΩ