本格的にArduino > フルカラーLED

秋月の100円フルカラーLED( http://akizukidenshi.com/catalog/g/gI-02476/ )を制御してみます。

抵抗の計算

  • 赤(Vf=2.0V) (5V-2.0V)/0.015A=200Ω
  • 緑(Vf=3.0V) (5V-3.0V)/0.015A=133Ω
  • 青(Vf=3.5V) (5V-3.5V)/0.015A=100Ω

とりあえず全部220Ω。



3軸加速度センサーにRGBを連動させてみる


int xPin =  0;
int yPin =  1;
int zPin =  2;
int rPin =  9;
int gPin = 10;
int bPin = 11;

long count = 0;
void setup() {
 Serial.begin(38400);  
 pinMode(rPin, OUTPUT);
 pinMode(gPin, OUTPUT);
 pinMode(bPin, OUTPUT);
}

int xPrev=128, xVal=0;
int yPrev=128, yVal=0;
int zPrev=128, zVal=0;

void loop() {
 int x = analogRead(xPin);
 int y = analogRead(yPin);
 int z = analogRead(zPin);
 if(true){
   int dx = abs(xPrev-x);
   int dy = abs(yPrev-y);
   int dz = abs(zPrev-z);
   if(dx>dy && dx>dz){ dy=0; dz=0; }
   if(dy>dx && dy>dz){ dx=0; dz=0; }
   if(dz>dx && dz>dy){ dx=0; dy=0; }
   xVal += dx/2;
   yVal += dy/2;
   zVal += dz/2;
   xPrev = x;
   yPrev = y;
   zPrev = z;
   xVal = xVal-xVal/400-1;
   yVal = yVal-yVal/400-1;
   zVal = zVal-zVal/400-1;
   xVal = min(25500, max(0, xVal));
   yVal = min(25500, max(0, yVal));
   zVal = min(25500, max(0, zVal));
   analogWrite(rPin, constrain(sqrt(xVal),0,255));
   analogWrite(gPin, constrain(sqrt(yVal),0,255));
   analogWrite(bPin, constrain(sqrt(zVal),0,255));
   delay(2);
 }else{
   x = min(255, max(0, x-384));
   y = min(255, max(0, y-384));
   z = min(255, max(0, z-384));
   analogWrite(rPin, x*3/16);
   analogWrite(gPin, y*7/16);
   analogWrite(bPin, z*1/16);
 }
/*
 // for arduinoscope
 for (int i=0;i<6;i++){
   Serial.print(analogRead(i));
   Serial.print(" ");
 }
 Serial.println();
*/
 count++;
}

タグ:

+ タグ編集
  • タグ:
最終更新:2009年07月04日 19:28
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。