Problem z kompilacją kodu.

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Problem z kompilacją kodu.

Post autor: gintur » 12 sie 2017, 18:55

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: Zaznacz cały


#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);
     }
    

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
scorpion_1982
Majsterkowicz
Posty: 108
Rejestracja: 15 lut 2015, 00:55

Re: Problem z kompilacją kodu.

Post autor: scorpion_1982 » 13 sie 2017, 09:23

1. Zainstalować biblioteki.
2. Zmienne , które mają być widoczne poza obrębem funkcji definiujemy na samym początku
twój kod powinien wyglądać tak:

Kod: Zaznacz cały

#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);
DateTime now;

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()
{
  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);
     }
    
Nie będę poprawiał tego po kimś bo jest dużo dziecinady typu zmienna=zmienna+1;// można używać takiego zapisu ale po co, skoro można dać zmienna++

Gdyby pluł się o linię zawierającą lcd.init(); to ją za komentuj, nie wszystkie biblioteki jeszcze tą funkcje mają.
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Re: Problem z kompilacją kodu.

Post autor: gintur » 13 sie 2017, 10:43

Teraz po kompilacji wyskakuje stray '\240\ in program
Kod który poprawiłeś można skopiować czy lepiej wszystko przepisać ?
Awatar użytkownika
scorpion_1982
Majsterkowicz
Posty: 108
Rejestracja: 15 lut 2015, 00:55

Re: Problem z kompilacją kodu.

Post autor: scorpion_1982 » 13 sie 2017, 12:11

Możesz skopiować.
Skopiuj wszystko co pojawia ci się w konsoli. Bo to co dałeś nic o błędzie nie mówi

Wysłane z mojego SM-J510FN przy użyciu Tapatalka
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Re: Problem z kompilacją kodu.

Post autor: gintur » 13 sie 2017, 12:50

Arduino:1.8.1 (Windows 10), Płytka:"Arduino Nano, ATmega328"

UWAGA: Kategoria 'Real-time clock' w bibliotece DS3231 jest nieprawidłowa. Ustawiono na 'Uncategorized'
Spoiler:
Ten raport powinien zawierać więcej informacji jeśli w
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"
Ostatnio zmieniony 13 sie 2017, 17:13 przez MrLewerence, łącznie zmieniany 1 raz.
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Re: Problem z kompilacją kodu.

Post autor: gintur » 13 sie 2017, 13:01

To jest skopiowany opis błędów.
Na końcu sketchu jest nawias klamrowy i następna linijka(pusta) jest podświetlona przez kompilator i to wszystko.
Mam nadzieję ze chodziło o kopie błedów a nie samego sketchu.
Awatar użytkownika
scorpion_1982
Majsterkowicz
Posty: 108
Rejestracja: 15 lut 2015, 00:55

Re: Problem z kompilacją kodu.

Post autor: scorpion_1982 » 13 sie 2017, 14:10

Wyzuc biblioteki które masz w katalogu documents/Arduino/libelaries

I zainstaluj je jeszcze raz. U mnie na płytce nano kod kompiluje się więc masz namieszane w bibliotekach.
Powinieneś mieć te biblioteki u siebie :
https://www.mediafire.com/file/5ug9aa9c ... raries.zip
Dostępne z Managera Bibliotek
Testowane na Arduino v1.8.2

Wysłane z mojego SM-J510FN przy użyciu Tapatalka
Awatar użytkownika
Slawek
Starszy majsterkowicz
Posty: 448
Rejestracja: 29 mar 2015, 15:05

Re: Problem z kompilacją kodu.

Post autor: Slawek » 13 sie 2017, 14:48

To nie problem bibliotek a kodowania znaków edytorze, masz wstawionych mnóstwo twardych spacji w kodzie. Skopiowałeś tekst z html i dlatego tak się dzieje.
Widać to np. w wierszu 14,15,19 itd.
znaki.png
Skopiuj kod do Notepad++, zaznacz wszystko, daj Format->Konwertuj na format ANSI a następnie skopiuj całość i wklej do Arduino IDE.


Pozdr
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
scorpion_1982
Majsterkowicz
Posty: 108
Rejestracja: 15 lut 2015, 00:55

Re: Problem z kompilacją kodu.

Post autor: scorpion_1982 » 13 sie 2017, 14:58

Dziwne bo ja też skopiowałem kod bezpośrednio z przeglądarki i wkleiłem do Arduino, ale faktycznie nie zaszkodzi sprawdzić.

Kod: Zaznacz cały

sketch_aug13c:358: error: stray '\240' in program

Znaleziono wiele bibliotek w "LiquidCrystal_I2C.h"
Wykorzystane: C:\Users\g\Documents\Arduino\libraries\LiquidCrystal_I2C
Niewykorzystane: C:\Users\g\Documents\Arduino\libraries\NewliquidCrystal
Niewykorzystane: C:\Program Files (x86)\Arduino\libraries\NewliquidCrystal
exit status 1
stray '\240' in program
Dla tego zaproponowałem by wywalił ten syf, ma kilka różnych wersji bibliotek!!
To że tekst jest w utf-8 nie znaczy że będzie miał błędy, jedynie ma krzaki zamiast polskich znaków ale mimo to powinno mu to śmigać zaraz sprawdzę nawet.

edit:
Tak jak pisałem nie ma to negatywnego wpływu co oczywiście nie twierdze że kodowanie jest poprawne..
Ostatnio zmieniony 13 sie 2017, 15:05 przez scorpion_1982, łącznie zmieniany 1 raz.
Awatar użytkownika
Slawek
Starszy majsterkowicz
Posty: 448
Rejestracja: 29 mar 2015, 15:05

Re: Problem z kompilacją kodu.

Post autor: Slawek » 13 sie 2017, 15:04

Biblioteki to oddzielny temat, i z tym też powinien kolega zrobić porządek, niemniej stray '\znak' oznacza niewidoczny znak z którym kompilator ma problem, i to na ten moment jest powodem braku kompilacji.
Nie chce mi sie instalować koniecznych bibliotek wiec nie będę sprawdzał, ale na pewno tak jest.

Pozdr
Awatar użytkownika
scorpion_1982
Majsterkowicz
Posty: 108
Rejestracja: 15 lut 2015, 00:55

Re: Problem z kompilacją kodu.

Post autor: scorpion_1982 » 13 sie 2017, 15:07

Tak jak napisałem u mnie kopiowanie tekstu ze strony w UTF-8 i wklejenie do Edytora Arduino nie niesie skutków ubocznych oczywiście po za brakiem poprawnego kodowania, ale nie zaszkodzi by założyciel tematu sprawdził twoją tezę.

Lub inaczej:
Popraw deklaracje, czyli wywal ją z funkcji setup i umieść tam gdzie trzeba, w funkcji możesz jedynie ją przypisać..
zmodyfikuj stary oryginalny plik i faktycznie pominiesz problemy kodowania.
Awatar użytkownika
Slawek
Starszy majsterkowicz
Posty: 448
Rejestracja: 29 mar 2015, 15:05

Re: Problem z kompilacją kodu.

Post autor: Slawek » 13 sie 2017, 15:11

Niech kolega zrobi jak napisałem wyżej, zobaczymy co wyjdzie. Te błędy często sie zdarzają w najnowszych wersjach, w 1.0.x, 1.5.x czy 1.6.x nie ma tego problemu.


Pozdr
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Re: Problem z kompilacją kodu.

Post autor: gintur » 13 sie 2017, 16:16

skopiowałem kod z 2 postu ,który poprawił scorpion_1982 wkleiłem go do Notepad,dałem konwertuj na ANSI,potem ten kod wkleiłem do arduino ,zrobiłem porządek z bibliotekami no i niestety bez zmian.
Rozumiem,że konwertuj na ANSI samo usuwa błędy i nie trzeba tam nic poprawiać....
Ostatnio zmieniony 13 sie 2017, 16:30 przez gintur, łącznie zmieniany 1 raz.
Awatar użytkownika
scorpion_1982
Majsterkowicz
Posty: 108
Rejestracja: 15 lut 2015, 00:55

Re: Problem z kompilacją kodu.

Post autor: scorpion_1982 » 13 sie 2017, 16:24

gintur pisze:Rozumiem,że konwertuj na ANSI samo usuwa błędy i nie trzeba tam nic poprawiać....
Niestety to nie takie proste..
Kodowania tym sposobem nie poprawisz, bo powstały błędy których zmiana kodowania nie usunie, jedynie ręczna modyfikacja pomoże.
Koledze Sławkowi bardziej chodziło o to że masz twarde znaki których normalnie edytor nie wyświetla a być może któryś ten znak kompilatorowi przeszkadza..

Czyli wypluwa te same błędy, zamieszczę koledze spakowany kod który u mnie w wersji Arduino 1.8.2 kompiluje się bez problemu..
Przerobiony twój kod, u mnie nie ma z nim problemów.
https://www.mediafire.com/file/4sau5mlx ... /pomoc.zip
Ostatnio zmieniony 13 sie 2017, 16:46 przez scorpion_1982, łącznie zmieniany 4 razy.
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Re: Problem z kompilacją kodu.

Post autor: gintur » 13 sie 2017, 16:31

ok to czekam,ja używam 1.8.1
Awatar użytkownika
scorpion_1982
Majsterkowicz
Posty: 108
Rejestracja: 15 lut 2015, 00:55

Re: Problem z kompilacją kodu.

Post autor: scorpion_1982 » 13 sie 2017, 16:39

Sprawdź poprzedni mój post..
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Re: Problem z kompilacją kodu.

Post autor: gintur » 13 sie 2017, 17:00

Kod się skompilował i udało mi się wgrać na arduino ale pojawił się jeszcze tylko jeden problem ale to zaraz opisze dokładniej...
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Re: Problem z kompilacją kodu.

Post autor: gintur » 13 sie 2017, 17:21

Kod udało się wgrać ale teraz na LCD sygnał PWM pokazuje 0% i lampy są zgaszone a powinno być 100% . 0% powinno być od godz 22.00 do 13.00 następnego dnia.
Nie wiem co poprawiłeś ale widze ze zdeklarowałeś DateTime now (linia 12) potem w setup jest now=RTC.now () W moim kodzie w setup było DateTime now = czas.now(); i chyba to pozwalało przeliczyć zegarowi jak powinien wyglądać sygnał PWM o konkretnej godzinie zresztą to jest ten kod

Kod: Zaznacz cały

#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
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);
}




Awatar użytkownika
scorpion_1982
Majsterkowicz
Posty: 108
Rejestracja: 15 lut 2015, 00:55

Re: Problem z kompilacją kodu.

Post autor: scorpion_1982 » 13 sie 2017, 18:15

Nie za bardzo rozumiem twojego pytania, w twoim kodzie wyniosłem deklarację poza obręb funkcji bo innaczej miał byś bląd.
w twoim kodzie masz błąd, nie analizowałem całego kodu i nie doszukiwałem się w nim sensu jak również czy będzie działał.
Ty miałeś w pozycji setup
DateTime now = RTC.now();

i masz to samo tylko teraz masz deklaracje zmienne poza funkcją
i przypisanie w setup. na jedno wychodzi.
Jęśli twój przykład nie generuje ci błędu tzn. jeśli nie odwołujesz się nigdzie indziej do zmiennej now to jak najbardziej możesz to zrobić jak miałeś nie widzę przeciwskazań
A z tym czas.now to coś kręcisz bo zobacz do pierwszego twojego posta jak masz !!

Czyli wartość zmiennej jest bez zmian bo ty ja przypisujesz

To że masz przypisaną jedno raz owo zmienną to nie znaczy że się ona sama odświeża.
Przed każdym sprawdzeniem czasu musisz ten czas pobrać z zegara.
Teraz już nie zdążę sprawdzić gdzie brakuje ci odpowiedniego kodu bo kończę prace.
Będę wieczorem przed kompem to zobaczę co tam masz nie tak, chyba że któryś z kolegów zdąży wcześniej wskazać problem..
Wysłane z mojego SM-J510FN przy użyciu Tapatalka
Awatar użytkownika
scorpion_1982
Majsterkowicz
Posty: 108
Rejestracja: 15 lut 2015, 00:55

Re: Problem z kompilacją kodu.

Post autor: scorpion_1982 » 13 sie 2017, 18:34

Jako pierwszą linie w loop wklej

Kod: Zaznacz cały

now = RTC.now();
funkcja setup wykonuje się raz
i przypisujesz w niej do zmiennej now dany czas ze zmiennej RTC
ale później funkcja loop nie pobiera dalej czasu a się do niego odwołuje czyli
odwołujesz się do zmiennej now poza obrębem funkcji setup
dlatego ma być tak jak ci zrobiłem deklarację
lub jeszcze raz musisz ją zadeklarować w funkcji loop i pobrać czas od nowa, gdy nie definiujesz jej od nowa bo już istnieje, to i tak musisz pobrać aktualny czas chyba że sądzisz że to idzie z automatu ??
!!!
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Re: Problem z kompilacją kodu.

Post autor: gintur » 13 sie 2017, 19:42

No to może od początku.
W przed ostatnim poście wysłałem kod który wgrany na arduino sterował 2 lampami LED tj pin 3 i 5.Dodtakowo na LCD wyświetla mi się Data ,godzina ,temperatura zasilacza oraz wypełnienie sygnału PWM na pinach 3 i 5. Ton i Toff są to temperatury wł/wył wentylator na zasilaczu. Zmienne dzienG i dzienM jest to godzina i minuta w której mają się załączyć 2 lampy LED. Int ZMIANA jest to czas przez który lampy mają osiągnąć pełną moc tj 100% PWM.U mnie jest ustawione ,że od godz 13.00 maja zapalić się lampy i w ciągu 60 min mają osiągnąć pełną moc i później mają całkiem zgasnąć o godz 22.00 więc cały proces ściemniania zaczyna się od 21.00 aby o 22.00 całkiem zgasnąć .Patrząc na kod który przysłałeś od 74 do 128 linijki są to polecenia ,które sterują tym rozjaśnianiem i ściemnianiem lamp więc potrzebna jest tam aktualna godzina.
Np.o 13.30 na LCD pokazywał mie się napis ze PWM =50 % itd. i lamoy się świeciły .Aby pobrać aktualną godzine ,date musiałem podpinać arduino pod laptopa i wtedy tez mogłem zmienić inne nastawy np. wł/wył lampe czy zmienić wartości temperatury.Wpadłem na pomysł żeby godzine i date ustawiac sobie za pomocą przycisków,poprawiłes mi kod który wykonuję te czynności ale zmieniło się to ,że moje lampy nie świecą a na LCD jest cały czas PWM 0%.
Jest tam takie polecenie ,które moim zdaniem odpowiada za aktualną godzinę int CZAS = (now.hour()*60+now.minute()) a potem int czas1=(dzienG*60+dzienM); //obliczenie czas rozjaśnienia int czas2=(nocG*60+nocM); czas gasznia wg mnie te polecenia nie działają skoro LED-y są cały czas zgaszone.
Skoro się udało sprawić aby nastawiac czas i date przyciskami to może dałoby rade zrobić to samo z nastawieniem godzin wł/wył? ;-)
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Re: Problem z kompilacją kodu.

Post autor: gintur » 13 sie 2017, 19:47

Wprowadziłem tą linie w loop i bez zmian dalej lampy są zgaszone.
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Re: Problem z kompilacją kodu.

Post autor: gintur » 13 sie 2017, 20:02

Wszystko działa!!
Miałbyś jeszcze ochote do dalszej pomocy ....? ;-)
Awatar użytkownika
scorpion_1982
Majsterkowicz
Posty: 108
Rejestracja: 15 lut 2015, 00:55

Re: Problem z kompilacją kodu.

Post autor: scorpion_1982 » 13 sie 2017, 20:34

Dlaczego nie wysyłasz sobie informacji na Serial monitor ??
Dzięki temu wiesz czy Arduino widzi poprawnie Godzinę itp.
Niestety nie będę podpinał teraz do płytki zegar RTC by sprawdzić czy pobiera właściwie czas.
użyj prostego myku i w pętli loop daj sobie coś takiego
Serial.print("Godzina:" + now.hour() + ":" + now.minute() + ":" + now.second());
Jeśli będzie wyświetlać poprawnie czas z zegara RTC to godzinę masz poprawnie.
Przeanalizuje na spokojnie co tam masz, bo w pracy za wiele czasu nie mam na pierdoły..
gintur
Młodszy majsterkowicz
Posty: 21
Rejestracja: 12 lip 2017, 20:03

Re: Problem z kompilacją kodu.

Post autor: gintur » 15 sie 2017, 13:21

Czas i data jest już ustawiana za pomocą przycisków ale szczytem marzeń byłoby wykorzystać te przyciski jeszcze do ustawienia czasu wł/wył lampe led tj
dzienG oraz nocG.Spróbowałem swoich sił zadeklarowałem na razie tylko int dzienG=0 i w kodzie dopisałem to linijka 159-186 (if menu==6).Niby działa ale mogę tylko ustawiac przyciskiem "+"a "-"nie odpowiada.W ustawieniach daty i godz przycisk "-" działa normalnie.Co zrobiłem zle?

Kod: Zaznacz cały

#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);
DateTime now;


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 dzienG=0;
int hourupg;
int minupg;
int yearupg;
int monthupg;
int dayupg;
int menu=0;
void setup()
{
  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()
{
  now=RTC.now();
  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) 
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("ON:");
    lcd.setCursor(0,1);
    lcd.print(dzienG);
  if (digitalRead(P2)==HIGH)
   {
    if (dzienG==23)
    {
      dzienG=0;
    }
      else
      {
        dzienG=dzienG+1;
      }
      if(digitalRead(P3)==HIGH)
      {
        if (dzienG==0)
        {
          dzienG=23;
        }
        else
        {
      dzienG=dzienG-1;
        }
      }
   }
  
  if (menu==7)
  {
    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("Godziny:");
   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("Minuty:");
    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("Rok:");
     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("Miesiac:");
      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("Dzien:");
      lcd.setCursor(0,1);
      lcd.print(dayupg,DEC);
      delay(200);
     }
     void StoreAgg()
     {
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Zapisz");
        lcd.setCursor(0,1);
        lcd.print("program");
        RTC.adjust(DateTime(yearupg,monthupg,dayupg,hourupg,minupg,0));
        delay(200);
     }

ODPOWIEDZ

Strony partnerskie: