Accéléré diffusion pov (persistence de vision)

Bonjour,

Voila, j'ai fait un projet de persistance de vision en utilisant ce code, mais j'aimerais bien accéléré la diffusion du message, pour pouvoir mieux le voir et avoir un affichage plus fluide. Comment serait-ce possible?
voici le code:

/*
##########################
# Arduino POV for 10 LEDs #
##########################

Circuit: 10 LEDs connected to pins 2 to 11 (with resistors, usually 560 ohm)

Each character is given a 10x10 grid to represent it's self
For example "H" is
O 0       0 0
O 0       0 0
O O       0 0
O 0       0 0
O 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0       0 0
0 0       0 0
0 0       0 0
0 0       0 0
each of these vertical lines is made from a single number
for the "H" example the numbers are 31,4,4,4,31

512  O 0       0 0
256  O 0       0 0
128  O O       0 0
64   O 0       0 0
32   O 0 0 0 0 0 0
16   0 0 0 0 0 0 0
8    0 0       0 0
4    0 0       0 0
2    0 0       0 0
1    0 0       0 0

t    1 1 0 0 0 1 1 0 0 0
o    0 0 0 0 0 0 0 0 0 0
t    2 2 4 4 4 2 2 0 0 0
     3 3 8 8 8 3 3 0 0 0

1023 is 512+256+128+64+32+16+8+4+2+1 (all LEDs are lit)
48   is 000+000+000+00+32+16+0+0+0+0  (only the middle 2 LEDs are lit)

thus the definition for h is...
int h[] = {1023,1023,48,48,48,1023,1023,0,0,0};

*/


int delayTime = 2; //sub-char delay time
int charBreak = 5; //char delay time


int LED0 = 3;
int LED1 = 4;
int LED2 = 5;
int LED3 = 6;
int LED4 = 7;
int LED5 = 8;
int LED6 = 9;
int LED7 = 10;
int LED8 = 11;
int LED9 = 12;

void setup()
{
  pinMode(LED0, OUTPUT);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);
  pinMode(LED7, OUTPUT);
  pinMode(LED8, OUTPUT);
  pinMode(LED9, OUTPUT);  
}

//lets define a font, yay

int a[] = {7,31,248,216,792,792,216,248,31,7};
int b[] = {1023,1023,819,819,478,478,0,0,0,0};
int c2[] = {120,510,390,771,771,771,462,204,0,0};
int d[] = {1023,1023,771,771,390,510,120,0,0,0};
int e[] = {1023,1023,819,819,819,771,771,0,0,0};
int f[] = {1023,1023,816,816,816,768,768,0,0,0};
int g[] = {0,252,510,903,771,795,927,414,24,0};
int h[] = {1023,1023,48,48,48,1023,1023,0,0,0};
int i[] = {771,771,1023,1023,771,771,0,0,0,0};
int j[] = {771,771,1023,1023,768,768,0,0,0,0};
int k[] = {1023,1023,120,204,390,771,513,0,0,0};
int l[] = {1023,1023,3,3,3,3,0,0,0,0};
int m[] = {1023,1023,448,224,56,56,224,448,1023,1023};
int n[] = {1023,1023,448,224,56,28,1023,1023,0,0};
int o[] = {120,252,390,771,771,771,390,252,120,0};
int p[] = {1023,1023,816,816,480,480,0,0,0,0};
int q[] = {120,510,390,771,795,414,510,126,6,0};
int r[] = {1023,1023,816,824,510,199,3,0,0,0};
int s[] = {230,502,947,819,926,396,0,0,0,0};
int t[] = {768,768,768,1023,1023,768,768,768,0,0};
int u[] = {1016,1022,6,3,3,3,6,1022,1016,0};
int v[] = {768,960,240,60,15,15,60,240,960,768};
int w[] = {240,254,7,62,112,62,7,254,240,0};
int x[] = {771,903,462,252,120,120,252,462,903,771};
int y[] = {771,903,462,252,120,112,224,448,896,768};
int z[] = {775,783,799,827,883,995,963,899,0,0};

int eos[] = {3,3,0,0,0,0,0,0,0,0};
int excl[] = {448,1019,1019,448,0,0,0,0,0,0};
int ques[] = {192,448,768,795,795,816,480,192,0,0};
int spa[] = {0,0,0,0,0,0,0,0,0,0};

void displayLine(int line)
{
  int myline;
  myline = line;
  if (myline>=512)  {digitalWrite(LED0, HIGH); myline-=512;}  else {digitalWrite(LED0, LOW);}
  if (myline>=256)  {digitalWrite(LED1, HIGH); myline-=256;}  else {digitalWrite(LED1, LOW);}
  if (myline>=128)  {digitalWrite(LED2, HIGH); myline-=128;}  else {digitalWrite(LED2, LOW);}
  if (myline>=64)   {digitalWrite(LED3, HIGH); myline-=64;}   else {digitalWrite(LED3, LOW);}
  if (myline>=32)   {digitalWrite(LED4, HIGH); myline-=32;}   else {digitalWrite(LED4, LOW);}    
  if (myline>=16)   {digitalWrite(LED5, HIGH); myline-=16;}   else {digitalWrite(LED5, LOW);}
  if (myline>=8)    {digitalWrite(LED6, HIGH); myline-=8;}    else {digitalWrite(LED6, LOW);}
  if (myline>=4)    {digitalWrite(LED7, HIGH); myline-=4;}    else {digitalWrite(LED7, LOW);}
  if (myline>=2)    {digitalWrite(LED8, HIGH); myline-=2;}    else {digitalWrite(LED8, LOW);}
  if (myline>=1)    {digitalWrite(LED9, HIGH); myline-=1;}    else {digitalWrite(LED9, LOW);}  
}

void displayChar(char c)
{
  if (c == 'a'){for (int i = 0; i <10; i++){displayLine(a[i]);delay(delayTime);}displayLine(0);}
  if (c == 'b'){for (int i = 0; i <10; i++){displayLine(b[i]);delay(delayTime);}displayLine(0);}
  if (c == 'c'){for (int i = 0; i <10; i++){displayLine(c2[i]);delay(delayTime);}displayLine(0);}
  if (c == 'd'){for (int i = 0; i <10; i++){displayLine(d[i]);delay(delayTime);}displayLine(0);}
  if (c == 'e'){for (int i = 0; i <10; i++){displayLine(e[i]);delay(delayTime);}displayLine(0);}
  if (c == 'f'){for (int i = 0; i <10; i++){displayLine(f[i]);delay(delayTime);}displayLine(0);}
  if (c == 'g'){for (int i = 0; i <10; i++){displayLine(g[i]);delay(delayTime);}displayLine(0);}
  if (c == 'h'){for (int i = 0; i <10; i++){displayLine(h[i]);delay(delayTime);}displayLine(0);}  
  if (c == 'i'){for (int it = 0; it <10; it++){displayLine(i[it]);delay(delayTime);}displayLine(0);}
  if (c == 'j'){for (int i = 0; i <10; i++){displayLine(j[i]);delay(delayTime);}displayLine(0);}
  if (c == 'k'){for (int i = 0; i <10; i++){displayLine(k[i]);delay(delayTime);}displayLine(0);}
  if (c == 'l'){for (int i = 0; i <10; i++){displayLine(l[i]);delay(delayTime);}displayLine(0);}
  if (c == 'm'){for (int i = 0; i <10; i++){displayLine(m[i]);delay(delayTime);}displayLine(0);}
  if (c == 'n'){for (int i = 0; i <10; i++){displayLine(n[i]);delay(delayTime);}displayLine(0);}
  if (c == 'o'){for (int i = 0; i <10; i++){displayLine(o[i]);delay(delayTime);}displayLine(0);}
  if (c == 'p'){for (int i = 0; i <10; i++){displayLine(p[i]);delay(delayTime);}displayLine(0);}
  if (c == 'q'){for (int i = 0; i <10; i++){displayLine(q[i]);delay(delayTime);}displayLine(0);}
  if (c == 'r'){for (int i = 0; i <10; i++){displayLine(r[i]);delay(delayTime);}displayLine(0);}
  if (c == 's'){for (int i = 0; i <10; i++){displayLine(s[i]);delay(delayTime);}displayLine(0);}
  if (c == 't'){for (int i = 0; i <10; i++){displayLine(t[i]);delay(delayTime);}displayLine(0);}
  if (c == 'u'){for (int i = 0; i <10; i++){displayLine(u[i]);delay(delayTime);}displayLine(0);}
  if (c == 'v'){for (int i = 0; i <10; i++){displayLine(v[i]);delay(delayTime);}displayLine(0);}
  if (c == 'w'){for (int i = 0; i <10; i++){displayLine(w[i]);delay(delayTime);}displayLine(0);}
  if (c == 'x'){for (int i = 0; i <10; i++){displayLine(x[i]);delay(delayTime);}displayLine(0);}
  if (c == 'y'){for (int i = 0; i <10; i++){displayLine(y[i]);delay(delayTime);}displayLine(0);}
  if (c == 'z'){for (int i = 0; i <10; i++){displayLine(z[i]);delay(delayTime);}displayLine(0);}
  if (c == '!'){for (int i = 0; i <10; i++){displayLine(excl[i]);delay(delayTime);}displayLine(0);}
  if (c == '?'){for (int i = 0; i <10; i++){displayLine(ques[i]);delay(delayTime);}displayLine(0);}
  if (c == '.'){for (int i = 0; i <10; i++){displayLine(eos[i]);delay(delayTime);}displayLine(0);}
  if (c == '_'){for (int i = 0; i <10; i++){displayLine(spa[i]);delay(delayTime);}displayLine(0);}
  delay(charBreak);
}

void displayString(char* s)
{
  for (int i = 0; i<=strlen(s); i++)
  {
    displayChar(s[i]);
  }
}

void loop()
{    
  displayString("rock!");
}

Merci d'avance!

Hello,

T'as essayé en changeant la valeur de la variable delayTime?

Bonjour,

Je pense que pour accélérer l'affichage il faudrait modifier charBreak ET delayTime, d'après ce que je comprend charBreak est le temps entre deux caractéres et delayTime le temps entre chaque "portions" d'une lettres.

Donc en toute théorie

int delayTime = 1;
int charBreak = 3;

Devrait donner un affichage 2x plus rapide.