Liczba postów: 4
Liczba wątków: 1
Dołączył: Jan 2018
Reputacja:
0
Witam
Mam problem z ustawieniem włącznika/wyłącznika czasowego.
Nie mogę ustawić godzin ani minut na 08 i 09.
invalid digit "9" in octal constant
Jak pomijam 0 to nie działa ponieważ odczyt z RTC jest z zerem na początku, 01,02 itd.
Dzięki za odp.
Liczba postów: 52
Liczba wątków: 8
Dołączył: Dec 2015
Reputacja:
26
Tyle razy jest tu pisane, że nikt z fusów wróżyć nie umie, wklej sketch który wgrywasz.
Liczba postów: 4
Liczba wątków: 1
Dołączył: Jan 2018
Reputacja:
0
Wszystko działa ok o ile nie użyje 08 lub 09 w godzinach lub minutach.
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
#define przekaznik1 11
#define przekaznik2 12
#define godzinaOn 17
#define godzinaOff 17
#define minutaOn 07
#define minutaOff 10
void setup() {
Wire.begin();
pinMode(przekaznik1, OUTPUT);
pinMode(przekaznik2, OUTPUT);
digitalWrite(przekaznik1, HIGH);
digitalWrite(przekaznik2, HIGH);
}
void loop()
{
oswietlenie();
}
void oswietlenie()
{
tmElements_t tm;
RTC.read;
if((godzinaOn<=tm.Hour && tm.Hour<=godzinaOff)&&(minutaOn<=tm.Minute && tm.Minute<=minutaOff))
{
digitalWrite(przekaznik1, LOW);
}
else
{
digitalWrite(przekaznik1, HIGH);
}
}
Liczba postów: 2,376
Liczba wątków: 0
Dołączył: Oct 2017
Reputacja:
240
#define minutaOn 8 nie wystarczy?
Program się burzy tym komunikatem bo jak podajesz 0 przed liczbą to używasz liczby ósemkowej, ta ma 8 cyfr od 0 do 7 (tak samo jak system dwójkowy ma cyfry 0 i 1, szesnastkowy ma dodatkowe cyfry a,b,c,d,e,f no i oczywiście typowe dla systemu dziesiętnego 0-9, a system piątkowy miałby cyfry 0,1,2,3,4).
Miałoby to sens przy porównywaniu napisów, wtedy "08" byłoby OK.
Gdybym miał robić jakieś ify to pewnie zamieniałbym godzinę na liczbę minut (godzina*60+minuty) ustawiał jakoś czy przekaźnik jest aktualnie włączony czy nie, bo po co miałby włączać przekaźnik, który jest włączony pierdylion razy .