Arduinoで二酸化炭素センサーと色感センサーを用いてフルカラーLEDを点灯させたいです。  
具体的には、色感センサーで読み取った色と同じ色にフルカラーLEDを光らせながら同時に、二酸化炭素センサーで読み取った二酸化炭素濃度の値が350〜999ppmのときフルカラーLEDを30個、二酸化炭素濃度の値が1000〜2499ppmのときにフルカラーLEDを20個、二酸化炭素濃度の値が2500ppm以上のときフルカラーLEDを10個点灯できるようにしたいです。

下記のコードではフルカラーLEDが光の色が変化せず、困っています。

  * [フルカラーLEDデーターシート](https://akizukidenshi.com/download/ds/optosupply/OSTA5131A-RPGB.pdf)
  * [色感センサー](https://akizukidenshi.com/catalog/g/gM-08220/)
  * [CO2センサーデータシート](https://akizukidenshi.com/download/ds/winsen/mg812.pdf)

```

    #include "Adafruit_TCS34725.h"
    #include "CO2Sensor.h"
    
    const int SER = 2;
    const int RCLK = 3;
    const int SRCLK = 4;
    const int SRCLR = 5;
    
    boolean red[] = {0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1};
    #define commonAnode false
    byte gammatable[256];
    
    Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS,TCS34725_GAIN_4X);
    
    CO2Sensor co2Sensor(A0, 0.99, 100);
    
    void setup() {
     Serial.begin(9600);
     Serial.println("=== Initialized ===");
     co2Sensor.calibrate();
     Serial.println("Color view Test!");
    
    if (tcs.begin()){
      Serial.println("Found sensor");
     }else {
      Serial.println("No TCS34725 found ... check your connections");
      while(1); // halt!
    }
    for (int i=0; i<256; i++){
      float x = i;
      x /= 255;
      x = pow(x, 2.5);
      x *= 255;
    
      if (commonAnode) {
         gammatable[i] = 255 - x;
      } else {
        gammatable[i] = x;
      }
     }
      pinMode(SER, OUTPUT);
      pinMode(RCLK, OUTPUT);
      pinMode(SRCLK, OUTPUT);
      pinMode(SRCLR, OUTPUT);  
    
      digitalWrite(SRCLR, LOW);
      digitalWrite(SRCLR, HIGH);
      
    }
    
    void loop() {
    
    for (int j = 0; j < 30; j++) {
      digitalWrite(RCLK, LOW);
      for(int j =0 ; j < 30 ; j++){
      digitalWrite(SER,1);
      digitalWrite(SRCLK,1);
      digitalWrite(SRCLK,0);    
      }
      // shiftOut(SER, SRCLK, LSBFIRST, 1<<j);
      digitalWrite(RCLK, HIGH);
      delay(250);
      }
      float val = co2Sensor.read();
      Serial.print("CO2 value: ");
      Serial.println(val);
      
      uint16_t clear,red,green,blue;
    
      tcs.setInterrupt(false);    
    
      delay(60);
    
      tcs.getRawData(&red, &green, &blue, &clear);
    
      tcs.setInterrupt(true);
    
      Serial.print("C:\t"); Serial.print(clear);
      Serial.print("\tR:\t"); Serial.print(red);
      Serial.print("\tG:\t"); Serial.print(green);
      Serial.print("\tB:\t"); Serial.print(blue);
    
      uint32_t sum = clear;
      float r,g,b;
      r = red; r /= sum;
      g = green; g /= sum;
      b = blue; b /= sum;
      r *= 256; g *= 256; b *= 256;
      Serial.print("\t");
      Serial.print((int)r, HEX); Serial.print((int)g, HEX);Serial.print((int)b, HEX);
      Serial.println();
    
    //Serial.print((int)r); Serial.print(" "); Serial.print((int)g); Serial.println((int)b );
    
      analogWrite(SER, gammatable[(int)r]);
      analogWrite(RCLK, gammatable[(int)g]);
      analogWrite(SRCLR, gammatable[(int)b]);
    }
    
```
CC BY-SA 4.0
2022-10-16T13:19:23.903
91633
2022-10-16T16:25:07.810
2022-10-16T16:25:07.810
3060
54811
question
arduino
Arduinoでセンサー２つを使ってLEDを制御するプログラムを組みたい