//TFT LCD 塗鴨程式
#include <Adafruit_GFX.h>
#include <Adafruit_FT6206.h>
#include <Adafruit_ILI9341.h>
//定義接腳,包括SPI接腳
static byte SPI_PIN_CS = 15;
static byte PIN_DC = 2;
static byte PIN_RST = 5;
static byte PIN_SPI_MOSI=23;
static byte PIN_SPI_SCK=18;
static byte PIN_SPI_MISO=19;
static byte VR_PIN=32;
//定義調色盤寬高
static byte WIDTH = 40;
static byte HEIGHT = 40;
//建立畫點顏色
uint32_t pixelColor;
int scale = 1; //初設畫筆大小
//物件名:tft , 使用SPI接腳 CS,DC,MOSI,SCK,RST,MISO
//Adafruit_ILI9341 tft = Adafruit_ILI9341(SPI_PIN_CS, PIN_DC, PIN_SPI_MOSI, PIN_SPI_SCK, PIN_RST, PIN_SPI_MISO);
Adafruit_ILI9341 tft = Adafruit_ILI9341(SPI_PIN_CS, PIN_DC);//, PIN_SPI_MOSI, PIN_SPI_SCK, PIN_RST, PIN_SPI_MISO);
//SDA=GPIO21 ,SCL=GPIO22 為I2C接腳,控制資料讀取
Adafruit_FT6206 ts = Adafruit_FT6206(); //物件名稱:ts
void setup() {
Serial.begin(115200);
pinMode(VR_PIN, INPUT_PULLUP);
tft.begin(); //初始化
tft.setRotation(2); //轉向
ts.begin(); //觸控啟動
pixelColor = ILI9341_RED; //初設紅色筆
//建立調色盤
tft.fillRect(0,0,40,40,ILI9341_RED);
tft.fillRect(40,0,40,40,ILI9341_GREEN);
tft.fillRect(80,0,40,40,ILI9341_BLUE);
tft.fillRect(120,0,40,40,ILI9341_YELLOW);
tft.fillRect(160,0,40,40,ILI9341_MAGENTA);
tft.fillRect(200,0,40,40,ILI9341_CYAN);
Serial.println("點選顏色,可變線寬,開始塗鴨~~");
}
void loop() {
int dotScale=analogRead(VR_PIN); //讀取可變電阻值0~4095
scale=map(dotScale,0,4095,1,30); //scale轉換為0~30 改變筆寬
TS_Point p; // 建立觸控物件P
if(ts.touched()){ // 若有觸點
p = ts.getPoint();// 取得觸點座標,畫一圓點,半徑為scale
if(p.y > HEIGHT) tft.fillCircle(p.x,p.y,scale,pixelColor);
for(byte x = 0; x < 6; x++){ //觸點的x座標值0~5, 判斷點取之調色盤為何?
//點選色筆,由x軸的座標判斷
if(p.x >= x * WIDTH && p.x <= (x + 1) * WIDTH && p.y <= HEIGHT){
switch(x){
case 0: pixelColor = ILI9341_RED; break; //紅色盤
case 1: pixelColor = ILI9341_GREEN; break; //綠色盤
case 2: pixelColor = ILI9341_BLUE; break; //綠色盤
case 3: pixelColor = ILI9341_YELLOW; break; //黃色盤
case 4: pixelColor = ILI9341_MAGENTA; break;//紫色盤
case 5: pixelColor = ILI9341_CYAN; break; //青色盤
}
}
}
}
}
Loading
ili9341-cap-touch
ili9341-cap-touch