M5STACK(9) LCDについて その5

ブログランキング・にほんブログ村へ

M5Stackに装備されているTFTカラーLCDにグラデーション表示してみました。

スケッチ

このスケッチは、

https://wak-tech.com/archives/1791

を参考にさせていただきました。

#include <M5Stack.h>

//rgbを色に変換して指定座標に描画
void setRGB(int r, int g, int b, int posx, int posy){
  uint16_t color = M5.Lcd.color565(r,g,b);
  M5.Lcd.drawPixel(posx,posy,color);
}

void setGradation(int r, int g, int b, int changecolor){
  int red = r;
  int green = r;
  int blue = r;
  for(int y = 0; y < 240; y++){
    for(int x = 0; x < 320; x++){
        if(changecolor == 1){
          red = x/320.0 * r;
          green = (1.0 - y/240.0)*g;
          blue = (1.0 - y/240.0)*b;
        }else if (changecolor == 2){
          green = x/320.0 * g;
          red = (1.0 - y/240.0)*r;
          blue = (1.0 - y/240.0)*b;          
        }else if (changecolor == 3){
          blue = x/320.0 * b;
          green = (1.0 - y/240.0)*g;
          red = (1.0 - y/240.0)*r;
        }
        setRGB(red,green,blue,x,y);
    }
  }
}

void setup() {
  M5.begin(true, true, true, true);
  M5.Lcd.fillScreen(BLACK);
  delay(1000);
}

void loop() {
  setGradation(255,0,0,1);
  delay(1000);
  setGradation(255,100,100,1);
  delay(1000);    
  setGradation(255,255,255,1);
  delay(1000);    
  setGradation(0,255,0,2);
  delay(1000);    
  setGradation(100,255,100,2);
  delay(1000);    
  setGradation(255,255,255,2);
  delay(1000);    
  setGradation(0,0,255,3);
  delay(1000);    
  setGradation(100,100,255,3);
  delay(1000);    
  setGradation(255,255,255,3);
  delay(1000);    

}

実行結果








ブログランキング・にほんブログ村へ

コメントを残す

メールアドレスが公開されることはありません。