Hi there, it's me again. I am trying to integrate a nextion display into a project. I am trying to have the servo go from 5 through 175 degrees. After that I want it to listen to the display and have the display control the servo until the input from the display is greater than 100. After that I want it to loop again. The code below is what I thought would work but it doesn't. If you have any other ideas I would love to hear.
#include "Nextion.h"
#include <Servo.h>
Servo myservo;
int number = 90;
void n0PopCallback(void *ptr);
void b0PopCallback(void *ptr);
void b1PopCallback(void *ptr);
/*
Declare a number object [page id:0,component id:3, component name: "n0"].
*/
NexNumber n0 = NexNumber(0, 3, "n0");
NexButton b0 = NexButton(0, 1, "b0");
NexButton b1 = NexButton(0, 2, "b1");
char buffer[10] = {0};
/*
Register object n0, b0, b1, to the touch event list.
*/
NexTouch *nex_listen_list[] =
{
&n0,
&b0,
&b1,
NULL
};
// number component pop callback function.
void n0PopCallback(void *ptr)
{
dbSerialPrintln("n0PopCallback");
n0.setValue(50);
}
// Button0 component pop callback function.
// In this example,the value of the number component will plus one every time when button0 is released.
void b0PopCallback(void *ptr) {
uint32_t number;
dbSerialPrintln("b0PopCallback");
n0.getValue(&number);
if (number >= 175) {
number = 175;
}
else {
number += 5;
myservo.write(number);
}
n0.setValue(number);
return number;
}
/*
Button1 component pop callback function.
n0.getValue(&number);
In this example,the value of the number component will minus one every time when button1 is released.
*/
void b1PopCallback(void *ptr) {
uint32_t number;
dbSerialPrintln("b1PopCallback");
n0.getValue(&number);
if (number <= 5) {
number = 5;
}
else {
number -= 5;
myservo.write(number);
}
n0.setValue(number);
return number;
}
void setup()
{
/* Set the baudrate which is for debug and communicate with Nextion screen. */
nexInit();
myservo.attach(9);
/* Register the pop event callback function of the current number component. */
n0.attachPop(n0PopCallback);
b0.attachPop(b0PopCallback);
b1.attachPop(b1PopCallback);
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.
*/
myservo.write(5);
delay(1000);
myservo.write(175);
delay(1000);
//This sub routine is supposed to run until the servo reaches an angle of 100
subRoutine();
}
void subRoutine() {
// number = nexLoop(nex_listen_list);
number = nex_listen_list;
while (number < 100) {
number = nex_listen_list;
}