• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z kompilacją kodu.
#1
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?
Kod:
#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);
     }
   
 
Odpowiedź
#2
Nie posiadasz funkcji now.hour(), źle coś skopiowałeś z kodu wzorcowego zamieść obydwa kody.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#3
(12-08-2017, 20:49)adix napisał(a): Nie posiadasz funkcji now.hour(), źle coś skopiowałeś z kodu wzorcowego zamieść obydwa kody.

Kod:
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
#define BACKLIGHT_PIN
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x3F,16,2);
RTC_DS1307 czas;
int LED1 = 3;
int LED2 = 5;
int GODZ;
int MIN;
int SEC;
int mocD1;
int T = 2;
int Ton = 45;
int Toff = 27;
void setup ()
{
Serial.begin(9600);
 lcd.setBacklight(HIGH);
 lcd.init();
 lcd.clear();                    
lcd.begin(16,2);
Wire.begin();
czas.begin();
//czas.adjust(DateTime(__DATE__, __TIME__));
pinMode(3,OUTPUT);
pinMode(5,OUTPUT);
pinMode(T,INPUT);
pinMode(9,OUTPUT);//wentylator
pinMode(P1,INPUT);
sensors.begin();
 DateTime now = czas.now();
}
void loop ()
{
  sensors.requestTemperatures();
   DateTime now = czas.now();
 //czas.adjust(DateTime(__DATE__, __TIME__)); //czas pobierany z laptopa
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;
}
if ((sensors.getTempCByIndex(0))> Ton)
{
  digitalWrite(9,LOW);
}
if ((sensors.getTempCByIndex(0)) < Toff)
{
  digitalWrite(9,HIGH);
}
analogWrite(LED1,mocD1[D1]);
analogWrite(LED2,mocD1[D1]);
lcd.setCursor(11,0);
lcd.print(sensors.getTempCByIndex(0));
lcd.setCursor(9,1);
lcd.print("PWM");
lcd.print(' ');
lcd.print((D1*100/maxD1));
lcd.print("%");
//DateTime now = czas.now();
lcd.setCursor(0,0);
lcd.print(now.day(), DEC);
//Serial.print(CZAS), DEC);
lcd.print('/');
 if (now.month() < 10)
 lcd.print('0');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.setCursor(0,1);
//lcd.print(' ');
lcd.print(now.hour(), DEC);
lcd.print(':');
if (now.minute() < 10)
lcd.print('0');
lcd.print(now.minute(), DEC);
lcd.print(':');
 if (now.second() < 10)
 lcd.print('0');
lcd.print(now.second(), DEC);
delay(1000);
}

Drugi kod.

niełączone kody działają prawidłowo.

Kod:
#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>
RTC_DS1307 RTC;

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);
Serial.begin(9600);
RTC.begin();
//if(! RTC.isrunning())
{
  lcd.println("RTC is NOT running!");
//  RTC.adjust(DataTime(_DATE_,_TIME_));
}
int menu=0;
}
void loop()
{

  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);
     }
   
 
Odpowiedź
#4
Znalazłem w twoim kodzie problem ze znakiem poprawiłem i prawie si kompiluje ale nawet jak się skompiluje to da się tylko wgrac do due za duży program.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#5
(13-08-2017, 13:44)adix napisał(a): Znalazłem w twoim kodzie problem ze znakiem poprawiłem i prawie si kompiluje ale nawet jak się skompiluje to da się tylko wgrac do due za duży program.
Tzn ,że program nie będzie działał prawidłowo bo jest za duży? więc jakie jest wyjście z tej sytuacji?
Mógłbyś wskazać miejsce gdzie był błąd bo dla mnie uczącego się to bardzo ważne.
 
Odpowiedź
#6
Będzie działał jak znajdę wszystkie błędy al ni wgrasz go nawet do megi bo się nie zmieści i wali błędami.

Kod:
#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 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 CZAS;
//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);
     }
Jedak się da wgrać ale musisz sam parę rzeczy rozkminić.

usunolem

Kod:
int GODZ=now.hour();
int MIN=now.minute();
int SEC=now.second();

Oraz dodałem
Kod:
int CZAS
-nie wiem co osiągną chciałeś ta zmienia ale była nie zdeklarowana.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości