Even more data, and the stranger it gets…
I rewired all 11 outputs to LEDs. Defined all as OUTPUT. I use a chaser program (very simple) to step through the outputs, one at a time, every second.
If I use digitalWrite statements to drive the outputs, it works great. Just as expected.
If I use analogWrite statements to drive the LEDs, then all heck breaks out. The FIRST time the program runs, outputs 1, 2, & 3 are fine, but when 4 turns on, it also turns on 1. Then, each time AFTER that first pass, whenever it turns on output 1 it also turns on output 4. Outputs 2 & 10 are linked. Outputs 3 & 8 are linked. Outputs 5 & 9 are linked. In fact, the only outputs that do not interact with others in analog mode appears to be outputs 0, 6 & 7.
Code I used below.
I look forward to a really simple answer that makes me look stupid… please.
Thanks,
DJG
My sample code:
void setup() {
// put your setup code here, to run once:
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(0,OUTPUT);
//Starting serial monitor communications
Serial.begin(9600);
delay(2000);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Restarting cycle at: " + String(millis()));
int Brightness = 255;
int StepDelay = 1000;
//This section drives the outputs using analog statements.
// Comment it out to run the digital section below
analogWrite(0,0);
analogWrite(1,Brightness);
delay(StepDelay);
analogWrite(1,0);
analogWrite(2,Brightness);
delay(StepDelay);
analogWrite(2,0);
analogWrite(3,Brightness);
delay(StepDelay);
analogWrite(3,0);
analogWrite(4,Brightness);
delay(StepDelay);
analogWrite(4,0);
analogWrite(5,Brightness);
delay(StepDelay);
analogWrite(5,0);
analogWrite(6,Brightness);
delay(StepDelay);
analogWrite(6,0);
analogWrite(7,Brightness);
delay(StepDelay);
analogWrite(7,0);
analogWrite(8,Brightness);
delay(StepDelay);
analogWrite(8,0);
analogWrite(9,Brightness);
delay(StepDelay);
analogWrite(9,0);
analogWrite(10,Brightness);
delay(StepDelay);
analogWrite(10,0);
analogWrite(0,Brightness);
delay(StepDelay);
//This code drives the outs with digital statements. Comment it out to use the analog section above.
/*
digitalWrite(0,false);
digitalWrite(1,true);
delay(StepDelay);
digitalWrite(1,false);
digitalWrite(2,true);
delay(StepDelay);
digitalWrite(2,false);
digitalWrite(3,true);
delay(StepDelay);
digitalWrite(3,false);
digitalWrite(4,true);
delay(StepDelay);
digitalWrite(4,false);
digitalWrite(5,true);
delay(StepDelay);
digitalWrite(5,false);
digitalWrite(6,true);
delay(StepDelay);
digitalWrite(6,false);
digitalWrite(7,Brightness);
delay(StepDelay);
digitalWrite(7,false);
digitalWrite(8,true);
delay(StepDelay);
digitalWrite(8,false);
digitalWrite(9,true);
delay(StepDelay);
digitalWrite(9,false);
digitalWrite(10,true);
delay(StepDelay);
digitalWrite(10,false);
digitalWrite(0,true);
delay(StepDelay);
*/
}
Blockquote