Hallo, ich habe bei meinem Code eine Fehlermeldung die lautet: In function 'void setup()':
sketch_sep13a:28:21: error: expected primary-expression before ';' token
if (RTC.write(tm;))
Mein ziel ist es die Uhrzeit am Anfang des Programms zu setzen und Anschließend mit noch anderen Werten auf einem Display auszugeben. Leider komme ich selbst nicht auf die Lösung was er da von mir will. Hier mein Code:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Time.h>
#include <DS1307RTC.h>
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_WIDTH 128 // OLED display Breite, in pixels
#define SCREEN_HEIGHT 64 // OLED display Höhe, in pixels
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const char *monthName[12] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
void setup()
{
bool parse=false;
bool config=false;
bool getDate(const char *str);
bool getTime(const char *str);
// get the date and time the compiler was run
if (getDate(__DATE__) && getTime(__TIME__)) {
parse = true;
// and configure the RTC with this info
if (RTC.write(tm;))
{
config = true;
}
}
Serial.begin(9600);
while (!Serial) ; // wait for Arduino Serial Monitor
delay(200);
if (parse && config) {
Serial.print("DS1307 configured Time=");
Serial.print(__TIME__);
Serial.print(", Date=");
Serial.println(__DATE__);
} else if (parse) {
Serial.println("DS1307 Communication Error :-{");
Serial.println("Please check your circuitry");
} else {
Serial.print("Could not parse info from the compiler, Time=\"");
Serial.print(__TIME__);
Serial.print("\", Date=\"");
Serial.print(__DATE__);
Serial.println("\"");
}
}
{
setSyncProvider(RTC.get);
Serial.begin(9600); //Anfang Display Einstellungen
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(25,15); //Startbildschirm
display.print("Welcome");
display.setCursor(25,32);
display.print("OpenPPG");
display.display();
delay(5000); //nach 5sek. wechsel auf Anzeige der Werte
}
}
void loop(){
{
int Hour, Min, Sec;
if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;
tm.Hour = Hour;
tm.Minute = Min;
tm.Second = Sec;
return true;
}
{
char Month[12];
int Day, Year;
uint8_t monthIndex;
if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false;
for (monthIndex = 0; monthIndex < 12; monthIndex++) {
if (strcmp(Month, monthName[monthIndex]) == 0) break;
}
if (monthIndex >= 12) return false;
tm.Day = Day;
tm.Month = monthIndex + 1;
tm.Year = CalendarYrToTm(Year);
return true;
}
{
display.clearDisplay();
tmElements_t tm;
if(RTC.read(tm)){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
print2digits(tm.Hour);
display.write(':');
print2digits(tm.Minute);
display.write(':');
print2digits(tm.Second);
display.setCursor(80,0);
display.setTextSize(1);
display.print(tm.Day);
display.write('.');
display.print(tm.Month);
display.write('.');
display.print(tmYearToCalendar(tm.Year));
display.setCursor(0,10);
display.print("RPM");
display.setCursor(0,20);
display.print("Altitude");
display.setCursor(0,30);
display.print("Temperature");
display.setCursor(0,40);
display.print("Acceleration");
display.setCursor(0,50);
display.print("AMP");
display.display();
}
else
{
if(RTC.chipPresent())
{
display.setTextSize(1);
display.setTextColor(WHITE);
display.print("DS1307 stopped,run set time");
display.display();
}
else
{
display.setTextSize(1);
display.setTextColor(WHITE);
display.print("DS1307 read error,check circuit");
display.display();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number < 10) {
display.write('0');
// display.display();
}
display.print(number);
//display.display();
//display.println();
}
}
Ich denke diesmal habe ich den Code richtig eingefügt.
Danke schon mal.
Mfg John