With one analogPin the code looks like (not tested)
//
// FILE: VellemanVMA05.x.ino
// AUTHOR: Rob Tillaart
// VERSION: 0.1.00b
// PURPOSE: demo
// DATE: 2015-10-28
// URL:
//
// Released to the public domain
//
bool maychange[6] = { 0, 0, 0, 0, 0, 0};
// analog values to be tuned by proper choosing resistors.
int ar[10] = { 0, 84, 136, 153, 193, 244, 512 };
int findIndex(int raw, int ar[], int len, int margin = 3, int errValue = -1)
{
int rv = errValue;
for (int i = 0; i < len; i++)
{
if ((ar[i] - margin <= raw) && (raw <= ar[i] + margin))
{
rv = i;
break;
}
}
return rv;
}
void setup()
{
Serial.begin(115200);
Serial.print("Start ");
Serial.println(__FILE__);
for (int i = 8; i < 14; i++) pinMode(i, OUTPUT); // relay pins
}
void loop()
{
int x = analogRead(A0);
int i = findIndex(x, ar, 9);
if (i != -1)
{
if (maychange[i] == 1) // 1 = true 0 = false
{
maychange[i] = 0;
int relay = i + 8;
digitalWrite(relay, ! digitalRead(relay)); // toggle
}
}
else
{
for (int p = 0; p < 6; p++) maychange[p] = 1;
}
delay(100); // some debounce time
// other code here
}