timer ofzo.

Ik ben maar een ouwe man, dus het duurt allemaal lang.
Ik heb ook allemaal andere dingen te doen.
Dankzij de griep heb ik toch nog achter de computer kunen kruipen, en ik heb inmiddels al mijn belangrijke programmaatjes herschreven.
Die zijn hier bijgesloten, just in case mn computer weer een keer crashed,, maar nog niet geupload, dus ook niet getest.
Dat wordt morgen ofzo.

En ,, uitbreiding 5, zoals beloofd.

/*
This example code is in the public domain.
 */

// PARAMETER 
int Droog = 300;         // zelf invullen
int Nat = 900;           // zelf invullen
int bestwelNat = 700;
int tussenNatDroog = 600;
int bestwelDroog = 500;
int ledInterval = 1000;

int sproei_tijd = 10;    // zelf invullen

int vocht_sensor = A0;
int sensorValue = 0;
int tuinslang = 2;

const int ledPin =  13;
boolean ledState = LOW;

unsigned long current_millis_value = 0;
unsigned long previous_millis_value = 0;
unsigned long lastSensorDisplay = 0;
unsigned long lastLedDisplay = 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, TJOETSCHA
};

sproeier tuinSproeier = UIT;


void setup() 

{
  pinMode(ledPin, OUTPUT);  
  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 && (tuinSproeier == UIT)) // iedere 10 seconden als de tuinsproeier uitstaat.
  {
    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);
  }
  
  if (millis() - lastSensorDisplay >= 1000 && (tuinSproeier == AAN)) //iedere seconde als de sproeier aanstaat.
  {
    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);
  }

if (millis() - lastSensorDisplay >= 1000 && (tuinSproeier == TJOETSCHA)) //iedere seconde als de sproeier aanstaat.
  {
    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);
  }
  
  if (millis() - lastLedDisplay >= ledInterval) 
  {
    lastLedDisplay = millis();
    if (ledState == LOW)
    {ledState = HIGH;}
    else
    {ledState = LOW;}
  }
   
  
  
  // SCHAKEL MOMENTEN

  if ((hours == 0) && (minutes == 0) && (sensorValue < Droog) && (tuinSproeier == UIT)) 
  { 
    tuinSproeier = AAN;
  }

  if ((hours == 1) && (minutes == 0) && (sensorValue < Droog) && (tuinSproeier == UIT)) 
  { 
    tuinSproeier = AAN; 
  }

  if ((hours == 1) && (minutes == 0) && (sensorValue < Droog) && (tuinSproeier == TJOETSCHA)) 
  { 
    tuinSproeier = UIT; 
  }

  if ((hours == 0) && (minutes == 10) && (tuinSproeier == AAN)) 
  { 
    tuinSproeier = TJOETSCHA; 
  }

  if ((hours == 1) && (minutes == 10) && (tuinSproeier == AAN)) 
  { 
    tuinSproeier = TJOETSCHA; 
  }

  if ((sensorValue >= Nat) && (tuinSproeier == AAN))
  { 
    tuinSproeier = UIT; 
  }

  
  

  if (sensorValue <= Droog)
  {
  ledInterval = 500;  //have seconde betekent emergency
  }

  if (sensorValue > Droog)
  {
  ledInterval = 1000;
  }

  if (sensorValue >= bestwelDroog)
  {
  ledInterval = 2000;
  }

 if (sensorValue >= tussenNatDroog)
  {
  ledInterval = 3000;
  }
  
   if (sensorValue >= bestwelNat)
  {
  ledInterval = 4000;
  }
  
   if (sensorValue >= Nat)
  {
  ledInterval = 5000;
  }

  // execute de sproeier;
  if (tuinSproeier == AAN) digitalWrite(tuinslang, HIGH );
  if (tuinSproeier == TJOETSCHA) digitalWrite(tuinslang, LOW );
  if (tuinSproeier == UIT) digitalWrite(tuinslang, LOW );
  
  //onboard led_13. ledInterval per milliseconde.
    digitalWrite(ledPin, ledState);

  //bonus
  //if Droog, Nat tussenNatDroog
  //if (ledState etc
}



/*    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;
          }
        }
      }
    }
  }
}

Nog niet helemaal perfect, but don't you worry.

web_toggle_knop_timer_kubota_20140113.ino (11.2 KB)

wc_kachel_timer_Corto_Maltese_20140112.ino (4.77 KB)

verlichting_vooronder_20140113.ino (7.29 KB)