電子種別 | 電子部品 | 個数 |
マイコン | Elegoo UNO R3 マイコンボード | 1 |
USBケーブル | 1 | |
能動 | RGB LED | 1 |
受動 | 220Ω 抵抗器 | 1 |
機構 | ポテンショメータ | 1 |
ブレッドボード | 1 | |
ジャンプワイヤ(黒)[オス-オス] | 3 | |
ジャンプワイヤ(赤)[オス-オス] | 2 | |
ジャンプワイヤ(緑)[オス-オス] | 1 | |
ジャンプワイヤ(青)[オス-オス] | 1 | |
ジャンプワイヤ(黄)[オス-オス] | 1 |
- 内部にRGBのLEDが存在し、個々のLEDの明るさ[0-255]を制御することで、様々な色を表現できる
- ピンは一番長いCATHODEの”ー(GND)”を挟んで1本が"赤"、2本のうちCATHODE横のピンが”緑”、隣が”青”の計4本
- 各LEDを直接電源に接続すると多くの電流が流れて破壊されるため、抵抗器で電流を調整する
- ボリューム(音量)の調整等、抵抗値を調節できる3端子の可変抵抗器
- 形状としては、回転角度を検出するロータリーポテンショメータと、直線上の位置を検出するリニアポテンショメータがある
- 使用方法としては二つの固定電極の両端に基準電圧を掛け、可動電極の電圧を測定することで可動電極の位置を判定する
- 無し
/****************************************************/ /* 【 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 ); }