Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for updated Adafruit 2.4 and 3.5 TFT FeatherWings and HUZZAH32 board #613

Merged
merged 4 commits into from
Jan 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
matrix:
environment:
- out: adafruit
env: "huzzah32-featherwing-24 -e huzzah32-featherwing-35"
env: "huzzah32-featherwing-24 -e huzzah32-featherwing-35 -e huzzah32-featherwing-24-v2 -e huzzah32-featherwing-35-v2 -e huzzah32-v2-featherwing-24-v2 -e huzzah32-v2-featherwing-35-v2"
- out: az-touch
env: "az-touch-mod-esp32_ili9341_4MB -e az-touch-mod-esp32_ili9341_8MB"
- env: d1-mini-esp32_ili9341
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
- name: Run PlatformIO
run: pio run -e esp32-touchdown -e freetouchdeck_4MB -e freetouchdeck_8MB
- name: Run PlatformIO
run: pio run -e huzzah32-featherwing-24 -e huzzah32-featherwing-35
run: pio run -e huzzah32-featherwing-24 -e huzzah32-featherwing-35 -e huzzah32-featherwing-24-v2 -e huzzah32-featherwing-35-v2 -e huzzah32-v2-featherwing-24-v2 -e huzzah32-v2-featherwing-35-v2
- name: Run PlatformIO
run: pio run -e lanbon_l8
- name: Run PlatformIO
Expand Down
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[submodule "lib/freetype"]
path = lib/freetype
url = https://github.com/fvanroie/freetype


4 changes: 4 additions & 0 deletions platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,10 @@ lib_deps =
lib_deps =
git+https://github.com/aselectroworks/Arduino-FT6336U.git

[tsc2007]
lib_deps =
git+https://github.com/adafruit/Adafruit_TSC2007.git

[gsl1680]
lib_deps =
git+https://github.com/arovak/GSL2038.git
Expand Down
6 changes: 6 additions & 0 deletions platformio_override-template.ini
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ extra_default_envs =
; d1-r32-unoshield_ili9341_adc
; d1-r32-unoshield_ili9486_adc
; d1-r32-waveshare_ili9486
; esp32s2-featherwing-24-v2
; esp32s2-featherwing-35-v2
; esp32-2432s028r_4MB
; esp32-3248s035c_4MB
; esp32-3248s035c_4MB_lovyan
Expand All @@ -44,7 +46,11 @@ extra_default_envs =
; freetouchdeck-s3_8MB
; gs-t3e_16MB
; huzzah32-featherwing-24
; huzzah32-featherwing-24-v2
; huzzah32-v2-featherwing-24-v2
; huzzah32-featherwing-35
; huzzah32-featherwing-35-v2
; huzzah32-v2-featherwing-35-v2
; lanbon_l8
; lanbon_l8_eth
; lilygo-lily-pi_ili9481
Expand Down
3 changes: 3 additions & 0 deletions src/drv/touch/touch_driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ class BaseTouch {
#elif TOUCH_DRIVER == 0x1680
#warning Building for GSL1680
#include "touch_driver_gslx680.h"
#elif TOUCH_DRIVER == 0x2007
#warning Building for TSC2007
#include "touch_driver_tsc2007.h"
#elif defined(LGFX_USE_V1)
#warning Building for LovyanGfx Touch
#include "touch_driver_lovyangfx.h"
Expand Down
104 changes: 104 additions & 0 deletions src/drv/touch/touch_driver_tsc2007.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
/* MIT License - Copyright (c) 2019-2022 Francis Van Roie
For full license information read the LICENSE file in the project folder */

#ifndef HASP_TSC2007_TOUCH_DRIVER_H
#define HASP_TSC2007_TOUCH_DRIVER_H

#if defined(ARDUINO) && !defined(HASP_USE_LGFX_TOUCH)
#include <Arduino.h>
#include "ArduinoLog.h"
#include "hasp_conf.h"

#include <Wire.h>
#include "Adafruit_TSC2007.h"

#include "touch_driver.h" // base class
#include "touch_helper.h" // i2c scanner

#include "hasp_debug.h"

#include "../../hasp/hasp.h" // for hasp_sleep_state
extern uint8_t hasp_sleep_state;

// This is calibration data for the raw touch data to the screen coordinates
#define TS_MINX 150
#define TS_MINY 130
#define TS_MAXX 3800
#define TS_MAXY 4000
#define TS_MIN_PRESSURE 100

namespace dev {

class TouchTsc2007 : public BaseTouch {
public:
Adafruit_TSC2007* ts;

IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
{
uint16_t x, y, z1, z2;
if (ts->read_touch(&x, &y, &z1, &z2) && (z1 > TS_MIN_PRESSURE)) {
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle

data->state = LV_INDEV_STATE_PR;
hasp_set_sleep_offset(0); // Reset the offset

// Scale from ~0->4000 to tft.width using the calibration #'s
x = map(x, TS_MINX, TS_MAXX, 0, TFT_WIDTH);
y = map(y, TS_MINY, TS_MAXY, 0, TFT_HEIGHT);

// LOG_INFO(TAG_DRVR, F("Touch point: %i, %i"), x, y);

#if defined(TOUCH_SWAP_XY) && (TOUCH_SWAP_XY)
data->point.x = y;
data->point.y = x;
#else
data->point.x = x;
data->point.y = y;
#endif

#if defined(TOUCH_INVERSE_X) && (TOUCH_INVERSE_X)
data->point.x = _width_max - x;
#endif
#if defined(TOUCH_INVERSE_Y) && (TOUCH_INVERSE_Y)
data->point.y = _height_max - y;
#endif

} else {
data->state = LV_INDEV_STATE_REL;
}

/*Return `false` because we are not buffering and no more data to read*/
return false;
}

void init(int w, int h)
{
_height_max = h - 1;
_width_max = w - 1;

// tsc2007_touch = new Adafruit_TSC2007();
LOG_VERBOSE(TAG_DRVR, F("%s %d"), __FILE__, __LINE__);

ts = new Adafruit_TSC2007();

// Startup sequence CONTROLLER parT
if (!ts->begin()) {
LOG_INFO(TAG_DRVR, F("Failed to find Adafruit TSC2007 chip"));
while (1) { delay(10); }
}
LOG_INFO(TAG_DRVR, F("Found Adafruit TSC2007 chip"));
}

private:
uint16_t _width_max;
uint16_t _height_max;
};

} // namespace dev

using dev::TouchTsc2007;
dev::TouchTsc2007 haspTouch;

#endif // ARDUINO

#endif // HASP_TSC2007_TOUCH_DRIVER_H
31 changes: 31 additions & 0 deletions user_setups/esp32/huzzah32-featherwing-24-v2.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
;***************************************************;
; HUZZAH32 ESP32 with Featherwing TFT 2.4" V2 ;
; - HUZZAH32 esp32 board ;
; - ili9341 TFT Featherwing 2.4" V2 ;
; - TSC2007 touch controller ;
;***************************************************;

[env:huzzah32-featherwing-24-v2]
extends = arduino_esp32_v2, flash_4mb
board = featheresp32

build_flags =
-D HASP_MODEL="Adafruit HUZZAH32 ESP32 Featherwing 2.4 V2"
${arduino_esp32_v2.build_flags}
${esp32.no_ps_ram}

;region -- TFT_eSPI build options ------------------------
${lcd.featherwing-24-v2}
-D TFT_MISO=19
-D TFT_MOSI=18
-D TFT_SCLK=5
-D TFT_DC=33
-D TFT_CS=15
-D TFT_RST=-1 ; RST
-D TFT_BCKL=21 ; Solder the LITE pad to a PWM enabled pin of the ESP, like GPIO 21
;endregion

lib_deps =
${arduino_esp32_v2.lib_deps}
${tft_espi.lib_deps}
${tsc2007.lib_deps}
32 changes: 32 additions & 0 deletions user_setups/esp32/huzzah32-featherwing-35-v2.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
;***************************************************;
; HUZZAH32 ESP32 with Featherwing TFT 3.5" V2 ;
; - HUZZAH32 esp32 board ;
; - HX8357D TFT Featherwing 3.5" V2 ;
; - TSC2007 touch controller ;
;***************************************************;

[env:huzzah32-featherwing-35-v2]
extends = arduino_esp32_v2, flash_4mb
board = featheresp32

build_flags =
-D HASP_MODEL="Adafruit HUZZAH32 ESP32 Featherwing 3.5 V2"
${arduino_esp32_v2.build_flags}
${esp32.no_ps_ram}

-D LV_INDEV_DEF_READ_PERIOD=30
;region -- TFT_eSPI build options ------------------------
${lcd.featherwing-35-v2}
-D TFT_MISO=19
-D TFT_MOSI=18
-D TFT_SCLK=5
-D TFT_DC=10
-D TFT_CS=9
-D TFT_RST=-1 ; RST
-D TFT_BCKL=21 ; Solder the LITE pad to a PWM enabled pin of the ESP, like GPIO 21
;endregion

lib_deps =
${arduino_esp32_v2.lib_deps}
${tft_espi.lib_deps}
${tsc2007.lib_deps}
31 changes: 31 additions & 0 deletions user_setups/esp32/huzzah32-v2-featherwing-24-v2.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
;***************************************************;
; HUZZAH32 V2 ESP32 with Featherwing TFT 2.4" V2 ;
; - HUZZAH32 V2 w/ 2 MB PSRAM board ;
; - ili9341 TFT Featherwing 2.4" V2 ;
; - TSC2007 touch controller ;
;***************************************************;

[env:huzzah32-featherwing-24-v2]
extends = arduino_esp32_v2, flash_4mb
board = featheresp32

build_flags =
-D HASP_MODEL="Adafruit HUZZAH32 V2 ESP32 Featherwing 2.4 V2"
${arduino_esp32_v2.build_flags}
${esp32.ps_ram}

;region -- TFT_eSPI build options ------------------------
${lcd.featherwing-24-v2}
-D TFT_MISO=19
-D TFT_MOSI=18
-D TFT_SCLK=5
-D TFT_DC=33
-D TFT_CS=15
-D TFT_RST=-1 ; RST
-D TFT_BCKL=21 ; Solder the LITE pad to a PWM enabled pin of the ESP, like GPIO 21
;endregion

lib_deps =
${arduino_esp32_v2.lib_deps}
${tft_espi.lib_deps}
${tsc2007.lib_deps}
31 changes: 31 additions & 0 deletions user_setups/esp32/huzzah32-v2-featherwing-35-v2.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
;***************************************************;
; HUZZAH32 V2 ESP32 with Featherwing TFT 3.5" V2 ;
; - HUZZAH32 V2 w/ 2 MB PSRAM board ;
; - HX8357D TFT Featherwing 3.5" V2 ;
; - TSC2007 touch controller ;
;***************************************************;

[env:huzzah32-v2-featherwing-35]
extends = arduino_esp32_v2, flash_4mb
board = featheresp32

build_flags =
-D HASP_MODEL="Adafruit HUZZAH32 V2 ESP32 Featherwing 3.5 V2"
${arduino_esp32_v2.build_flags}
${esp32.ps_ram}
-D LV_INDEV_DEF_READ_PERIOD=30
;region -- TFT_eSPI build options ------------------------
${lcd.featherwing-35-v2}
-D TFT_MISO=19
-D TFT_MOSI=18
-D TFT_SCLK=5
-D TFT_DC=10
-D TFT_CS=9
-D TFT_RST=-1 ; RST
-D TFT_BCKL=21 ; Solder the LITE pad to a PWM enabled pin of the ESP, like GPIO 21
;endregion

lib_deps =
${arduino_esp32_v2.lib_deps}
${tft_espi.lib_deps}
${tsc2007.lib_deps}
40 changes: 40 additions & 0 deletions user_setups/esp32s2/esp32s2-featherwing-24-v2.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
;***************************************************;
; Adafruit ESP32-S2 with Featherwing TFT 2.4" V2 ;
; - ESP32-S2 w/ 2 MB PSRAM board ;
; - ili9341 TFT Featherwing 2.4" V2 ;
; - TSC2007 touch controller ;
;***************************************************;

[env:esp32s2-featherwing-24-v2]
extends = esp32s2_4mb_v2
board = esp32s2

build_flags =
${env.build_flags}
${esp32s2.build_flags}
${esp32.ps_ram}
-D HASP_MODEL="Adafruit ESP32-S2 Featherwing 2.4 V2"
-D USE_HSPI_PORT

;region -- TFT_eSPI build options ------------------------
${lcd.featherwing-24-v2}
-D LGFX_USE_V1=1
-D TFT_MISO=19
-D TFT_MOSI=18
-D TFT_SCLK=5
-D TFT_DC=33
-D TFT_CS=15
-D TFT_RST=-1 ; RST
-D TFT_BCKL=21 ; Solder the LITE pad to a PWM enabled pin of the ESP, like GPIO 21
;endregion

lib_deps =
${env.lib_deps}
${esp32s2.lib_deps}
${lovyangfx.lib_deps}
${tsc2007.lib_deps}

lib_ignore =
${env.lib_ignore}
${esp32s2.lib_ignore}
TFT_eSPI
40 changes: 40 additions & 0 deletions user_setups/esp32s2/esp32s2-featherwing-35-v2.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
;***************************************************;
; Adafruit ESP32-S2 with Featherwing TFT 3.5" V2 ;
; - ESP32-S2 w/ 2 MB PSRAM board ;
; - HX8357D TFT Featherwing 3.5" V2 ;
; - TSC2007 touch controller ;
;***************************************************;

[env:esp32s2-featherwing-24-v2]
extends = esp32s2_4mb_v2
board = esp32s2

build_flags =
${env.build_flags}
${esp32s2.build_flags}
${esp32.ps_ram}
-D HASP_MODEL="Adafruit ESP32-S2 Featherwing 3.5 V2"
-D USE_HSPI_PORT

;region -- TFT_eSPI build options ------------------------
${lcd.featherwing-35-v2}
-D LGFX_USE_V1=1
-D TFT_MISO=19
-D TFT_MOSI=18
-D TFT_SCLK=5
-D TFT_DC=10
-D TFT_CS=9
-D TFT_RST=-1 ; RST
-D TFT_BCKL=21 ; Solder the LITE pad to a PWM enabled pin of the ESP, like GPIO 21
;endregion

lib_deps =
${env.lib_deps}
${esp32s2.lib_deps}
${tsc2007.lib_deps}
${lovyangfx.lib_deps}

lib_ignore =
${env.lib_ignore}
${esp32s2.lib_ignore}
TFT_eSPI
Loading