ok so theoretically this circuit should be able to handle 12 leds (n pins: n^2-n=leds, 4^2-4=12). So if i add in the code for the last 2 leds, i get some odd results.
Here is modified code:
int aPin = 0;
int bPin = 1;
int cPin = 2;
int dPin = 3;
int aPinIO[] = {1,1,1,1,1,1,0,0,0,0,0,0};
int bPinIO[] = {1,1,0,0,0,0,1,1,1,1,0,0};
int cPinIO[] = {0,0,1,1,0,0,1,1,0,0,1,1};
int dPinIO[] = {0,0,0,0,1,1,0,0,1,1,1,1};
int aPinHL[] = {HIGH,LOW,HIGH,LOW,HIGH,LOW,-1,-1,-1,-1,-1,-1};
int bPinHL[] = {LOW,HIGH,-1,-1,-1,-1,HIGH,LOW,HIGH,LOW,-1,-1};
int cPinHL[] = {-1,-1,LOW,HIGH,-1,-1,LOW,HIGH,-1,-1,HIGH,LOW};
int dPinHL[] = {-1,-1,-1,-1,LOW,HIGH,-1,-1,LOW,HIGH,LOW,HIGH};
int testLEDs[] = {1,0,1,0,1,0,1,0,1,0};
int numLEDs = 10;
int val = 0;
int potPin = 2;
int i;
void setup() {
Serial.begin(9600);
val = analogRead(potPin);
val = map(val, 0, 1023, 0, 11);
Serial.print("START val: ");
Serial.println(val);
i=val;
Serial.println("PIN: Pin#, Input(0)/Output(1), Output High/Low");
Serial.print("A: ");
Serial.print(aPin);
Serial.print(", ");
Serial.print(aPinIO[i]);
Serial.print(", ");
Serial.println(aPinHL[i]);
Serial.print("B: ");
Serial.print(bPin);
Serial.print(", ");
Serial.print(bPinIO[i]);
Serial.print(", ");
Serial.println(bPinHL[i]);
Serial.print("C: ");
Serial.print(cPin);
Serial.print(", ");
Serial.print(cPinIO[i]);
Serial.print(", ");
Serial.println(cPinHL[i]);
Serial.print("D: ");
Serial.print(dPin);
Serial.print(", ");
Serial.print(dPinIO[i]);
Serial.print(", ");
Serial.println(dPinHL[i]);
if(aPinIO[i]) {
pinMode(aPin, OUTPUT);
}
else {
pinMode(aPin, INPUT);
}
if(bPinIO[i]) {
pinMode(bPin, OUTPUT);
}
else {
pinMode(bPin, INPUT);
}
if(cPinIO[i]) {
pinMode(cPin, OUTPUT);
}
else {
pinMode(cPin, INPUT);
}
if(dPinIO[i]) {
pinMode(dPin, OUTPUT);
}
else {
pinMode(dPin, INPUT);
}
}
void loop() {
if(aPinIO[i]) {
digitalWrite(aPin, aPinHL[i]);
}
if(bPinIO[i]) {
digitalWrite(bPin, bPinHL[i]);
}
if(cPinIO[i]) {
digitalWrite(cPin, cPinHL[i]);
}
if(dPinIO[i]) {
digitalWrite(dPin, dPinHL[i]);
}
val = analogRead(potPin);
val = map(val, 0, 1023, 0, 11);
Serial.print("val: ");
Serial.println(val);
}
/*for(i=0;i<numLEDs;i++) {
if(aPinIO[i]) {
pinMode(aPin, OUTPUT);
//digitalWrite(aPin, aPinHL[i]);
}
else {
pinMode(aPin, INPUT);
}
if(bPinIO[i]) {
pinMode(bPin, OUTPUT);
//digitalWrite(bPin, bPinHL[i]);
}
else {
pinMode(bPin, INPUT);
}
if(cPinIO[i]) {
pinMode(cPin, OUTPUT);
//digitalWrite(cPin, cPinHL[i]);
}
else {
pinMode(cPin, INPUT);
}
if(dPinIO[i]) {
pinMode(dPin, OUTPUT);
//digitalWrite(dPin, dPinHL[i]);
}
else {
pinMode(dPin, INPUT);
}
if(aPinIO[i]) {
digitalWrite(aPin, aPinHL[i]);
}
if(bPinIO[i]) {
digitalWrite(bPin, bPinHL[i]);
}
if(cPinIO[i]) {
digitalWrite(cPin, cPinHL[i]);
}
if(dPinIO[i]) {
digitalWrite(dPin, dPinHL[i]);
}
}*/
notice that the pot now maps 0-11.
now when i set the pot to 11 i get leds 10 and 7 on. when i set it to 10 i get leds 8 and 9 on.
does this make sense? i am beginning to think that i have the wiring theory wrong. :-/