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