const int inpin = A5;                                //hier kan pin nummer of analog pin naam (A0...An, afhankelijk van model)
int relayPins[] = {23, 22, 21, 20};                  //relays connected to these pins (K1 -> K4)
const float diff = 0.2;                              //margin
bool state [4];                                      //keep status of relay pins


void setup()
{
  analogReference (DEFAULT);                         //reference = 5V
  for (int i = 0; i < 4; i++)
  {
    pinMode (relayPins[i], OUTPUT);
    digitalWrite(relayPins[i], LOW);                 //relays not activated
    state[i] = false;
  }
}

void loop()
{
  if (int readval = analogRead (inpin) > 165)                        //165*5/1023 = 0.80 gebruikt om een ingedrukte toets te detecteren
  {
    delay(200);                                                      //wacht 200 mSec om zeker te zijn dat ingangsspanning op juiste niveau komt en stabiel
    float volt = ((analogRead(inpin)) * (5.0 / 1023.0)) + diff;      //meet opnieuw & omzetten naar waarde tussen 0 and 5.0, tel diff er bij om volt altijd groter te maken dan 1.0,2.0 etc
    int volt_i = int(volt);                                          //gemeten volt + diff zonder decimalen: voor volt tussen 1 en 2 -> altijd volt_i = 1, enz...


    for (int pin = 0; pin < 4; pin ++)
    {
      if (volt_i == (pin + 1))
      {
        state[pin] != state[pin];                         //toggle
        if (state[pin] == true)
        {
          digitalWrite (relayPins[pin], HIGH);            //activate relay
        }
        else
        {
          digitalWrite (relayPins[pin], LOW);            //drop relay
        }
      }
    }
    while (readval = analogRead (inpin) > 82)                        //wacht tot toets losgelaten 82*5/1023 = 0.4
    {
      delay (100);
    }
  }
  delay (200);  // go thru loop every 200 mSec
}



