refactored tuinSproeier
/*
This example code is in the public domain.
*/
// PARAMETER
int droog = 300; // zelf invullen
int nat = 900; // zelf invullen
int sproei_tijd = 10; // zelf invullen
int vocht_sensor = A0;
int sensorValue = 0;
int tuinslang = 2;
unsigned long current_millis_value = 0;
unsigned long previous_millis_value = 0;
unsigned long lastSensorDisplay = 0;
uint8_t seconds = 0;
uint8_t minutes = 0;
uint8_t hours = 0;
uint16_t days = 0; // 365 does not fit an int.
uint8_t weeks = 0;
uint8_t months = 0;
uint8_t years = 14; // 2014
unsigned long centuries = 20;
// nieuw datatype
enum sproeier
{
AAN, UIT
};
sproeier tuinSproeier = UIT;
void setup()
{
pinMode(vocht_sensor, INPUT);
digitalWrite(vocht_sensor, HIGH);
pinMode(tuinslang, OUTPUT);
digitalWrite (tuinslang, LOW);
Serial.begin(115200);
Serial.println("tuinsproeier");
if (nat <= droog)
{
Serial.println("error");
}
}
void loop()
{
// UPDATE CLOCK
clock();
// SENSOR
sensorValue = analogRead(vocht_sensor);
if (millis() - lastSensorDisplay >= 10000) // ieder 10 seconden
{
lastSensorDisplay = millis();
Serial.print(hours);
Serial.print(":");
Serial.print(minutes);
Serial.print(":");
Serial.print(seconds);
Serial.print("\t");
Serial.print("vocht sensor");
Serial.println(sensorValue);
}
// SCHAKEL MOMENTEN
if ((hours == 0) && (minutes == 0) && (sensorValue < droog) && (tuinSproeier == UIT))
{
tuinSproeier = AAN;
}
if ((hours == 0) && (minutes == 30) && (tuinSproeier == AAN))
{
tuinSproeier = UIT;
}
if ((sensorValue >= nat) && (tuinSproeier == AAN))
{
tuinSproeier = UIT;
}
// execute de sproeier;
if (tuinSproeier == AAN) digitalWrite(tuinslang, HIGH );
if (tuinSproeier == UIT) digitalWrite(tuinslang, LOW );
}
/* CLOCK */
void clock()
{
current_millis_value = millis();
if (current_millis_value - previous_millis_value >= 1000) // subtraction + inequality
{
previous_millis_value = current_millis_value;
seconds++;
if (seconds == 60)
{
minutes++;
seconds = 0;
if (minutes == 60)
{
hours++;
minutes = 0;
if (hours == 24)
{
days++;
hours = 0;
// these formulas are approximate
if (days % 7 == 0) weeks++;
if (days % 30 == 0) months++;
if (days % 365 == 0) // does not do leapyears yet
{
years++;
days = 1;
weeks = 1;
months = 1;
}
if (years == 100)
{
centuries++; // can do 4294967295 centuries == 30x age of universe
years = 0;
}
}
}
}
}
}