Schakelklok met DS1307

algemene C code
Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Schakelklok met DS1307

Berichtdoor Dries » 24 Nov 2016, 21:10

Beste Leden,

ik ben met een schakelklok bezig gebruik makend van een DS1307 met de "Time" en "TimeAlarms" bibliotheken. Een lamp moet van 10uur 's morgens tot 22u branden. Dit werkt dus perfect. Nu mijn vraag: indien de Arduino gereset wordt of zonder spanning komt tijdens deze periode van 12 uur is de Arduino de status van de lamp "kwijt", dus uit. Kan dit opgelost worden en hoe?

alvast bedankt voor het meedenken

Advertisement

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Schakelklok met DS1307

Berichtdoor Gij Kieken » 24 Nov 2016, 21:22

Plaats er een teleruptor met extra contact tussen en stuur deze aan door middel van een puls i.p.v. een continu signaal.
Zo kun je de status van je schakel contact ten alle tijde inlezen.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Schakelklok met DS1307

Berichtdoor nicoverduin » 24 Nov 2016, 21:24

Het is een schakel klok. En aangezien er verder niets is ingegeven ga ik het zelf ff invullen:
a) Er is een relais die aan en uit gezet kan worden.
b) De klok heeft een backup batterij
Dan:
Gewoon de aan/uit tijden in eeprom zetten.
In de setup():
a) lees de eeprom
b) lees de klok
c) als de tijd binnen de aan/uit tijd valt gewoon een digitalWrite doen om het relais weer in te schakelen.
tutti.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Schakelklok met DS1307

Berichtdoor Gij Kieken » 24 Nov 2016, 21:38

Terug fout van mij.
Ging ervan uit dat hij een schakelklok had geprogrammeerd in een arduino.
En Eeprom blijft ook niet meegaan.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Schakelklok met DS1307

Berichtdoor nicoverduin » 24 Nov 2016, 22:15

Eeprom houdt zijn waarde gewoon vast hoor. De klok is realtime en de eeprom heeft de instellingen
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Schakelklok met DS1307

Berichtdoor Gij Kieken » 24 Nov 2016, 22:30

Ja klop natuurlijk wat je zegt, in gewoon gebruik geen enkel probleem. Maar wat ik bedoelde is, als hij vele keren wegschrijft naar de Eeprom bijvoorbeeld
om te experimenteren kan het wel eens fout lopen.
Ik denk eigenlijk nog altijd in het tijdperk van als je wilt dat iets werkt sluit dan een draad aan i.v.p. draadloos(zeg maar het ouderwetse relais gebeuren).
Software oplossen is natuurlijk veel makkelijker en veel meer wendbaar.
Ben ook maar in de leerfase en heb al heel veel opgestoken op dit forum.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Schakelklok met DS1307

Berichtdoor nicoverduin » 24 Nov 2016, 23:01

100.000x vullen..... tenzij je het bewust in een loop oid programmatisch doet, ga je niet voor mekaar krijgen hoor.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Re: Schakelklok met DS1307

Berichtdoor Dries » 24 Nov 2016, 23:18

ik gebruik het "Tiny RTC" bordje waar ook een eeprom IC op zit, misschien dat dit een optie is?

Berichten: 118
Geregistreerd: 28 Dec 2014, 23:20
Woonplaats: Bilzen BE

Re: Schakelklok met DS1307

Berichtdoor Dries » 24 Nov 2016, 23:20

de code:
cpp code
#include <Wire.h> 
#include <Time.h>
#include <TimeAlarms.h>
#include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t

int LED = 42; // which pin the LED is on
int LIGHTS = 0; // LED status (0 off, 1 on)

void setup()
{
// provide power to the RTC

// configure output light
pinMode(LED,OUTPUT);
digitalWrite(LED,LOW);
// start services
Serial.begin(9600);
Wire.begin();
// sync
setSyncProvider(RTC.get); // the function to get the time from the RTC
if(timeStatus()!= timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
// set alarm times
Alarm.alarmRepeat(20,00,00,LightsOn ); // turn light on
Alarm.alarmRepeat(20,30,00,LightsOff); // turn light off
}

void loop()
{
digitalClockDisplay();
Alarm.delay(1000);
}

void LightsOn()
{
digitalWrite(LED,HIGH); // turn LED of
Serial.println("...turning lights on...");
}
void LightsOff()
{
digitalWrite(LED,LOW); // turn LED off
Serial.println("...turning lights off...");
}

void digitalClockDisplay()
{
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
void printDigits(int digits)
{
// utility function for digital clock display: prints preceding colon and leading 0
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Schakelklok met DS1307

Berichtdoor nicoverduin » 25 Nov 2016, 08:41

Ik heb ff die library bekeken, maar volgens mij pakt hij hem automatisch op bij een reset of power up. Dus op het moment dat de tijd naar de LED on moment is zou de Led ook weer aan moeten gaan. Maar dat kan je zo testen. Druk de reset maar in tijdens het interval. Merk je het gauw genoeg
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten