Voliere besturing

Arduino specifieke Software
Berichten: 4
Geregistreerd: 07 Sep 2015, 19:05

Voliere besturing

Berichtdoor goudput » 21 Okt 2015, 11:33

Beste forum leden, sinds kort ben ik ook met Arduino bezig, veel tutorials bekeken en aan de slag gegaan.

Mijn doel is de de hardware matige voliere besturing wat betreft LED verlichting en pomp sturing via een Arduino-One te laten verlopen.
Na vele avonden heb ik met behulp van voorbeelden een werken de sketch weten te schrijven.
De bedoeling is bij en bepaalde waarde van de LDR (bij licht worden) de pomp met een interval ("aantijd en uittijd") aan en uit te laten gaan , via deze LDR wordt ook de trafo voor de LED verlichting geschakeld, via een aan uit timer wordt de dimmer aan of uit gezet.

Alles werkt echter met een probleem, dat bij licht worden de pomp met de "uittijd" start en niet zoals de bedoeling is met de "aantijd" begint.
Pomp blijft dus eerst 30 minuten uit staan.

Ik heb van alles geprobeert maar kom er niet uit, wat doe ik fout, hopelijk kan iemand mij verder helpen, zodat ik weer wat verder kom met programeren.
Hieronder de sketch:


#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC;
int waardeLDR;
int pomp = 12;
int trafo = 13;
int dimmer = 2;
int reserve = 4;
int ledState = HIGH;
byte startHour1 = 8;
byte startHour2 =11;
byte startMinute1 = 0;
byte startMinute2 = 0;
byte endHour1 = 19;
byte endHour2 = 11;
byte endMinute1 = 30;
byte endMinute2 = 1;
byte validStart1 = 0;
byte validStart2 = 0;
byte poweredOn1 = 0;
byte poweredOn2 = 0;
byte validEnd1 = 0;
byte validEnd2 = 0;
unsigned long previousMillis = 0;
const long uittijd = (30*60000);
const long aantijd = (30*60000);

void setup () {
pinMode(dimmer, OUTPUT);
pinMode(trafo, OUTPUT);
pinMode(pomp, OUTPUT);
pinMode(reserve, OUTPUT);
digitalWrite(dimmer, HIGH);
digitalWrite(trafo, HIGH);
digitalWrite(pomp, HIGH);
digitalWrite(reserve, LOW);
Serial.begin(9600);
Wire.begin();
RTC.begin();
}
void loop () {
waardeLDR = analogRead(1);
Serial.println(waardeLDR);
digitalWrite(trafo, HIGH);// led trafo uit
if (waardeLDR > 450)
{
//hier stond ( delay(100); )
unsigned long currentMillis = millis();
if (ledState == LOW)
{
if (currentMillis - previousMillis >= aantijd)
{
digitalWrite(pomp, HIGH);// pomp start
ledState = HIGH;
previousMillis = currentMillis;
}
}
else
{
if (currentMillis - previousMillis >= uittijd)
{
digitalWrite(pomp, LOW); // pomp stopt
ledState = LOW;
previousMillis = currentMillis;
}
}
}
if (waardeLDR <400)
{
digitalWrite(pomp, HIGH); // pomp stopt
digitalWrite(trafo, LOW); // led trafo aan
}
DateTime now = RTC.now();
if (now.second() == 0) {
if (poweredOn1 == 0) {
checkStartTime1();
} else {
checkEndTime1();
}
if (poweredOn2 == 0) {
checkStartTime2();
} else {
checkEndTime2();
}
if (validStart1 == 1) {
dimmeraan();
}
if (validStart2 ==1){
reserveaan();
}
if (validEnd1 == 1) {
dimmeruit();
}
if (validEnd2 ==1) {
reserveuit();
}
}
delay(100);
}
byte checkStartTime1() {
DateTime now = RTC.now();
if (now.hour() == startHour1 && now.minute() == startMinute1) {
validStart1 = 1;
poweredOn1 = 1;
} else {
validStart1 = 0;
}
return validStart1;
}
byte checkStartTime2() {
DateTime now = RTC.now();
if (now.hour() == startHour2 && now.minute() == startMinute2) {
validStart2 = 1;
poweredOn2= 1;
} else {
validStart2 = 0;
}
return validStart2;
}
byte checkEndTime1() {
DateTime now = RTC.now();
if (now.hour() == endHour1 && now.minute() == endMinute1) {
validEnd1 = 1;
poweredOn1 = 0;
} else {
validEnd1 = 0;
}
return validEnd1;
}
byte checkEndTime2() {
DateTime now = RTC.now();
if (now.hour() == endHour2 && now.minute() == endMinute2) {
validEnd2 = 1;
poweredOn2 = 0;
} else {
validEnd2 = 0;
}
return validEnd2;
}
void dimmeraan() {
digitalWrite(dimmer, LOW); // leddimmer start
}
void dimmeruit() { //
digitalWrite(dimmer, HIGH); // leddimmer stopt
}
void reserveaan(){
digitalWrite(reserve, HIGH);
}
void reserveuit(){
digitalWrite(reserve, LOW);
}

Advertisement

Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: Voliere besturing

Berichtdoor Rudi » 21 Okt 2015, 15:48

Vanaf
Code: Alles selecteren
if (waardeLDR <400)
in de loop functie wordt niets meer uitgevoerd, ga de accolades maar eens na.
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

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

Re: Voliere besturing

Berichtdoor shooter » 21 Okt 2015, 22:09

if ldr <450 dan gaat pomp uit else daar staat geen pompaan.
gebruik aub code2=cpp] dan kan ik beter haakjes kijken
en autoformat helpt ook, net als tabs.
en comments.
haal alle delay weg want dat voorkomt dat je tijdschakelaars mist beter is >= dan == want dan is het misschien te laat.
paul deelen
shooter@home.nl

Berichten: 4
Geregistreerd: 07 Sep 2015, 19:05

Re: Voliere besturing

Berichtdoor goudput » 21 Okt 2015, 22:50

Rudi schreef:Vanaf
Code: Alles selecteren
if (waardeLDR <400)
in de loop functie wordt niets meer uitgevoerd, ga de accolades maar eens na.



Bedankt voor je reactie.
Misschien kun je me wat op weg helpen.
Alle accolades nagekeken, ik zie nog niet wat hier fout moet zijn, maar ben dan ook nog niet zo lang met programeren bezig.
Wat ik wel zie dat de gehele void loop niet tussen { } staat.

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 77 gasten