Skocz do zawartości

Problem z kompilacją kodu.


gintur

Pomocna odpowiedź

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

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.