dc3132
7 berichten
• Pagina 1 van 1
dc3132
beste allemaal
ik heb weer hulp nodig .
wat doe ik hier fout wil met een rtc tijd schakelen, maar relais schakelt niet
ik heb weer hulp nodig .
wat doe ik hier fout wil met een rtc tijd schakelen, maar relais schakelt niet
- Code: Alles selecteren
#include <DS3231.h>
int Relay = 38;
DS3231 rtc(SDA, SCL);
Time t;
const int OnHour = 23;
const int OnMin = 23;
const int OffHour = 23;
const int OffMin = 24;
void setup() {
Serial.begin(115200);
rtc.begin();
pinMode(Relay, OUTPUT);
digitalWrite(Relay, LOW);
}
void loop() {
t = rtc.getTime();
Serial.print(t.hour);
Serial.print(" hour(s), ");
Serial.print(t.min);
Serial.print(" minute(s)");
Serial.println(" ");
delay (1000);
if(t.hour == OnHour && t.min == OnMin){
digitalWrite(Relay,HIGH);
Serial.println("LIGHT ON");
}
else if(t.hour == OffHour && t.min == OffMin){
digitalWrite(Relay,LOW);
Serial.println("LIGHT OFF");
}
}
Advertisement
Re: dc3132
je zegt dat het relais niet schakelt, krijg je wel een melding dat het zou moeten schakelen op de USB
en haal die else eruit die heeft geen zin.
en haal die else eruit die heeft geen zin.
paul deelen
shooter@home.nl
shooter@home.nl
Re: dc3132
hoi shooter ik heb het even anders gedaan .
het werk, maar moet nog wel die delays van het lcd scherm aanpassen in mills wanrt de boel wordt aardig vertraagt
cpp code
het werk, maar moet nog wel die delays van het lcd scherm aanpassen in mills wanrt de boel wordt aardig vertraagt
cpp code
#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
int Relay = 36;
DS3231 rtc(SDA, SCL);
Time t;
const int OnHour = 9;//SET RELAY ON TIMER
const int OnMin = 22;
const int OffHour = 10;//SET RELAY OFF TIMER
const int OffMin = 52;
void setup() {
rtc.begin();
pinMode(Relay, OUTPUT);
digitalWrite(Relay, LOW);
lcd.clear();
lcd.begin(16,2);
lcd.init();
lcd.backlight();
rtc.setDOW(TUESDAY); // Set Day-of-Week to SUNDAY
rtc.setTime(16, 42, 0); // Set the time to 12:00:00 (24hr format)
rtc.setDate(17, 3, 2020); // Set the date to January 1st, 2014
}
void loop() {
t = rtc.getTime();
{
lcd.print(rtc.getDOWStr());
lcd.setCursor(1,0);
lcd.print("");
delay (1000);
}
// Send date
{
lcd.print(rtc.getDateStr());
lcd.setCursor(1,1);
lcd.print(" ");
delay (1000);
}
// Send time
{
lcd.println(rtc.getTimeStr());
lcd.setCursor(1,0);
lcd.print(" ");
delay (1000);
}
if(t.hour == OnHour && t.min == OnMin){
digitalWrite(Relay,HIGH);
lcd.setCursor(1,0);
lcd.println(" MOTOR ON ");
delay (1000);
}
else if(t.hour == OffHour && t.min == OffMin){
digitalWrite(Relay,LOW);
lcd.setCursor(1,0);
lcd.println("MOTOR OFF");
delay (1000);
}
}
Re: dc3132
nu heb ik de delay weg gehaald en mills toegevoegd , maar het loopt niet helemaal goed tijd in display gaat goed maar datum doet gek , wat doe ik in deze fout
- Code: Alles selecteren
#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
unsigned long previousMillis = 0; // will store last time LED was updated
// constants won't change:
unsigned long interval = 1000; // interval at which to blink (milliseconds)
LiquidCrystal_I2C lcd(0x3F,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
int Relay = 36;
DS3231 rtc(SDA, SCL);
Time t;
const int OnHour = 9;//SET RELAY ON TIMER
const int OnMin = 22;
const int OffHour = 10;//SET RELAY OFF TIMER
const int OffMin = 52;
void setup() {
rtc.begin();
pinMode(Relay, OUTPUT);
digitalWrite(Relay, LOW);
lcd.clear();
lcd.begin(16,2);
lcd.init();
lcd.backlight();
// rtc.setDOW(FRIDAY);
// rtc.setTime(9, 17, 0); //SET TIME
// rtc.setDate(17,03,2020);
}
void loop() {
t = rtc.getTime();
{
lcd.print(rtc.getDOWStr());
lcd.setCursor(1,0);
lcd.print("");
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
}
// Send date
{
lcd.print(rtc.getDateStr());
lcd.setCursor(1,1);
lcd.print(" ");
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
}
// Send time
{
lcd.println(rtc.getTimeStr());
lcd.setCursor(1,0);
lcd.print(" ");
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
}
if(t.hour == OnHour && t.min == OnMin){
digitalWrite(Relay,HIGH);
lcd.setCursor(1,0);
lcd.println(" MOTOR ON ");
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
}
else if(t.hour == OffHour && t.min == OffMin){
digitalWrite(Relay,LOW);
lcd.setCursor(1,0);
lcd.println("MOTOR OFF");
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
}
}}}}}}
Re: dc3132
tja nu moet je dus wel in de gaten houden hoe dat werkt met millis()
als je dus 1 keer currentmillis er een keer inzet is prima, maar als je dan previous overal hetzelfde hebt dan gaat het fout, even zelf uitzoeken hoe je dat kunt oplossen met functies. dus als de tijd omis dan ga je even naar een subfunctie om de actie te doen.
dan krijg je een mooi korte loop.
als je dus 1 keer currentmillis er een keer inzet is prima, maar als je dan previous overal hetzelfde hebt dan gaat het fout, even zelf uitzoeken hoe je dat kunt oplossen met functies. dus als de tijd omis dan ga je even naar een subfunctie om de actie te doen.
dan krijg je een mooi korte loop.
paul deelen
shooter@home.nl
shooter@home.nl
7 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten