Good day,
I would like to ask for some guidance, please.
I have a setup. When loading the code for each component separately, they work fine (independently). However, I tried to combine the three codes together (WIP) which produces the following error:
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1206:11: warning: extra tokens at end of #endif directive [-Wendif-labels]
#endif;
^
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp: In member function 'char* DS3231::dateFormat(const char*, RTCDateTime)':
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:173:10: warning: address of local variable 'buffer' returned [-Wreturn-local-addr]
char buffer[255];
^~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp: In member function 'char* DS3231::dateFormat(const char*, RTCAlarmTime)':
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:301:10: warning: address of local variable 'buffer' returned [-Wreturn-local-addr]
char buffer[255];
^~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp: In member function 'char* DS3231::strDayOfWeek(uint8_t)':
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:960:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "Monday";
^~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:963:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "Tuesday";
^~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:966:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "Wednesday";
^~~~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:969:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "Thursday";
^~~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:972:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "Friday";
^~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:975:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "Saturday";
^~~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:978:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "Sunday";
^~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:981:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "Unknown";
^~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp: In member function 'char* DS3231::strMonth(uint8_t)':
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:989:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "January";
^~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:992:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "February";
^~~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:995:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "March";
^~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:998:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "April";
^~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1001:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "May";
^~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1004:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "June";
^~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1007:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "July";
^~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1010:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "August";
^~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1013:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "September";
^~~~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1016:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "October";
^~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1019:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "November";
^~~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1022:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "December";
^~~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1025:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "Unknown";
^~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp: In member function 'char* DS3231::strAmPm(uint8_t, bool)':
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1035:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "AM";
^~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1038:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "am";
^~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1044:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "PM";
^~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1047:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "pm";
^~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp: In member function 'char* DS3231::strDaySufix(uint8_t)':
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1056:16: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "st";
^~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1060:16: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "nd";
^~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1064:16: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "rd";
^~~~
C:\Program Files (x86)\Arduino\libraries\DS3231\DS3231.cpp:1067:12: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
return "th";
^~~~
Sketch uses 5520 bytes (17%) of program storage space. Maximum is 32256 bytes.
Global variables use 490 bytes (23%) of dynamic memory, leaving 1558 bytes for local variables. Maximum is 2048 bytes.
The upload still completes, but the components do not function.
Here is the code:
// CLOCK
// SEMI-FINAL_RTC Clock. WORKS WHEN SECONDARY ARDUINO SDA/SCL NOT CONNECTED, OR SDA/SCL CONNECTED WITH POWER.
// DOES NOT WORK WHEN SDA/SCL FROM SECONDARY ARDUINO CONNECTED WITHOUT POWER TO SECOND ARDUINO.
//////////////////////////////////////////// HEADERS ///////////////////////////////////////////////////////////
#include <Wire.h> // CLOCK
#include <DS3231.h> // CLOCK
#include <LiquidCrystal.h> // LCD
//////////////////////////////////////// GLOBAL VARIABLES ///////////////////////////////////////////////////////////
// CLOCK
DS3231 clock;
RTCDateTime dt;
// PIR
int pirLED = 13;
int pirPin = 2;
int pirValue;
// LCD
LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // initialize the library with the numbers of the interface pins
void setup()
{
// PIR
pinMode(pirLED, OUTPUT); // only required if 13
pinMode(pirPin, INPUT);
digitalWrite(pirLED, LOW);
Serial.begin(9600);
// CLOCK
Serial.println("Initialize RTC module");
clock.begin(); // Initialize DS3231
// LCD
lcd.begin(16, 2); // LCD: set up the LCDs number of columns and rows:
lcd.print("Hello, World!"); // Print a message to the LCD.
}
void loop()
{
int time = getTime(); // CLOCK Time in seconds (can change using function below)
checkPir(); // PIR
setLCD();
}
// CLOCK
int getTime()
{
dt = clock.getDateTime();
// For leading zero look to DS3231_dateformat example
delay(1000);
Serial.println(dt.second); // CLOCK
return (dt.second);
}
void checkPir()
{
pirValue = digitalRead(pirPin);
digitalWrite(pirLED, pirValue);
if (pirValue == 1)
Serial.println(pirValue);
else if (pirValue == 0)
Serial.println(pirValue);
else
Serial.println("No reading");
delay(200);
}
void setLCD()
{
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
//lcd.print("Hello, World!");
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis() / 1000);
}
Here is a sketch of my setup (the second Arduino and its connections are currently not connected) and the components not mentioned in the code are not of importance/in-use for now:
I looked at the forums for similar problems, and I found this link:
which gave direction, but is not exactly the same. I took a quick look at the DS3231.cpp and DS3231.h files and found the references to char, but wasn't sure how to find the string relevant part or how to correct it. Also, I don't know if this is actually the problem, otherwise what I am actually looking for? I'm significantly out of my depth here - any assistance would be highly appreciated.