/*
* ILI9341 2.8" Touch Screen LCDサンプル
* お絵かきツール
* 参考:https://wokwi.com/projects/385989120810743809
*/
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <Adafruit_FT6206.h>
#define TFT_DC 9
#define TFT_CS 10
// パレットスペース座標
static byte X_SPACE = 33;
static byte Y_SPACE = 33;
uint32_t pixelColor; // ペンの色
int scale = 1; // ペンの太さ
// 液晶ディスプレイ
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
// タッチスクリーン
Adafruit_FT6206 ts = Adafruit_FT6206();
void setup() {
tft.begin();
ts.begin();
tft.setRotation(2);
pixelColor = ILI9341_RED; // 初期色
// パレット描画
tft.fillRect(0, 0, 33, 33, ILI9341_PURPLE);
tft.fillRect(33, 0, 33, 33, ILI9341_MAGENTA);
tft.fillRect(66, 0, 33, 33, ILI9341_CYAN);
tft.fillRect(99, 0, 33, 33, ILI9341_ORANGE);
tft.fillRect(132, 0, 33, 33, ILI9341_GREEN);
tft.fillRect(165, 0, 33, 33, ILI9341_BLUE);
tft.fillRect(198, 0, 33, 33, ILI9341_RED);
}
void loop() {
// タッチされた場所の情報
TS_Point p;
if (ts.touched())
{
// 座標取得
p = ts.getPoint();
// 描画
if (p.y > Y_SPACE) tft.fillCircle(p.x, p.y, scale, pixelColor);
// パレットをタッチしたとき
for (byte x = 0; x < 7; x++)
{
// ペンの色を変更
if ((p.x > x * X_SPACE) && (p.x < (x + 1) * X_SPACE) && (p.y <= Y_SPACE))
{
switch (x)
{
case 0: pixelColor = ILI9341_PURPLE; break;
case 1: pixelColor = ILI9341_MAGENTA; break;
case 2: pixelColor = ILI9341_CYAN; break;
case 3: pixelColor = ILI9341_ORANGE; break;
case 4: pixelColor = ILI9341_GREEN; break;
case 5: pixelColor = ILI9341_BLUE; break;
case 6: pixelColor = ILI9341_RED; break;
}
}
}
}
}
Loading
ili9341-cap-touch
ili9341-cap-touch