feat: add basic screen support
This commit is contained in:
parent
c2eb1ba3ba
commit
fce458220b
37
include/TFT_eSPI_Setup_ILI9341_ESP32.h
Normal file
37
include/TFT_eSPI_Setup_ILI9341_ESP32.h
Normal file
@ -0,0 +1,37 @@
|
||||
// See SetupX_Template.h for all options available
|
||||
#define USER_SETUP_ID 42
|
||||
|
||||
#define ILI9341_DRIVER
|
||||
|
||||
#define TFT_MISO 19 // (leave TFT SDO disconnected if other SPI devices share MISO)
|
||||
#define TFT_MOSI 23
|
||||
#define TFT_SCLK 18
|
||||
#define TFT_CS 5 // Chip select control pin
|
||||
#define TFT_DC 2 // Data Command control pin
|
||||
#define TFT_RST 4 // Reset pin (could connect to RST pin)
|
||||
|
||||
// Optional touch screen chip select
|
||||
//#define TOUCH_CS 5 // Chip select pin (T_CS) of touch screen
|
||||
|
||||
#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
|
||||
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
|
||||
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
|
||||
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
|
||||
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:.
|
||||
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
|
||||
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
|
||||
|
||||
#define SMOOTH_FONT
|
||||
|
||||
// TFT SPI clock frequency
|
||||
// #define SPI_FREQUENCY 20000000
|
||||
// #define SPI_FREQUENCY 27000000
|
||||
// #define SPI_FREQUENCY 40000000
|
||||
#define SPI_FREQUENCY 55000000 // STM32 SPI1 only (SPI2 maximum is 27MHz)
|
||||
// #define SPI_FREQUENCY 80000000
|
||||
|
||||
// Optional reduced SPI frequency for reading TFT
|
||||
#define SPI_READ_FREQUENCY 16000000
|
||||
|
||||
// SPI clock frequency for touch controller
|
||||
#define SPI_TOUCH_FREQUENCY 2500000
|
||||
@ -13,4 +13,11 @@ platform = espressif32
|
||||
board = esp32doit-devkit-v1
|
||||
framework = arduino
|
||||
monitor_speed = 115200
|
||||
lib_deps = ruiseixasm/Versatile_RotaryEncoder@^1.3.1
|
||||
lib_deps =
|
||||
ruiseixasm/Versatile_RotaryEncoder@^1.3.1
|
||||
bodmer/TFT_eSPI@^2.5.43
|
||||
build_flags =
|
||||
-Os
|
||||
-D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG
|
||||
-D USER_SETUP_LOADED=1
|
||||
-include $PROJECT_INCLUDE_DIR/TFT_eSPI_Setup_ILI9341_ESP32.h
|
||||
|
||||
43
src/main.cpp
43
src/main.cpp
@ -1,9 +1,15 @@
|
||||
#include <Arduino.h>
|
||||
#include <Versatile_RotaryEncoder.h>
|
||||
#include <SPI.h>
|
||||
#include <TFT_eSPI.h>
|
||||
|
||||
#define SCREEN_WIDTH 320
|
||||
#define SCREEN_HEIGHT 240
|
||||
#define FONT_SIZE 2
|
||||
|
||||
const int ONBOARD_LED_PIN = 2;
|
||||
const int ANALOG_INPUT_PIN = 34;
|
||||
const int ANALOG_OUTPUT_PIN = 32;
|
||||
const int ANALOG_OUTPUT_PIN = 25;
|
||||
|
||||
const int ENTER_BUTTON_PIN = 14;
|
||||
const int ENCODER_A_PIN = 12;
|
||||
@ -20,6 +26,8 @@ void handlePress();
|
||||
void handleRelease();
|
||||
void handleRotate(int8_t rotation);
|
||||
|
||||
TFT_eSPI tft = TFT_eSPI();
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
@ -38,6 +46,17 @@ void setup()
|
||||
|
||||
xTaskCreate(handleToneGeneration, "handleToneGeneration", 2048, NULL, 1, NULL);
|
||||
xTaskCreate(handleInputControls, "handleInputContols", 2048, NULL, 1, NULL);
|
||||
|
||||
tft.init();
|
||||
tft.setRotation(1);
|
||||
delay(100);
|
||||
tft.fillScreen(TFT_BLACK);
|
||||
tft.setTextColor(TFT_WHITE, TFT_BLACK);
|
||||
|
||||
int centerX = SCREEN_WIDTH / 2;
|
||||
int centerY = SCREEN_HEIGHT / 2;
|
||||
tft.drawCentreString("Setup complete.", centerX, centerY, FONT_SIZE);
|
||||
|
||||
Serial.println("setup complete");
|
||||
}
|
||||
|
||||
@ -87,6 +106,12 @@ void handlePress()
|
||||
{
|
||||
Serial.println("Encoder pressed");
|
||||
digitalWrite(ONBOARD_LED_PIN, HIGH);
|
||||
|
||||
int centerX = SCREEN_WIDTH / 2;
|
||||
int centerY = SCREEN_HEIGHT / 2;
|
||||
|
||||
tft.fillScreen(TFT_BLACK);
|
||||
tft.drawCentreString("Button pressed.", centerX, centerY, FONT_SIZE);
|
||||
}
|
||||
|
||||
void handleRelease()
|
||||
@ -95,14 +120,24 @@ void handleRelease()
|
||||
digitalWrite(ONBOARD_LED_PIN, LOW);
|
||||
}
|
||||
|
||||
void handleRotate(int8_t rotation) {
|
||||
void handleRotate(int8_t rotation)
|
||||
{
|
||||
Serial.print("Encoder rotated by ");
|
||||
Serial.println(rotation);
|
||||
if (rotation > 0) {
|
||||
if (rotation > 0)
|
||||
{
|
||||
frequency += 10;
|
||||
} else if (rotation < 0) {
|
||||
}
|
||||
else if (rotation < 0)
|
||||
{
|
||||
frequency -= 10;
|
||||
}
|
||||
Serial.print("Frequency: ");
|
||||
Serial.println(frequency);
|
||||
|
||||
int centerX = SCREEN_WIDTH / 2;
|
||||
int centerY = SCREEN_HEIGHT / 2;
|
||||
|
||||
tft.fillScreen(TFT_BLACK);
|
||||
tft.drawCentreString("Frequency: " + String(frequency) + "Hz", centerX, centerY, FONT_SIZE);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user