〔パート1〕 〔パート3〕 〔Arduinoの動かせ方入門に戻る〕
--------------------------------------------------------------------- void setup() { } void loop() { int H , val ; int R , G , B ; /* 半固定抵抗の値を読取りその値を0〜360に変換する処理 */ val = analogRead(5) ; // アナログ5番ピンから値を読み取る val = constrain(val, 80, 550) ; // 80-550の範囲ないで値を切取る H = map(val,80,550,0,360) ; // HSVのH値(0-360)にスケール変換を行う /* HSVのH値を各LEDのアナログ出力値(0-255)に変換する処理 */ if (H <= 120) { /* H値(0-120) 赤-黄-緑 */ R = map(H,0,120,255,0) ; // 赤LED R←→G G = map(H,0,120,0,255) ; // 緑LED G←→R B = 0 ; } else if (H <= 240) { /* H値(120-240) 緑-水色-青 */ G = map(H,120,240,255,0) ; // 緑LED G←→B B = map(H,120,240,0,255) ; // 青LED B←→G R = 0 ; } else { /* H値(240-360) 青-紫-赤 */ B = map(H,240,360,255,0) ; // 青LED B←→R R = map(H,240,360,0,255) ; // 青LED R←→B G= 0 ; } /* RGBLEDに出力する処理 */ analogWrite(9,R) ; // 9番ピンから赤LEDの出力 analogWrite(11,G) ; // 11番ピンから緑LEDの出力 analogWrite(10,B) ; // 10番ピンから青LEDの出力 } ---------------------------------------------------------------------半固定抵抗のツマミを回すとLED色が変化すると思います。
すなわち analogWrite(9 ,0-255) ; // 9番ピンから赤LEDの出力 analogWrite(11,0-255) ; // 11番ピンから緑LEDの出力 analogWrite(10,0-255) ; // 10番ピンから青LEDの出力 なのでぇ、 analogWrite(9 ,255) ; // 9番ピンから赤LEDの出力 analogWrite(11,255) ; // 11番ピンから緑LEDの出力 analogWrite(10,0) ; // 10番ピンから青LEDの出力 とすると黄色で点灯します。
(スケッチのサンプル)
下記がスケッチプログラムです、コピーペーストして貼り付けて下さい。--------------------------------------------------------------------- #define RED_PIN 9 // 赤LEDの出力ピン #define GREEN_PIN 11 // 緑LEDの出力ピン #define BLUE_PIN 10 // 赤LEDの出力ピン #define RGBLED_RED 0 // 赤色 #define RGBLED_GREEN 1 // 緑色 #define RGBLED_BLUE 2 // 青色 #define RGBLED_YELLOW 3 // 黄色 #define RGBLED_ORANGE 4 // 橙色 #define RGBLED_BRIGHT_GREEN 5 // 明るい緑色(若草色) #define RGBLED_MAGENTA 6 // 紅紫色(明るいピンク) #define RGBLED_PINK 7 // 桃色 #define RGBLED_LIGHT_BLUE 9 // 明るい水色 #define RGBLED_BLUE_GREEN 10 // 青緑色 #define RGBLED_SKY_BLUE 11 // 明るい空色 #define RGBLED_WHITE 12 // 白色 #define RGBLED_OFF 13 // 消灯 // RGB色値のデータ unsigned int RGB_ColorData[3][14] = // 赤色 緑色 青色 黄色 橙色 明緑 紅紫 桃色 ??? 水色 青緑 空色 白色 消灯 { {0xFF,0x0 ,0x0 ,0xFF,0xFF,0x80,0xFF,0xFF,0x80,0x0 ,0x0 ,0x0 ,0xFF,0x0 }, // 赤LED値(R) {0x0 ,0xFF,0x0 ,0xFF,0X80,0xFF,0x0 ,0x0 ,0x0 ,0xFF,0xFF,0x80,0xFF,0x0 }, // 緑LED値(G) {0x0 ,0x0 ,0xFF,0x0 ,0x0 ,0x0 ,0xFF,0x80,0xFF,0xFF,0x80,0xFF,0xFF,0x0 } // 青LED値(B) } ; void setup() { } void loop() { RGBLED_Set(RGBLED_PINK) ; delay(100) ; } // RGB色値を色名で指定する処理 // value : RGB色値のデータの色番号(配列)を指定します。 void RGBLED_Set(unsigned int value) { RGBLED_Out(RGB_ColorData[0][value],RGB_ColorData[1][value],RGB_ColorData[2][value]) ; } // RGBのLEDへPWM出力を行う // RGB色値のデータ以外の色は自分で指定(ブレンド)しましょう。 void RGBLED_Out(unsigned int red,unsigned int green,unsigned int blue) { analogWrite(RED_PIN,red) ; // 赤LEDの出力 analogWrite(GREEN_PIN,green) ; // 緑LEDの出力 analogWrite(BLUE_PIN,blue) ; // 青LEDの出力 } ---------------------------------------------------------------------
RGB色指定の記事追記(*2) 2020/04/03
追記(*1) 2012/06/18
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2020 Shigehiro Kimura All Rights Reserved.