M5STACK(9) LCDについて その5
M5Stackに装備されているTFTカラーLCDにグラデーション表示してみました。
スケッチ
このスケッチは、
https://wak-tech.com/archives/1791
を参考にさせていただきました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #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); } |
実行結果
動画プレーヤー
00:00
00:00