Hi Builders,
It's been almost five hours since I found this mismatch in my own sketch. Now I have no idea how to go further. The problem in short.
My goal: read out a huge 2 dimensional (many lines, 16 columns) array, each row, one after another in sequence. (All data will be sent to a TLC5940 PWM driver.)
The problem: at the beginning and at the end of initial for... cycle, there are many unwanted, strange readouts from the array.
Here is the code (simplifed for debugging):
int channel;
int line;
int value;
int intensity;
void setup()
{
Serial.begin(9600);
}
void loop()
{
int leds [66][16] = {
{ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255 },
{ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255 },
{ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255 },
{ 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255 },
{ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
{ 0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 218, 234, 255 },
};
for (line = 0; line <= 65; line ++)
{
for (channel = 0; channel < 16; channel ++)
{
value = leds [line][channel];
Serial.print(line, DEC);
Serial.print('.');
Serial.print(channel, DEC);
Serial.print('\t');
Serial.println(value, DEC);
}
Serial.println('.');
delay(10);
}
}
Here is a copy of Serial Monitor with some notes:
[b]Line 64 and 65 are correct:[/b]
64.0 255
64.1 255
64.2 255
64.3 255
64.4 255
64.5 255
64.6 255
64.7 255
64.8 255
64.9 255
64.10 255
64.11 255
64.12 255
64.13 255
64.14 255
64.15 255
65.0 0
65.1 16
65.2 32
65.3 48
65.4 64
65.5 80
65.6 96
65.7 112
65.8 128
65.9 144
65.10 160
65.11 176
65.12 192
65.13 218
65.14 234
65.15 255
Line 0 has 255s instead of 0s.
0.0 255
0.1 255
0.2 255
0.3 255
0.4 255
0.5 255
0.6 255
0.7 255
0.8 255
0.9 255
0.10 255
0.11 255
0.12 255
0.13 255
0.14 255
0.15 255
Line 1 seems as line 65 should.
1.0 0
1.1 16
1.2 32
1.3 48
1.4 64
1.5 80
1.6 96
1.7 112
1.8 128
1.9 144
1.10 160
1.11 176
1.12 192
1.13 218
1.14 234
1.15 255
Strange values from line 2 to 8.
2.0 0
2.1 0
2.2 867
2.3 1032
2.4 761
2.5 810
2.6 778
2.7 851
2.8 2048
2.9 512
2.10 0
2.11 0
2.12 0
2.13 9842
2.14 0
2.15 10097
3.0 0
3.1 33
3.2 0
3.3 0
3.4 0
3.5 0
3.6 0
3.7 0
3.8 0
3.9 0
3.10 0
3.11 0
3.12 0
3.13 0
3.14 0
3.15 0
4.0 0
4.1 0
4.2 0
4.3 0
4.4 0
4.5 0
4.6 0
4.7 0
4.8 0
4.9 0
4.10 0
4.11 0
4.12 0
4.13 0
4.14 0
4.15 0
5.0 0
5.1 0
5.2 0
5.3 12288
5.4 2573
5.5 11829
5.6 2355
5.7 12849
5.8 14386
5.9 3384
5.10 13578
5.11 12337
5.12 12553
5.13 13619
5.14 14391
5.15 2573
6.0 11829
6.1 14385
6.2 14642
6.3 2573
6.4 11830
6.5 2353
6.6 13361
6.7 14387
6.8 3383
6.9 13834
6.10 14382
6.11 13065
6.12 14387
6.13 3379
6.14 13834
6.15 13112
7.0 3380
7.1 13834
7.2 12590
7.3 10805
7.4 13824
7.5 18176
7.6 9
7.7 -6144
7.8 3
7.9 0
7.10 0
7.11 26112
7.12 -22007
7.13 -15095
7.14 -15360
7.15 -16384
8.0 -16128
8.1 -15872
8.2 -14848
8.3 1024
8.4 1795
8.5 261
8.6 1
8.7 0
8.8 255
8.9 0
8.10 0
8.11 0
8.12 0
8.13 0
8.14 0
8.15 0
[All values are good from 9 to 59.]
Line 60 is wrong again.
60.0 0
60.1 0
60.2 0
60.3 0
60.4 0
60.5 0
60.6 0
60.7 0
60.8 0
60.9 0
60.10 0
60.11 -22007
60.12 6400
60.13 9472
60.14 25346
60.15 768
61.0 117
61.1 1026
61.2 2337
61.3 238
61.4 0
61.5 2048
61.6 1234
61.7 2161
61.8 1205
61.9 1220
61.10 196
61.11 0
61.12 0
61.13 255
61.14 0
61.15 0
62.0 0
62.1 0
62.2 0
62.3 0
62.4 0
62.5 -5111
62.6 -4599
62.7 13362
62.8 13875
62.9 53
62.10 2542
62.11 0
62.12 0
62.13 -22007
62.14 16128
62.15 3072
63.0 6656
63.1 768
63.2 630
63.3 1060
63.4 81
63.5 2
63.6 1282
63.7 66
63.8 16911
63.9 -27327
63.10 15
63.11 1187
63.12 3
63.13 104
63.14 91
63.15 255
Lines 64 and 65 are correct.
64.0 255
64.1 255
64.2 255
64.3 255
64.4 255
64.5 255
64.6 255
64.7 255
64.8 255
64.9 255
64.10 255
64.11 255
64.12 255
64.13 255
64.14 255
64.15 255
65.0 0
65.1 16
65.2 32
65.3 48
65.4 64
65.5 80
65.6 96
65.7 112
65.8 128
65.9 144
65.10 160
65.11 176
65.12 192
65.13 218
65.14 234
65.15 255
And the trouble continues.
0.0 255
0.1 255
0.2 255
0.3 255
0.4 255
0.5 255
0.6 255
0.7 255
0.8 255
0.9 255
0.10 255
0.11 255
0.12 255
0.13 255
0.14 255
0.15 255
Many thanks in advance for your support.
Regards,
Tom