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);
}








