ok, so i’ve got a 3 x 3 matrix of led’s, which at the moment are selected by two pot’s, one for x axis, and one for y, but that will change in a moment.
the only way i know to make it only turn on one led is like so (code to follow) and I am wondering if there is (i’m sure there is) another, shorter way to do this in the code
int g1 = 3;
int g2 = 4;
int g3 = 5;
int b1 = 6;
int b2 = 7;
int b3 = 8;
int r1 = 9;
int r2 = 10;
int r3 = 11;
int pot1 = 5;
int pot2 = 4;
int x = 0;
int y = 0;
void setup()
{
pinMode(g1, OUTPUT);
pinMode(g2, OUTPUT);
pinMode(g3, OUTPUT);
pinMode(b1, OUTPUT);
pinMode(b2, OUTPUT);
pinMode(b3, OUTPUT);
pinMode(r1, OUTPUT);
pinMode(r2, OUTPUT);
pinMode(r3, OUTPUT);
}
void loop()
{
x = analogRead(pot1);
y = analogRead(pot2);
x = x/4;
y = y/4;
if (x <= 85 && y <= 85)
{
digitalWrite(g1, HIGH);
digitalWrite(g2, LOW);
digitalWrite(g3, LOW);
digitalWrite(b1, LOW);
digitalWrite(b2, LOW);
digitalWrite(b3, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(r3, LOW);
}
else if ((x <= 85) && (y > 85 && y <= 170))
{
digitalWrite(g1, LOW);
digitalWrite(g2, HIGH);
digitalWrite(g3, LOW);
digitalWrite(b1, LOW);
digitalWrite(b2, LOW);
digitalWrite(b3, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(r3, LOW);
}
else if ((x <= 85) && (y > 170 && y <= 255))
{
digitalWrite(g1, LOW);
digitalWrite(g2, LOW);
digitalWrite(g3, HIGH);
digitalWrite(b1, LOW);
digitalWrite(b2, LOW);
digitalWrite(b3, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(r3, LOW);
}
else if ((x > 85 && x <= 170) && (y <= 85))
{
digitalWrite(g1, LOW);
digitalWrite(g2, LOW);
digitalWrite(g3, LOW);
digitalWrite(b1, HIGH);
digitalWrite(b2, LOW);
digitalWrite(b3, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(r3, LOW);
}
else if ((x > 85 && x <= 170) && (y > 85 && y <= 170))
{
digitalWrite(g1, LOW);
digitalWrite(g2, LOW);
digitalWrite(g3, LOW);
digitalWrite(b1, LOW);
digitalWrite(b2, HIGH);
digitalWrite(b3, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(r3, LOW);
}
else if ((x > 85 && x <= 170) && (y > 170 && y <= 255))
{
digitalWrite(g1, LOW);
digitalWrite(g2, LOW);
digitalWrite(g3, LOW);
digitalWrite(b1, LOW);
digitalWrite(b2, LOW);
digitalWrite(b3, HIGH);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(r3, LOW);
}
else if ((x > 170 && x <= 255) && (y <= 85))
{
digitalWrite(g1, LOW);
digitalWrite(g2, LOW);
digitalWrite(g3, LOW);
digitalWrite(b1, LOW);
digitalWrite(b2, LOW);
digitalWrite(b3, LOW);
digitalWrite(r1, HIGH);
digitalWrite(r2, LOW);
digitalWrite(r3, LOW);
}
else if ((x > 170 && x <= 255) && (y > 85 && y <= 170))
{
digitalWrite(g1, LOW);
digitalWrite(g2, LOW);
digitalWrite(g3, LOW);
digitalWrite(b1, LOW);
digitalWrite(b2, LOW);
digitalWrite(b3, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, HIGH);
digitalWrite(r3, LOW);
}
else if ((x > 170 && x <= 255) && (y > 170 && y <= 255))
{
digitalWrite(g1, LOW);
digitalWrite(g2, LOW);
digitalWrite(g3, LOW);
digitalWrite(b1, LOW);
digitalWrite(b2, LOW);
digitalWrite(b3, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
digitalWrite(r3, HIGH);
}
}