Witam
zmajstrowałem sobie na bazie arduino nano sterownik dwóch lamp LED.
Kod który posiadam wyświetla godzinę ,date,temperature zasilacza,sygnał PWM wyrażony w procentach.Kod działa bez problemów.
Wgrywając kod do arduino pobiera on sobieaktualny czas i datę z laptopa.Chciałbym to zmienić i zrobić tak aby datę i czas można było ustawić za pomocą np. 3 przycisków.Znalazłem taki kod ,który wyswietla czas i date i mogę ustawić je przyciskami.Postanowiłem' jakby'' połączyć ze sobą 2 kody i te polecenia które odpowiadają za nastawę czasu i daty przepisałem do mojego pierwszego kodu ,niestety kod nie chce się skompilować .Czy mógłby ktoś mi podpowiedzieć gdzie jest błąd?
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BACKLIGHT_PIN
LiquidCrystal_I2C lcd(0x3F,16,2);
#include "RTClib.h"
#include<OneWire.h>
#define ONE_WIRE_BUS 2
RTC_DS1307 RTC;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int LED1 = 3; //lampa nr 1
int LED2 = 5; // lampa nr 2
int GODZ;
int MIN;
int SEC;
int mocD1; // do syg PWM
int T = 2;
int Ton=45; //temp wł/wył wentylatora
int Toff=27; //temp wł/wył wentylatora
int P1=6; // menu od ustawiania czasu
int P2=7; // przycisk +
int P3=8; // przycisk -
int hourupg;
int minupg;
int yearupg;
int monthupg;
int dayupg;
int menu=0;
void setup()
{
DateTime now = RTC.now();
lcd.setBacklight(HIGH);
lcd.init();
lcd.begin(16,2);
lcd.clear();
Wire.begin();
//czas.adjust(DateTime(__DATE__, __TIME__));
pinMode(P1,INPUT);
pinMode(P2,INPUT);
pinMode(P3,INPUT);
pinMode(T,INPUT); // termometr
pinMode(9,OUTPUT);//wentylator
pinMode(3,OUTPUT); //lampa led 1
pinMode(5,OUTPUT); //lampa led 2
Serial.begin(9600);
sensors.begin();
RTC.begin();
//if(! RTC.isrunning())
{
lcd.println("RTC is NOT running!");
// RTC.adjust(DataTime(_DATE_,_TIME_));
}
int menu=0;
}
void loop()
{
sensors.requestTemperatures();
lcd.setCursor(11,0);
lcd.print(sensors.getTempCByIndex(0));
if ((sensors.getTempCByIndex(0))> Ton)
{
digitalWrite(9,LOW);
}
if ((sensors.getTempCByIndex(0)) < Toff)
{
digitalWrite(9,HIGH);
}
int CZAS = (now.hour()*60+now.minute());// aktualny czas
int dzienG = 13; // rozpoczęcie oświetlenia w godz
int dzienM = 00; // w minutach
int nocG = 22; // ustawienie koniec oswietlenia w godz
int nocM = 00; // w minutach
int maxD1 = 60; // ilosc krokow z tablicy
int STEP = 1;
int ZMIANA =60; //dlugosc rozjasniania lub sciemniania tutaj wynosi 60 min
int czas1=(dzienG*60+dzienM); //obliczenie czas rozjasnienia
int czas2=(nocG*60+nocM); //obl czasu gaszenia
int GODZ=now.hour();
int MIN=now.minute();
int SEC=now.second();
//Serial.print(sensors.requestTemperatures());
static int D1;
int mocD1[61] =
{ 0,5,8,11,14,
18,20,25,
28,30,32,36,40,46,50,
56,58,60,62,68,72,74,78,
80,84,86,90,94,98,106,
112,118,120,124,128,130,
136,138,142,146,150,156,160,164,
172,176,182,184,192,200,
204,208,216,220,228,232,238,
240,244,248,254
};
if (CZAS<czas1)
{
D1= 0;
}
if ((czas1<=CZAS)&&(CZAS<(czas1+ZMIANA)))
{
D1 = ((CZAS-czas1)/STEP);
}
if (((czas1+ZMIANA)<=CZAS)&&(CZAS<(czas2-ZMIANA)))
{
D1 = maxD1;
}
if (((czas2-ZMIANA)<=CZAS)&&(CZAS<czas2))
{
D1 = ((czas2-CZAS)/STEP);
}
if (czas2<=CZAS)
{
D1 = 0;
}
analogWrite(LED1,mocD1[D1]);
analogWrite(LED2,mocD1[D1]);
lcd.setCursor(9,1);
lcd.print("PWM");
lcd.print(' ');
lcd.print((D1*100/maxD1));
lcd.print("%");
if(digitalRead(P1))
{
menu=menu+1;
}
if(menu==0)
{
DisplayDateTime();
}
if (menu==1)
{
DisplaySetHour();
}
if (menu==2)
{
DisplaySetMinute();
}
if (menu==3)
{
DisplaySetYear();
}
if (menu==4)
{
DisplaySetMonth();
}
if (menu==5)
{
DisplaySetDay();
}
if (menu==6)
{
StoreAgg();
delay(500);
menu=0;
}
delay(100);
}
void DisplayDateTime()
{
DateTime now = RTC.now();
lcd.setCursor(0,1);
//lcd.print("Hour");
if (now.hour()<=9)
{
lcd.print("0");
}
lcd.print(now.hour(),DEC);
hourupg=now.hour();
lcd.print(":");
if(now.minute()<=9)
{
lcd.print("0");
}
lcd.print(now.minute(),DEC);
minupg=now.minute();
lcd.print(":");
if (now.second()<=9)
{
lcd.print("0");
}
lcd.print(now.second(),DEC);
lcd.setCursor(0,0);
//lcd.print("Date");
if (now.day()<=9)
{
lcd.print("0");
}
lcd.print(now.day(),DEC);
dayupg=now.day();
lcd.print("/");
if (now.month()<=9)
{
lcd.print("0");
}
lcd.print (now.month(),DEC);
monthupg=now.month();
lcd.print("/");
lcd.print(now.year(),DEC);
yearupg=now.year();
}
void DisplaySetHour()
{
lcd.clear();
DateTime now = RTC.now();
if(digitalRead(P2)==HIGH)
{
if(hourupg==23)
{
hourupg=0;
}
else
{
hourupg=hourupg+1;
}
}
if(digitalRead(P3)==HIGH)
{
if(hourupg==0)
{
hourupg=23;
}
else
{hourupg=hourupg-1;
}
}
lcd.setCursor(0,0);
lcd.print("Set time:");
lcd.setCursor(0,1);
lcd.print(hourupg,DEC);
delay(200);
}
void DisplaySetMinute()
{
lcd.clear();
if(digitalRead(P2)==HIGH)
{
if(minupg==59)
{
minupg=0;
}
else
{
minupg=minupg+1;
}
}
if(digitalRead(P3)==HIGH)
{
if(minupg==0)
{
minupg=59;
}
else
{
minupg=minupg-1;
}
}
lcd.setCursor(0,0);
lcd.print("Set Minutes:");
lcd.setCursor(0,1);
lcd.print(minupg,DEC);
delay(200);
}
void DisplaySetYear()
{
lcd.clear();
if(digitalRead(P2)==HIGH)
{
yearupg=yearupg+1;
}
if(digitalRead(P3)==HIGH)
{
yearupg=yearupg-1;
}
lcd.setCursor(0,0);
lcd.print("Set Year:");
lcd.print(yearupg,DEC);
delay(200);
}
void DisplaySetMonth()
{
lcd.clear();
if(digitalRead(P2)==HIGH)
{
if (monthupg==12)
{
monthupg=1;
}
else
{
monthupg=monthupg+1;
}
}
if (digitalRead(P3)==HIGH)
{
if (monthupg==1)
{
monthupg=12;
}
else
{
monthupg=monthupg-1;
}
}
lcd.setCursor(0,0);
lcd.print("Set Month:");
lcd.setCursor(0,1);
lcd.print(monthupg,DEC);
delay(200);
}
void DisplaySetDay()
{
lcd.clear();
if(digitalRead(P2)==HIGH)
{
if(dayupg==31)
{
dayupg=1;
}
else
{
dayupg=dayupg+1;
}
}
if(digitalRead(P3)==HIGH)
{
if (dayupg==1)
{
dayupg=31;
}
else
{
dayupg=dayupg-1;
}
}
lcd.setCursor(0,0);
lcd.print("Set Day:");
lcd.setCursor(0,1);
lcd.print(dayupg,DEC);
delay(200);
}
void StoreAgg()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("SAVING IN");
lcd.setCursor(0,1);
lcd.print("PROGRESS");
RTC.adjust(DateTime(yearupg,monthupg,dayupg,hourupg,minupg,0));
delay(200);
}