firmware-base/vendor/sming/Sming/samples/Nextion_Button/app/application.cpp
2026-01-28 16:42:43 +01:00

58 lines
1.5 KiB
C++

#include <SmingCore.h>
#include <Libraries/ITEADLIB_Arduino_Nextion/Nextion.h>
#define GPIO_LED 2
// See this example in action: https://youtu.be/lHk6fqDBHyI
// The HMI file included in this example needs to be compiled
// with the Nextion Editor and uploaded to the Nextion display
// using standard method.
// On WEMOS mini D1 (where this example was tested), the
// Nextion device is connected to RX/TX pins as required.
// BUT it needs to be disconnected when uploading the firmware.
// So the process is:
// 1. Make changes to the cpp code
// 2. Build it using "make"
// 3. Disconnect the Nextion display if it is connected to Rx/Tx.
// 4. Upload firmware (built in step 2) using "make flash".
// 5. Connect Nextion display back again to Rx/Tx.
// Note: I always unplugged the ESP8266 from USB (connecting with computer)
// while fiddling with the connections between ESP8266 and Nextion display.
namespace
{
NexButton b0(0, 1, "b0");
NexText t0(0, 2, "g0");
NexTouch* nex_listen_list[] = {&b0, NULL};
SimpleTimer timerNextion;
void loopNextion()
{
nexLoop(nex_listen_list);
}
void b0PopCallback(void* ptr)
{
static bool ledState = true;
digitalWrite(GPIO_LED, ledState);
// state == false => on
// state == true => off
if(!ledState) {
t0.setText("ESP8266 says: LED is on");
} else {
t0.setText("ESP8266 says: LED is off");
}
ledState = !ledState;
}
} // namespace
void init()
{
pinMode(GPIO_LED, OUTPUT);
nexInit();
b0.attachPop(b0PopCallback, &b0);
timerNextion.initializeMs<100>(loopNextion).start();
}