〔パート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.