Hulp nodig met if-statement.

Arduino specifieke Software
Berichten: 3
Geregistreerd: 31 Mei 2022, 16:28

Hulp nodig met if-statement.

Berichtdoor arduino prutser » 31 Mei 2022, 16:36

Goedemiddag,

Ik ben net nieuw op dit forum, en heb al even snel rond gekeken, maar ik heb nu zelf een specifieke vraag.
Ik ben bezig om een automatisch kippenluikje te maken die met zonsondergang naar beneden gaat en weer open gaat met zonsopgang. Nu heb ik hier op dit forum al meer over gelezen, en zo zelf mijn code samengesteld, maar toch werkt het niet helemaal zoals ik het hebben wil.

Ik gebruik de arduino nano, en als RTC module gebruik ik de ds3231. Ik gebruik de dusk2dawn library om de zonsop- en ondergang te kunnen programmeren.

Om hier mee te beginnen heb ik de volgende if statement aangemaakt:

if (currentMins == sunset) {
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
analogWrite(ENB, 255);
delay(10000);
}

Mijn bedoeling met deze statement is dat op exact zonsondergang, het DC motortje 10 seconden gaat draaien, helaas werkt dit niet. Ik denk zelf dat de fout in de if statement zit, maar ik zal hieronder de gehele code invoegen.

Zal iemand mij op weg kunnen helpen waar de fout in mijn code zit?
De Serial monitor ziet er overigens goed uit, die geeft de juiste tijd weer, en het juiste aantal minuten sinds middernacht.

Ik zie graag reacties verschijnen,

Groetjes





#include <math.h>
#include <Dusk2Dawn.h>
#include <EEPROM.h>
#include <Wire.h>
#include "RTClib.h"


const int motor1 = 7;
const int motor2 = 8;
const int ENB = 5;

int currentMins;
int sunrise;
int sunset;
int tijd;

DateTime now;

RTC_DS3231 rtc;

Dusk2Dawn thuis(xx.xxxx, x.xxxx, 1);


void setup() {
Serial.begin(115200);

pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);

rtc.begin();

}


void loop() {
now = rtc.now();

sunrise = thuis.sunrise(now.year(), now.month(), now.day(), true);
sunset = thuis.sunset(now.year(), now.month(), now.day(), true);
currentMins = ((now.hour()) * 60) + (now.minute());

Serial.println();
Serial.print("Now:");
Serial.print(currentMins);
Serial.println();
Serial.print("Sunrise:");
Serial.print(sunrise);
Serial.println();
Serial.print("Sunset:");
Serial.print(sunset);
Serial.println();
Serial.print("Tijd:");
Serial.print(now.hour());
Serial.print(":");
Serial.print(now.minute());
Serial.println();
delay(1000);



if (currentMins == sunset) {
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
analogWrite(ENB, 255);
delay(10000);
}
}

Advertisement

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

Re: Hulp nodig met if-statement.

Berichtdoor shooter » 02 Jun 2022, 07:58

je moet na 10 seconden wel de motor weer uitzetten natuurlijk, en je zet de tijd even stop met je delay maar die gaat wel door natuurlijk, dus eerst testen met je if en dan pas printen en je delay
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 25 gasten