sketch DS1307

IDE gerelateerde berichten
Berichten: 23
Geregistreerd: 27 Nov 2016, 15:22

sketch DS1307

Berichtdoor hansc » 09 Mei 2022, 16:29

Hallo ik ben Hans was al op het Forum aanwezig, maar ben een paar jaar ertussen uit geweest i.v.m. ziekte en operaties. Ben nu met pensioen en weer een tijde bezig. Heb een vraag, ben bezig met een sketch van DS1307 tijd module. Heb op internet gekeken, maar die aan geboden werden werkte niet. Heb nu wat gemaakt en in de seriële monitor zie ik de datum en de tijd lopen. Echter het relais wordt niet geschakeld, ben al een paar dagen hiermee bezig. Kan iemand mij een tip geven. De op zet is dat op een in te vullen tijd het relais wordt bekrachtigd en een solenoid aan stuurt die een deur opent. Niet meer en minder.

Code: Alles selecteren
#include <Wire.h>
#include <RTC.h>


int Relay = 5;
const int OnHour  = 15;
const int OnMin   = 40;
const int OnSec   = 00;
const int OffHour = 15;
const int OffMin =  41;
const int OffSec =  00;



static DS1307 RTC;



void setup()
{
  Serial.begin(9600);
  RTC.begin();
  pinMode(Relay, OUTPUT);
  digitalWrite(Relay, LOW);

  Serial.println();
  Serial.println("*** RTC 1307 ***");
  Serial.print("Is Clock Running : ");
  if (RTC.isRunning())
    Serial.println("Yes");
  else
    Serial.println("No. Time may be Inaccurate");
  Serial.print("Hour Mode : ");
  if (RTC.getHourMode() == CLOCK_H24)
    Serial.println("24 Hours");
  else
    Serial.println("24 Hours");
    Serial.println("Yes");
  Serial.print("Is Out Pin Enabled : ");
  if (RTC.isOutPinEnabled())
    Serial.println("No");

  Serial.print("Is SQWE Enabled : ");
  if (RTC.isSqweEnabled())
    Serial.println("Yes");
  else
    Serial.println("No");


}

void loop()
{

  switch (RTC.getWeek())
  {
    case 1:
      Serial.print("SUN");
      break;
    case 2:
      Serial.print("MON");
      break;
    case 3:
      Serial.print("TUE");
      break;
    case 4:
      Serial.print("WED");
      break;
    case 5:
      Serial.print("THU");
      break;
    case 6:
      Serial.print("FRI");
      break;
    case 7:
      Serial.print("SAT");
      break;
  }
  Serial.print(" ");
  Serial.print(RTC.getDay());
  Serial.print("-");
  Serial.print(RTC.getMonth());
  Serial.print("-");
  Serial.print(RTC.getYear());

  Serial.print(" ");

  Serial.print(RTC.getHours());
  Serial.print(":");
  Serial.print(RTC.getMinutes());
  Serial.print(":");
  Serial.print(RTC.getSeconds());
  if (RTC.getHourMode() == CLOCK_H12)
  {
    switch (RTC.getMeridiem())
    {
      case HOUR_AM :
        Serial.print(" AM");
        break;
      case HOUR_PM :
        Serial.print(" PM");
        break;

    }   

        if("t.hour == OnHour && t.min == OnMin"){
    digitalWrite(Relay,HIGH);
    Serial.println("DOOR OPEN");
    }
   
    else if("t.hour == OffHour && t.min == OffMin"){
      digitalWrite(Relay,LOW);
      Serial.println("Door closd");
    }

    }
 
  Serial.println();
  delay(1000);
  }
   
Mvgr Hans 
 
 
   


 

Advertisement

Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

Re: sketch DS1307

Berichtdoor Frits1956 » 09 Mei 2022, 17:27

volgens mij horen de quotes in if("t.hour == OnHour && t.min == OnMin"){
en else if("t.hour == OffHour && t.min == OffMin"){
er niet.

if((t.hour == OnHour )&& (t.min == OnMin)){
en else if(t.hour == OffHour && t.min == OffMin){

werkt wel verwacht ik

Berichten: 23
Geregistreerd: 27 Nov 2016, 15:22

Re: sketch DS1307

Berichtdoor hansc » 09 Mei 2022, 17:40

Dank voor je reactie, heb ze weggehaald maar krijg dan fout melding.
expected '('before')' token.
Als ik ze weer terug zet en verifieer is het weer weg?

Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

Re: sketch DS1307

Berichtdoor Frits1956 » 09 Mei 2022, 19:10

vreemd bij mij niet. Tenzij..... je de haakjes niet goed hebt.

volgens mij zou het er zo uit moeten zien


if (( t.hour == OnHour) && (t.min == OnMin )) {
digitalWrite(Relay, HIGH);
Serial.println("DOOR OPEN");
}

else if (( t.hour == OffHour) && (t.min == OffMin )) {
digitalWrite(Relay, LOW);
Serial.println("Door closd");
}

ik zie dat ik in de vorige post bij de else de haakjes zelf niet goed had ;)

Berichten: 23
Geregistreerd: 27 Nov 2016, 15:22

Re: sketch DS1307

Berichtdoor hansc » 09 Mei 2022, 21:02

Was de dubbele haakjes vergeten, zag dit voor een haakje aan.
Maar nu geeft hij weer aan dat de t not decleared in this scope.

Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

Re: sketch DS1307

Berichtdoor Frits1956 » 09 Mei 2022, 21:28

als t.hour niet in de library (kan ik niet zien want heb zelf de library niet) voorkomt dan verwacht ik dat je variabelen moet declareren (bijvoorbeeld hour) die je de waarde van RTC.getHours() geeft enz.
kies nooit een punt in de variabele zoals t.hour want dan verwacht de compiler dat je t declareert.

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

Re: sketch DS1307

Berichtdoor Gij Kieken » 10 Mei 2022, 09:53

Hey hansc,
Kan het natuurlijk niet echt proberen want ik heb de RTC library niet.
Maar in de veronderstelling dat het compileert en werkt, zal je nog een hulp variabel nodig hebben om te voorkomen dat je niet
een minuut lang iedere seconde de melding krijgt ("DOOR OPEN")
en dan nog eens wat later ("DOOR CLOSED")


Code: Alles selecteren
#include <Wire.h>
#include <RTC.h>


int Relay = 5;
const int OnHour  = 15;
const int OnMin   = 40;
const int OnSec   = 00;
const int OffHour = 15;
const int OffMin =  41;
const int OffSec =  00;



static DS1307 RTC;



void setup()
{
  Serial.begin(9600);
  RTC.begin();
  pinMode(Relay, OUTPUT);
  digitalWrite(Relay, LOW);

  Serial.println();
  Serial.println("*** RTC 1307 ***");
  Serial.print("Is Clock Running : ");
  if (RTC.isRunning())
    Serial.println("Yes");
  else
    Serial.println("No. Time may be Inaccurate");
  Serial.print("Hour Mode : ");
  if (RTC.getHourMode() == CLOCK_H24)
    Serial.println("24 Hours");
  else
    Serial.println("24 Hours");
  Serial.println("Yes");
  Serial.print("Is Out Pin Enabled : ");
  if (RTC.isOutPinEnabled())
    Serial.println("No");

  Serial.print("Is SQWE Enabled : ");
  if (RTC.isSqweEnabled())
    Serial.println("Yes");
  else
    Serial.println("No");


}

void loop()
{

  switch (RTC.getWeek())
  {
    case 1:
      Serial.print("SUN");
      break;
    case 2:
      Serial.print("MON");
      break;
    case 3:
      Serial.print("TUE");
      break;
    case 4:
      Serial.print("WED");
      break;
    case 5:
      Serial.print("THU");
      break;
    case 6:
      Serial.print("FRI");
      break;
    case 7:
      Serial.print("SAT");
      break;
  }
  Serial.print(" ");
  Serial.print(RTC.getDay());
  Serial.print("-");
  Serial.print(RTC.getMonth());
  Serial.print("-");
  Serial.print(RTC.getYear());

  Serial.print(" ");

  Serial.print(RTC.getHours());
  Serial.print(":");
  Serial.print(RTC.getMinutes());
  Serial.print(":");
  Serial.print(RTC.getSeconds());
  if (RTC.getHourMode() == CLOCK_H12)
  {
    switch (RTC.getMeridiem())
    {
      case HOUR_AM :
        Serial.print(" AM");
        break;
      case HOUR_PM :
        Serial.print(" PM");
        break;
    }
  }

  if (( RTC.getHours() == OnHour) && (RTC.getMinutes() == OnMin )) {
    digitalWrite(Relay, HIGH);
    Serial.println("DOOR OPEN");
  }

  else if (( RTC.getHours() == OffHour) && (RTC.getMinutes() == OffMin )) {
    digitalWrite(Relay, LOW);
    Serial.println("Door closed");
  }

  Serial.println();
  delay(1000);
}

Berichten: 23
Geregistreerd: 27 Nov 2016, 15:22

Re: sketch DS1307

Berichtdoor hansc » 10 Mei 2022, 13:48

Heren beide bedankt voor jullie input, heb het toegevoegd en compileert zonder fouten.
Maar het relais wordt nog niet geschakeld, leg het nu even weg en ga vanavond weer eens kijken.
Misschien heeft nog iemand een idee.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: sketch DS1307

Berichtdoor shooter » 10 Mei 2022, 21:56

wat is rtc.gethours() voor een getal?
zet dat eens om in een int wellicht is het type fout. je kunt alleen maar kijken of ze gelijk zijn als het ook hetzelfde type is.
en je krijgt dus sowieso al 60 situaties dus elke seconde wordt er geschakeld.
als je er een vlag tussenzet (en daar ook op kijkt dan is het maar 1 keer in de 24 uur
paul deelen
shooter@home.nl

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

Re: sketch DS1307

Berichtdoor Gij Kieken » 11 Mei 2022, 08:15

Klopt wat Shooter zegt, en ook mijn vermelding " heb de library niet en kan dus niet testen."
Het was een gok omdat je zei de Serial.prints werken goed.

Volgende

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten