Segítséget szeretnék kérni. Azt szeretném kérdezni, hogy lehet valahogy hivatkozni a programban egy adott időpontra, nem vagyok villamossági szaki, de ha jól értem a dolgot akkor csak az órachip belső ébresztő funkciójáról volt szó. Sajnos a neten sem találtam hasonlóra példát.
Konkrétan nekem arra lenne szükségem, hogy adott időpontokban be, illetve kikapcsoljak kimeneteket, akváriumhoz szeretném használni, világítás kapcsolás, reggel be, este ki , illetve vannak növénytáppumpáim, ezeket pedig egy adott időpontban, csak pár másodpercre kellene kapcsolni.
Az alábbi programom van, ezt szeretném kiegészíteni több kapcsolt kimenettel. (Sajnos a napot valamiért téveszti, de számomra nincs jelentősége)
Előre is köszi a segítséget!
Üdv:Viktor
Kód: Egész kijelölése
#include <Wire.h>
int hour;
int minute;
int second;
int month;
int day_of_week;
int day;
int year;
char* dow[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup()
{
Serial.begin(9600);
Wire.begin();
}
void loop()
{
// Below required to reset the register address to 0.
Wire.beginTransmission(104); // transmit to device #104, the ds 1307
Wire.write(0x00);
Wire.endTransmission(); // stop transmitting
Wire.requestFrom(104, 7); // request 7 bytes from slave ds1307, we'll assume it'll send them all even though it doesn't have to
second = Wire.read();
minute = Wire.read();
hour = Wire.read();
day_of_week=Wire.read();
day = Wire.read();
month = Wire.read();
year = Wire.read();
// Convert all the BCD values that might have "tens" to decimal. Most arduino folks do this w/shifts but this just looks easier to me.
hour=hour/16 * 10 + hour % 16;
minute=minute/16 * 10 + minute % 16;
second=second/16 * 10 + second % 16;
day=day/16 * 10 + day % 16;
month=month/16 * 10 + month % 16;
year=2000 + year/16 * 10 + year % 16;
Serial.print(hour);
Serial.print(":");
if (minute < 10) { Serial.print("0"); }
Serial.print(minute);
Serial.print(":");
if (second < 10) { Serial.print("0"); }
Serial.print(second);
Serial.print(" ");
Serial.print(dow[day_of_week-1]); // array is 0-6, but the dow register holds 1-7, so subtract 1.
Serial.print(", ");
Serial.print(month);
Serial.print("/");
Serial.print(day);
Serial.print("/");
Serial.print(year);
Serial.print("\n");
delay(1000);
}