There is a standard example from the Nextion library for working with a button:
/**
* @example CompButton.ino
*
* @par How to Use
* This example shows that when the button component on the Nextion screen is released,
* the text of this button will plus one every time.
*
* @author Wu Pengfei (email:<pengfei.wu@itead.cc>)
* @date 2015/7/10
* @updated 2016/12/25 bring HMI up to v0.32 to avoid too old issues
* @convert by Patrick Martin, no other changes made
* @copyright
* Copyright (C) 2014-2015 ITEAD Intelligent Systems Co., Ltd. \n
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*/
#include "Nextion.h"
/*
* Declare a button object [page id:0,component id:1, component name: "b0"].
*/
NexButton b1 = NexButton(1, 4, "b1");
char buffer[100] = {0};
/*
* Register a button object to the touch event list.
*/
NexTouch *nex_listen_list[] =
{
&b1,
NULL
};
/*
* Button component pop callback function.
* In this example,the button's text value will plus one every time when it is released.
*/
void b1PopCallback(void *ptr)
{
uint16_t len;
uint16_t number;
NexButton *btn = (NexButton *)ptr;
dbSerialPrintln("b0PopCallback");
dbSerialPrint("ptr=");
dbSerialPrintln((uint32_t)ptr);
memset(buffer, 0, sizeof(buffer));
/* Get the text value of button component [the value is string type]. */
btn->getText(buffer, sizeof(buffer));
number = atoi(buffer);
number += 1;
memset(buffer, 0, sizeof(buffer));
itoa(number, buffer, 10);
/* Set the text value of button component [the value is string type]. */
btn->setText(buffer);
}
void setup(void)
{
/* Set the baudrate which is for debug and communicate with Nextion screen. */
nexInit();
/* Register the pop event callback function of the current button component. */
b1.attachPop(b1PopCallback, &b1);
dbSerialPrintln("setup done");
}
void loop(void)
{
/*
* When a pop or push event occured every time,
* the corresponding component[right page id and component id] in touch event list will be asked.
*/
nexLoop(nex_listen_list);
}
I must say right away that my button is on page 2 (page1) (the button id and page number are indicated in the sketch correctly). After loading a sketch if you press button. you will get no reaction (everything is connected correctly).
In the Serial Port I can see this:
19:57:24.513 -> ⸮⸮⸮bkcmd=1⸮⸮⸮page 0⸮⸮⸮
It seems that there is no transition to the second page (page1). If so, what are the possible solutions? I was digging the Internet, but I didn’t find anything .. Thanks.