電気素人主婦による備忘録 ※ ご利用は自己責任でお願いします ※
/****************************************************/ /* 【 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 ); }
0 件のコメント:
コメントを投稿