pull in touch screen, IMU and slow screen wake into hardware
Change-Id: I61b49a6d0551463becbc3bdf1418ac9fde9d9376
This commit is contained in:
parent
9ea98fc208
commit
98ecfb0de2
3 changed files with 56 additions and 41 deletions
|
@ -65,18 +65,18 @@ void HardwareRevX::init() {
|
||||||
|
|
||||||
// Make sure ESP32 is running at full speed
|
// Make sure ESP32 is running at full speed
|
||||||
setCpuFrequencyMhz(240);
|
setCpuFrequencyMhz(240);
|
||||||
|
Serial.begin(115200);
|
||||||
|
|
||||||
wakeup_reason = getWakeReason();
|
wakeup_reason = getWakeReason();
|
||||||
|
setupTouchScreen();
|
||||||
|
|
||||||
|
slowDisplayWakeup();
|
||||||
|
|
||||||
initIO();
|
initIO();
|
||||||
restorePreferences();
|
restorePreferences();
|
||||||
setupBacklight();
|
setupBacklight();
|
||||||
|
setupTFT();
|
||||||
// Setup TFT
|
setupIMU();
|
||||||
tft.init();
|
|
||||||
tft.initDMA();
|
|
||||||
tft.setRotation(0);
|
|
||||||
tft.fillScreen(TFT_BLACK);
|
|
||||||
tft.setSwapBytes(true);
|
|
||||||
|
|
||||||
initLVGL();
|
initLVGL();
|
||||||
}
|
}
|
||||||
|
@ -319,4 +319,46 @@ void HardwareRevX::restorePreferences() {
|
||||||
backlight_brightness = preferences.getUChar("blBrightness");
|
backlight_brightness = preferences.getUChar("blBrightness");
|
||||||
currentDevice = preferences.getUChar("currentDevice");
|
currentDevice = preferences.getUChar("currentDevice");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HardwareRevX::setupTFT() {
|
||||||
|
// Setup TFT
|
||||||
|
tft.init();
|
||||||
|
tft.initDMA();
|
||||||
|
tft.setRotation(0);
|
||||||
|
tft.fillScreen(TFT_BLACK);
|
||||||
|
tft.setSwapBytes(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HardwareRevX::setupTouchScreen() {
|
||||||
|
// Configure i2c pins and set frequency to 400kHz
|
||||||
|
Wire.begin(SDA, SCL, 400000);
|
||||||
|
touch.begin(128); // Initialize touchscreen and set sensitivity threshold
|
||||||
|
}
|
||||||
|
|
||||||
|
void HardwareRevX::setupIMU() {
|
||||||
|
// Setup hal
|
||||||
|
IMU.settings.accelSampleRate =
|
||||||
|
50; // Hz. Can be: 0,1,10,25,50,100,200,400,1600,5000 Hz
|
||||||
|
IMU.settings.accelRange = 2; // Max G force readable. Can be: 2, 4, 8, 16
|
||||||
|
IMU.settings.adcEnabled = 0;
|
||||||
|
IMU.settings.tempEnabled = 0;
|
||||||
|
IMU.settings.xAccelEnabled = 1;
|
||||||
|
IMU.settings.yAccelEnabled = 1;
|
||||||
|
IMU.settings.zAccelEnabled = 1;
|
||||||
|
IMU.begin();
|
||||||
|
uint8_t intDataRead;
|
||||||
|
IMU.readRegister(&intDataRead, LIS3DH_INT1_SRC); // clear interrupt
|
||||||
|
}
|
||||||
|
|
||||||
|
void HardwareRevX::slowDisplayWakeup() {
|
||||||
|
// Slowly charge the VSW voltage to prevent a brownout
|
||||||
|
// Workaround for hardware rev 1!
|
||||||
|
for (int i = 0; i < 100; i++) {
|
||||||
|
digitalWrite(LCD_EN, HIGH); // LCD Logic off
|
||||||
|
delayMicroseconds(1);
|
||||||
|
digitalWrite(LCD_EN, LOW); // LCD Logic on
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(100); // Wait for the LCD driver to power on
|
||||||
}
|
}
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "HardwareAbstractionInterface.h"
|
#include "HardwareAbstractionInterface.h"
|
||||||
#include "WiFi.h"
|
#include "WiFi.h"
|
||||||
|
#include "Wire.h"
|
||||||
#include "lvgl.h"
|
#include "lvgl.h"
|
||||||
#include <Adafruit_FT6206.h>
|
#include <Adafruit_FT6206.h>
|
||||||
#include <Preferences.h>
|
#include <Preferences.h>
|
||||||
|
@ -56,6 +57,12 @@ public:
|
||||||
|
|
||||||
void setupTFT();
|
void setupTFT();
|
||||||
|
|
||||||
|
void setupTouchScreen();
|
||||||
|
|
||||||
|
void setupIMU();
|
||||||
|
|
||||||
|
void slowDisplayWakeup();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void displayFlushImpl(lv_disp_drv_t *disp, const lv_area_t *area,
|
static void displayFlushImpl(lv_disp_drv_t *disp, const lv_area_t *area,
|
||||||
lv_color_t *color_p) {
|
lv_color_t *color_p) {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
// OMOTE firmware for ESP32
|
// OMOTE firmware for ESP32
|
||||||
// 2023 Maximilian Kern
|
// 2023 Maximilian Kern
|
||||||
|
|
||||||
#include "Wire.h"
|
|
||||||
#include <IRrecv.h>
|
#include <IRrecv.h>
|
||||||
#include <IRremoteESP8266.h>
|
#include <IRremoteESP8266.h>
|
||||||
#include <IRsend.h>
|
#include <IRsend.h>
|
||||||
|
@ -100,31 +99,12 @@ void WiFiEvent(WiFiEvent_t event) {
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
|
|
||||||
// --- Startup ---
|
|
||||||
|
|
||||||
Serial.begin(115200);
|
|
||||||
|
|
||||||
// Slowly charge the VSW voltage to prevent a brownout
|
|
||||||
// Workaround for hardware rev 1!
|
|
||||||
for (int i = 0; i < 100; i++) {
|
|
||||||
digitalWrite(LCD_EN, HIGH); // LCD Logic off
|
|
||||||
delayMicroseconds(1);
|
|
||||||
digitalWrite(LCD_EN, LOW); // LCD Logic on
|
|
||||||
}
|
|
||||||
|
|
||||||
delay(100); // Wait for the LCD driver to power on
|
|
||||||
|
|
||||||
// Setup touchscreen
|
|
||||||
Wire.begin(SDA, SCL,
|
|
||||||
400000); // Configure i2c pins and set frequency to 400kHz
|
|
||||||
|
|
||||||
hal = HardwareRevX::getInstance();
|
hal = HardwareRevX::getInstance();
|
||||||
hal->init();
|
hal->init();
|
||||||
|
|
||||||
auto ui = OmoteUI::getInstance(hal);
|
auto ui = OmoteUI::getInstance(hal);
|
||||||
ui->layout_UI();
|
ui->layout_UI();
|
||||||
|
|
||||||
hal->touch.begin(128); // Initialize touchscreen and set sensitivity threshold
|
|
||||||
#ifdef ENABLE_WIFI
|
#ifdef ENABLE_WIFI
|
||||||
// Setup WiFi
|
// Setup WiFi
|
||||||
WiFi.setHostname("OMOTE"); // define hostname
|
WiFi.setHostname("OMOTE"); // define hostname
|
||||||
|
@ -133,20 +113,6 @@ void setup() {
|
||||||
WiFi.setSleep(true);
|
WiFi.setSleep(true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Setup hal->IMU
|
|
||||||
hal->IMU.settings.accelSampleRate =
|
|
||||||
50; // Hz. Can be: 0,1,10,25,50,100,200,400,1600,5000 Hz
|
|
||||||
hal->IMU.settings.accelRange =
|
|
||||||
2; // Max G force readable. Can be: 2, 4, 8, 16
|
|
||||||
hal->IMU.settings.adcEnabled = 0;
|
|
||||||
hal->IMU.settings.tempEnabled = 0;
|
|
||||||
hal->IMU.settings.xAccelEnabled = 1;
|
|
||||||
hal->IMU.settings.yAccelEnabled = 1;
|
|
||||||
hal->IMU.settings.zAccelEnabled = 1;
|
|
||||||
hal->IMU.begin();
|
|
||||||
uint8_t intDataRead;
|
|
||||||
hal->IMU.readRegister(&intDataRead, LIS3DH_INT1_SRC); // clear interrupt
|
|
||||||
|
|
||||||
// Setup IR
|
// Setup IR
|
||||||
IrSender.begin();
|
IrSender.begin();
|
||||||
digitalWrite(IR_VCC, HIGH); // Turn on IR receiver
|
digitalWrite(IR_VCC, HIGH); // Turn on IR receiver
|
||||||
|
|
Loading…
Add table
Reference in a new issue