Welcome. I'm a very beginner user so please bear with me. I found a project on YT to control the roller blind using the Nextion display with a ready-made code. There are tons of bugs after verification in the IDE. I have a problem with them, what's going on? Best regards
#include <Nextion.h>
#include <DS3231.h>
const int motor_up = 5;
const int motor_down = 6;
int motor_running_time =20000;
unsigned long previousMillis500=0;
unsigned long previousMillis2000=0;
unsigned long previousMillisCooldown=0;
unsigned long previousMillis20000=0;
unsigned long currentMillis=0;
int interval500 = 500;
int interval2000=2000;
int interval20000=20000;
bool up_pressed=0;`Tekst sformatowany`
bool down_pressed=0;
bool up_running=0;
bool down_running=0;
bool auto_running_up=0;
bool auto_running_down=0;
bool cooldown=0;
uint32_t x2val=20;
uint32_t x3val=0;
uint32_t x4val=14;
uint32_t x5val=0;
bool first_time=0;
Time tajm;
DS3231 rtc(SDA, SCL);
NexButton b0=NexButton(0,1,"b0");
NexButton b1=NexButton(0,2,"b1");
NexButton b2=NexButton(0,4,"b2");
NexVariable x2=NexVariable(0,9,"x2");
NexVariable x3=NexVariable(0,10,"x3");
NexVariable x4=NexVariable(0,12,"x4");
NexVariable x5=NexVariable(0,13,"x5");
NexText t1=NexText(0,3,"t1");
uint32_t hour_up_x2 = 20;
uint32_t minute_up_x3 =0;
uint32_t hour_down_x4 = 14;
uint32_t minute_down_x5 = 0;
NexTouch *nex_listen_list[]={
&b0,
&b1,
&b2,
NULL};
void b0PopCallback(void *ptr)
{
up_pressed=1;
if(up_running==0 && down_running==0 && auto_running_up==0 && auto_running_down==0)
{
digitalWrite(motor_up,HIGH);
up_running=1;
Serial.print("b0.pic=");
Serial.print(16);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
up_pressed=0;
}
else if(up_running==1)
{
digitalWrite(motor_up,LOW);
up_running=0;
Serial.print("b0.pic=");
Serial.print(12);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
up_pressed=0;
}
}
void b1PopCallback(void *ptr)
{
down_pressed=1;
if(down_running==0 && up_running==0 && auto_running_up==0 && auto_running_down==0)
{
digitalWrite(motor_down,HIGH);
down_running=1;
Serial.print("b1.pic=");
Serial.print(15);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
down_pressed=0;
}
else if(down_running==1)
{
digitalWrite(motor_down,LOW);
down_running=0;
Serial.print("b1.pic=");
Serial.print(14);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
down_pressed=0;
}
}
void b2PopCallback(void *ptr)
{
x2.getValue(&hour_up_x2);
x3.getValue(&minute_up_x3);
x4.getValue(&hour_down_x4);
x5.getValue(&minute_down_x5);
x2val=hour_up_x2;
x3val=minute_up_x3;
x4val=hour_down_x4;
x5val=minute_down_x5;
}
void setup() {
// put your setup code here, to run once:
nexInit();
Serial.begin(9600);
delay(500);
Serial.print("baud=115200");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.end();
Serial.begin(115200);
b0.attachPop(b0PopCallback,&b0);
b1.attachPop(b1PopCallback,&b1);
b2.attachPop(b2PopCallback,&b2);
pinMode(motor_up,OUTPUT);
pinMode(motor_down,OUTPUT);
rtc.begin(); // Initialize the rtc object
currentMillis=millis();
previousMillis500=currentMillis;
previousMillis20000=currentMillis;
hour_up_x2 = 20;
minute_up_x3 =0;
hour_down_x4 = 14;
minute_down_x5 = 0;
//rtc.setTime(20, 19, 0); // Set the time to 12:00:00 (24hr format)
//rtc.setDate(12, 8, 2021); // Set the date to January 1st, 2014
//rtc.setDOW(WEDNESDAY);
}
void loop() {
nexLoop(nex_listen_list);
currentMillis = millis();
if(currentMillis - previousMillis500 >= interval500)
{
previousMillis500 = currentMillis;
t1.setText(rtc.getTimeStr());
tajm=rtc.getTime();
x2.getValue(&x2val);
x3.getValue(&x3val);
x4.getValue(&x4val);
x5.getValue(&x5val);
if(hour_up_x2!=x2val)
{
Serial.print("x2.pco=");
Serial.print(52825);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else if(hour_up_x2==x2val)
{
Serial.print("x2.pco=");
Serial.print(65535);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
if(minute_up_x3!=x3val)
{
Serial.print("x3.pco=");
Serial.print(52825);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else if(minute_up_x3==x3val)
{
Serial.print("x3.pco=");
Serial.print(65535);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
if(hour_down_x4!=x4val)
{
Serial.print("x4.pco=");
Serial.print(52825);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else if(hour_down_x4==x4val)
{
Serial.print("x4.pco=");
Serial.print(65535);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
if(minute_down_x5!=x5val)
{
Serial.print("x5.pco=");
Serial.print(52825);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
else if(minute_down_x5==x5val)
{
Serial.print("x5.pco=");
Serial.print(65535);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}
}
currentMillis = millis();
if(currentMillis - previousMillis2000 >= 2000)
{
previousMillis2000 = currentMillis;
if(tajm.hour==hour_up_x2 && tajm.min==minute_up_x3 && up_running==0 && down_running==0 && auto_running_up==0 && auto_running_down==0 &&cooldown==0)
{
digitalWrite(motor_up,HIGH);
Serial.print("b0.pic=");
Serial.print(16);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
auto_running_up=1;
previousMillis20000=millis();
currentMillis=millis();
cooldown=1;
}
if(tajm.hour==hour_down_x4 && tajm.min==minute_down_x5 && up_running==0 && down_running==0 && auto_running_up==0 && auto_running_down==0 && cooldown==0)
{
digitalWrite(motor_down,HIGH);
Serial.print("b1.pic=");
Serial.print(15);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
auto_running_down=1;
previousMillis20000=millis();
currentMillis=millis();
cooldown=1;
}
if(auto_running_up==1)
{
currentMillis=millis();
if(currentMillis-previousMillis20000>motor_running_time)
{
digitalWrite(motor_up,LOW);
Serial.print("b0.pic=");
Serial.print(12);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
auto_running_up=0;
previousMillis20000=currentMillis;
previousMillisCooldown=millis();
}
}
if(auto_running_down==1)
{
currentMillis=millis();
if(currentMillis-previousMillis20000>motor_running_time)
{
digitalWrite(motor_down,LOW);
Serial.print("b1.pic=");
Serial.print(14);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
auto_running_down=0;
previousMillis20000=currentMillis;
previousMillisCooldown=millis();
}
}
currentMillis=millis();
if(currentMillis-previousMillisCooldown>100000)
{
cooldown=0;
previousMillisCooldown=millis();
}
}
}
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:32:1: error: 'Time' does not name a type; did you mean 'time'?
Time tajm;
^~~~
time
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:34:21: error: no matching function for call to 'DS3231::DS3231(const uint8_t&, const uint8_t&)'
DS3231 rtc(SDA, SCL);
^
In file included from C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:3:0:
c:\Users\chudk\OneDrive\Dokumenty\Arduino\libraries\DS3231/DS3231.h:73:3: note: candidate: DS3231::DS3231(TwoWire&)
DS3231(TwoWire & w);
^~~~~~
c:\Users\chudk\OneDrive\Dokumenty\Arduino\libraries\DS3231/DS3231.h:73:3: note: candidate expects 1 argument, 2 provided
c:\Users\chudk\OneDrive\Dokumenty\Arduino\libraries\DS3231/DS3231.h:72:3: note: candidate: DS3231::DS3231()
DS3231();
^~~~~~
c:\Users\chudk\OneDrive\Dokumenty\Arduino\libraries\DS3231/DS3231.h:72:3: note: candidate expects 0 arguments, 2 provided
c:\Users\chudk\OneDrive\Dokumenty\Arduino\libraries\DS3231/DS3231.h:68:7: note: candidate: constexpr DS3231::DS3231(const DS3231&)
class DS3231 {
^~~~~~
c:\Users\chudk\OneDrive\Dokumenty\Arduino\libraries\DS3231/DS3231.h:68:7: note: candidate expects 1 argument, 2 provided
c:\Users\chudk\OneDrive\Dokumenty\Arduino\libraries\DS3231/DS3231.h:68:7: note: candidate: constexpr DS3231::DS3231(DS3231&&)
c:\Users\chudk\OneDrive\Dokumenty\Arduino\libraries\DS3231/DS3231.h:68:7: note: candidate expects 1 argument, 2 provided
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:41:1: error: 'NexVariable' does not name a type; did you mean 'nexSerial'?
NexVariable x2=NexVariable(0,9,"x2");
^~~~~~~~~~~
nexSerial
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:42:1: error: 'NexVariable' does not name a type; did you mean 'nexSerial'?
NexVariable x3=NexVariable(0,10,"x3");
^~~~~~~~~~~
nexSerial
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:43:1: error: 'NexVariable' does not name a type; did you mean 'nexSerial'?
NexVariable x4=NexVariable(0,12,"x4");
^~~~~~~~~~~
nexSerial
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:44:1: error: 'NexVariable' does not name a type; did you mean 'nexSerial'?
NexVariable x5=NexVariable(0,13,"x5");
^~~~~~~~~~~
nexSerial
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino: In function 'void b2PopCallback(void*)':
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:120:3: error: 'x2' was not declared in this scope
x2.getValue(&hour_up_x2);
^~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:120:3: note: suggested alternative: 'b2'
x2.getValue(&hour_up_x2);
^~
b2
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:121:3: error: 'x3' was not declared in this scope
x3.getValue(&minute_up_x3);
^~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:121:3: note: suggested alternative: 'A3'
x3.getValue(&minute_up_x3);
^~
A3
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:122:3: error: 'x4' was not declared in this scope
x4.getValue(&hour_down_x4);
^~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:122:3: note: suggested alternative: 'A4'
x4.getValue(&hour_down_x4);
^~
A4
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:123:3: error: 'x5' was not declared in this scope
x5.getValue(&minute_down_x5);
^~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:123:3: note: suggested alternative: 'A5'
x5.getValue(&minute_down_x5);
^~
A5
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino: In function 'void setup()':
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:156:7: error: 'class DS3231' has no member named 'begin'
rtc.begin(); // Initialize the rtc object
^~~~~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino: In function 'void loop()':
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:186:20: error: 'class DS3231' has no member named 'getTimeStr'; did you mean 'getMinute'?
t1.setText(rtc.getTimeStr());
^~~~~~~~~~
getMinute
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:188:5: error: 'tajm' was not declared in this scope
tajm=rtc.getTime();
^~~~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:188:5: note: suggested alternative: 'tm'
tajm=rtc.getTime();
^~~~
tm
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:188:14: error: 'class DS3231' has no member named 'getTime'; did you mean 'getA1Time'?
tajm=rtc.getTime();
^~~~~~~
getA1Time
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:190:5: error: 'x2' was not declared in this scope
x2.getValue(&x2val);
^~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:190:5: note: suggested alternative: 'b2'
x2.getValue(&x2val);
^~
b2
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:191:1: error: 'x3' was not declared in this scope
x3.getValue(&x3val);
^~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:191:1: note: suggested alternative: 'A3'
x3.getValue(&x3val);
^~
A3
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:192:1: error: 'x4' was not declared in this scope
x4.getValue(&x4val);
^~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:192:1: note: suggested alternative: 'A4'
x4.getValue(&x4val);
^~
A4
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:193:1: error: 'x5' was not declared in this scope
x5.getValue(&x5val);
^~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:193:1: note: suggested alternative: 'A5'
x5.getValue(&x5val);
^~
A5
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:277:8: error: 'tajm' was not declared in this scope
if(tajm.hour==hour_up_x2 && tajm.min==minute_up_x3 && up_running==0 && down_running==0 && auto_running_up==0 && auto_running_down==0 &&cooldown==0)
^~~~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:277:8: note: suggested alternative: 'tm'
if(tajm.hour==hour_up_x2 && tajm.min==minute_up_x3 && up_running==0 && down_running==0 && auto_running_up==0 && auto_running_down==0 &&cooldown==0)
^~~~
tm
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:291:8: error: 'tajm' was not declared in this scope
if(tajm.hour==hour_down_x4 && tajm.min==minute_down_x5 && up_running==0 && down_running==0 && auto_running_up==0 && auto_running_down==0 && cooldown==0)
^~~~
C:\Users\chudk\OneDrive\Dokumenty\Arduino\sketch_curtain1\sketch_curtain1.ino:291:8: note: suggested alternative: 'tm'
if(tajm.hour==hour_down_x4 && tajm.min==minute_down_x5 && up_running==0 && down_running==0 && auto_running_up==0 && auto_running_down==0 && cooldown==0)
^~~~
tm
exit status 1
Compilation error: 'Time' does not name a type; did you mean 'time'?Tekst sformatowany