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

実行結果








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

  • X

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です