Hey I was hoping someone could help me with this.
I’m trying to control the speed of some Charlieplexed LEDs. I’m using Millis() as a timer NOT dely(). The pot I’m using is a 100k ohm linear taper pot 250vdc .25w that I picked up at Radio Shack. I hooked it up exactly as shown on this page:
http://www.arduino.cc/en/Tutorial/Potentiometer
In fact if you look at my code you’ll see I even “borrowed” some of the code off that page
With the pot turned all the way left and about and about 1/4" to the right is where I can control the speed of the LEDs. If I go any farther to the right the LEDs slow way down but then the pot stops effecting the speed of the LEDS. It starts working again after ten or fifteen seconds but only if I stay in that 1/4" zone at the top left… Have I chosen the wrong pot? My code is pretty basic so it can’t be that or can it? I’m still pretty new at this so I’m not 100% sure of what I’m doing :-}
I looked at pots on Mouser.com but they toss so much information at me that I don’t understand I didn’t know what to buy. I did get two pots from SparkFun. A 10k Ohm and a 4.7k Ohm. Unfortunately they both look EXACTLY the same and there are no markings on them. So I can’t tell which is which :-/ One of them works and the other doesn’t work at all. The one that works doesn’t work as well as the 100k ohm I got from Radio Shack :-/
I would like better control over the speed of the LEDs. What the heck am I doing wrong? My code is below…
int pin1 = 7;
int pin2 = 6;
int pin3 = 5;
int pin4 = 4;
int pin5 = 3;
int pin6 = 2;
int pinF = 8;
int pinE = 9;
int pinD = 10;
int pinC = 11;
int pinB = 12;
int pinA = 13;
long t;
int A;
int potPin = 2; // select the input pin for the potentiometer
void setup() {
}
void loop() {
A = analogRead(potPin); // read the value from the sensor
int ledarray[30][20]=
{
/*LED 1*/{OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,HIGH,LOW,HIGH,LOW,pin1,pin2,pinA,pinB},
/*LED 2*/{OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,LOW,HIGH,LOW,HIGH,pin2,pin1,pinB,pinA},
/*LED 3*/{INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,HIGH,LOW,HIGH,LOW,pin2,pin3,pinB,pinC},
/*LED 4*/{INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,HIGH,LOW,HIGH,LOW,pin3,pin2,pinC,pinB},
/*LED 5*/{INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,HIGH,LOW,HIGH,LOW,pin3,pin4,pinC,pinD},
/*LED 6*/{INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,HIGH,LOW,HIGH,LOW,pin4,pin3,pinD,pinC},
/*LED 7*/{INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,HIGH,LOW,HIGH,LOW,pin4,pin5,pinD,pinE},
/*LED 8*/{INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,HIGH,LOW,HIGH,LOW,pin5,pin4,pinE,pinD},
/*LED 9*/{INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,HIGH,LOW,HIGH,LOW,pin5,pin6,pinE,pinF},
/*LED 10*/{INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,HIGH,LOW,HIGH,LOW,pin6,pin5,pinF,pinE},
/*LED 11*/{OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,HIGH,LOW,HIGH,LOW,pin1,pin3,pinA,pinC},
/*LED 12*/{OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,HIGH,LOW,HIGH,LOW,pin3,pin1,pinC,pinA},
/*LED 13*/{INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,HIGH,LOW,HIGH,LOW,pin2,pin4,pinB,pinD},
/*LED 14*/{INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,HIGH,LOW,HIGH,LOW,pin4,pin2,pinD,pinB},
/*LED 15*/{INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,HIGH,LOW,HIGH,LOW,pin3,pin5,pinC,pinE},
/*LED 16*/{INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,HIGH,LOW,HIGH,LOW,pin5,pin3,pinE,pinC},
/*LED 17*/{INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,HIGH,LOW,HIGH,LOW,pin4,pin6,pinD,pinF},
/*LED 18*/{INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,HIGH,LOW,HIGH,LOW,pin6,pin4,pinF,pinD},
/*LED 19*/{OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,HIGH,LOW,HIGH,LOW,pin1,pin4,pinA,pinD},
/*LED 20*/{OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,HIGH,LOW,HIGH,LOW,pin4,pin1,pinD,pinA},
/*LED 21*/{INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,HIGH,LOW,HIGH,LOW,pin2,pin5,pinB,pinE},
/*LED 22*/{INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,HIGH,LOW,HIGH,LOW,pin5,pin2,pinE,pinB},
/*LED 23*/{INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,HIGH,LOW,HIGH,LOW,pin3,pin6,pinC,pinF},
/*LED 24*/{INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,INPUT,INPUT,OUTPUT,HIGH,LOW,HIGH,LOW,pin6,pin3,pinF,pinC},
/*LED 25*/{OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,HIGH,LOW,HIGH,LOW,pin1,pin5,pinA,pinE},
/*LED 26*/{OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,HIGH,LOW,HIGH,LOW,pin5,pin1,pinE,pinA},
/*LED 27*/{INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,HIGH,LOW,HIGH,LOW,pin2,pin6,pinB,pinF},
/*LED 28*/{INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,INPUT,OUTPUT,INPUT,INPUT,INPUT,OUTPUT,HIGH,LOW,HIGH,LOW,pin6,pin2,pinF,pinB},
/*LED 29*/{OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,HIGH,LOW,HIGH,LOW,pin1,pin6,pinA,pinF},
/*LED 30*/{OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,OUTPUT,INPUT,INPUT,INPUT,INPUT,OUTPUT,HIGH,LOW,HIGH,LOW,pin6,pin1,pinF,pinA},
};
for(int led = 0; led < 30; led++ ){
pinMode(pin1, ledarray[led][0]);
pinMode(pin2, ledarray[led][1]);
pinMode(pin3, ledarray[led][2]);
pinMode(pin4, ledarray[led][3]);
pinMode(pin5, ledarray[led][4]);
pinMode(pin6, ledarray[led][5]);
pinMode(pinA, ledarray[led][6]);
pinMode(pinB, ledarray[led][7]);
pinMode(pinC, ledarray[led][8]);
pinMode(pinD, ledarray[led][9]);
pinMode(pinE, ledarray[led][10]);
pinMode(pinF, ledarray[led][11]);
digitalWrite(ledarray[led][16], ledarray[led][12]);
digitalWrite(ledarray[led][17], ledarray[led][13]);
digitalWrite(ledarray[led][18], ledarray[led][14]);
digitalWrite(ledarray[led][19], ledarray[led][15]);
t = millis();
while(t+A>millis());
}
}
Does it make a difference that I put my timer at the bottom of the loop?