Problem z kompilacją kodu.

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
Awatar użytkownika
scorpion_1982
Majsterkowicz
Posty: 108
Rejestracja: 15 lut 2015, 00:55

Re: Problem z kompilacją kodu.

Post autor: scorpion_1982 » 15 sie 2017, 22:01

Ustaw sobie odpowiednio pozycję wyświetlanego tekstu godziny i minuty
Dla off robisz to samo..

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;
byte dzienM = 0; // Alarm Minute
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) // Alarm set hour
  {
    AlarmSetHour();
  }

  if (menu == 7) // Alarm set minute
  {
    AlarmSetMinute();
  }
  if (menu == 8)
  {
    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);
}

// ----------- ALARM SET -----------//
/*
 * AlarmSetHour()
 * 
 */
void AlarmSetHour()
{
  if (digitalRead(P2) == HIGH)
  {
    if (dzienG == 23)
    {
      dzienG = 0;
    }
    else
    {
      dzienG++;
    }
  }
  if (digitalRead(P3) == HIGH)
  {
    if (dzienG == 0)
    {
      dzienG = 23;
    }
    else
    {
      dzienG--;
    }
  }
  
  lcd.clear();
  lcd.setCursor(0,0); // Pos cursor
  lcd.print("ON:");
  lcd.setCursor(0,1);
  lcd.print(dzienG,DEC);
  delay(200);
}
/*
 * AlarmSetMinute()
 * 
 */
void AlarmSetMinute()
{
  if (digitalRead(P2) == HIGH)
  {
    if (dzienM == 23)
    {
      dzienM = 0;
    }
    else
    {
      dzienM++;
    }
  }
  if (digitalRead(P3) == HIGH)
  {
    if (dzienM == 0)
    {
      dzienM = 23;
    }
    else
    {
      dzienM--;
    }
  }
  // Odpowiednio zmodyfikuj pozycję dla własnych potrzeb
  lcd.clear();
  lcd.setCursor(0,0); // Pos cursor
  lcd.print("ON:");
  lcd.setCursor(0,1);
  // ----------------- // 
  lcd.print(dzienM,DEC); 
  delay(200);
}

// ----------- END ALARM SET ------//

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);
}
A tu wersja w pliku bo dalej będzie jakiś dziwny problem z kodowaniem :D
http://www.mediafire.com/file/kvvzaq3dd ... acja_2.zip
Zacznij nowy sketch i w nim stwórz sobie menu i sprawdzaj na bierząco, bo niestety ale nikt za ciebie tego nie zrobi :)

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


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

Re: Problem z kompilacją kodu.

Post autor: gintur » 18 sie 2017, 15:14

Teraz wszystko juz dziala ale nie obylo sie bez problemow.Pomoglo odinstalowanie arduino 1.8.1 i zainstalowanie 1.8.2 dopiero program zaczal sie kompilowac.Czy istnieje mozliwosc aby zaoisywaly sie w pamieci ustawienia T on: T off.: Temp on i off bo po wylaczeniu zasilania wszystko wraca do 0.
Awatar użytkownika
ethanak
Złota rączka
Posty: 764
Rejestracja: 21 lis 2015, 14:41
Kontakt:

Re: Problem z kompilacją kodu.

Post autor: ethanak » 18 sie 2017, 15:51

Tak, jest.
Zajrzyj na arduino.cc, poczytaj sobie o EEPROM, i przestań zawracać du^wgłowę tym że nie umiesz przeczytać podręcznika.
Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie.
To jest ewidentna bezczelność!
ODPOWIEDZ

Strony partnerskie: