電気素人主婦による備忘録 ※ ご利用は自己責任でお願いします ※
/****************************************************/ /* 【 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 ); }
/****************************************************/ /* 【 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); }