Sì. La differenza è evidente: con 15mS fa un bip brevissimo, come un "tic". Inoltre sono in rapida successione, quindi rallentano tutto. E' una specie di roulette, che fa "tic-tic--tic----tic------tic". Avendo avuto problemi con l'if e con l'uso di una funzione, ho provato a mettere una variabile al posto del tempo, per disattivare i "tic" mettendo tempo zero.
Il "tic" lo chiamo Plip. Questa è una versione funzionante in cui ho eliminato la possibilità di ammutolire l'altoparlante, che mi serviva solo mentre modificavo il programma.
Sospetto che il PROGMEM provochi diverse criticità.
#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <avr/pgmspace.h>
LiquidCrystal lcd(8,9,10,11,12,13); // RS,EN,D4,D5,D6,D7
int x=0;
int z=0;
int zo=0;
int nSanti=0;
byte LD=0; // Numero del LED da accendere in SANTI.
// unsigned long t0=0; // Variabile per millis() per digitalRead(4).
// byte Suono=1; // Suono=1: Plip Sì.
const char Santo1[] PROGMEM="Andrea";
const char Santo2[] PROGMEM="Maria";
const char Santo3[] PROGMEM="Carlo";
const char Santo4[] PROGMEM="Antonella";
const char Santo5[] PROGMEM="Antonio";
const char Santo6[] PROGMEM="Giuseppe";
const char Santo7[] PROGMEM="Alessandra";
const char Santo8[] PROGMEM="Francesco";
const char Santo9[] PROGMEM="Attilio";
const char Santo10[] PROGMEM="Chiara";
const char Santo11[] PROGMEM="Paola";
const char Santo12[] PROGMEM="Stefano";
const char Santo13[] PROGMEM="Filippo Neri";
const char Santo14[] PROGMEM="Matteo";
const char Santo15[] PROGMEM="Marco";
const char Santo16[] PROGMEM="Luca";
const char Santo17[] PROGMEM="Giovanni";
const char Santo18[] PROGMEM="Lucia";
const char Santo19[] PROGMEM="Cristina";
const char Santo20[] PROGMEM="Paolo";
const char Santo21[] PROGMEM="Antonello";
const char Santo22[] PROGMEM="Pio";
const char Santo23[] PROGMEM="Teresa";
const char Santo24[] PROGMEM="Giov. Paolo II";
const char Santo25[] PROGMEM="Fr.sca Cabrini";
const char Santo26[] PROGMEM="Federica";
const char Santo27[] PROGMEM="Sara";
const char Santo28[] PROGMEM="Simone";
const char Santo29[] PROGMEM="Francesca Rom.";
const char Santo30[] PROGMEM="Basilio";
const char Santo31[] PROGMEM="Bernardo";
const char Santo32[] PROGMEM="Agnese";
const char Santo33[] PROGMEM="Tommaso";
const char Santo34[] PROGMEM="Biagio";
const char Santo35[] PROGMEM="Girolamo";
const char Santo36[] PROGMEM="Gabriele";
const char Santo37[] PROGMEM="Costantino";
const char Santo38[] PROGMEM="Giorgio";
const char Santo39[] PROGMEM="Michele";
const char Santo40[] PROGMEM="Raffaele";
const char Santo41[] PROGMEM="LuigiM.Gr.deM.";
const char Santo42[] PROGMEM="Caterina";
const char Santo43[] PROGMEM="Atanasio";
const char Santo44[] PROGMEM="Giacomo";
const char Santo45[] PROGMEM="Ignazio";
const char Santo46[] PROGMEM="Pietro";
const char Santo47[] PROGMEM="Bernardo";
const char Santo48[] PROGMEM="Agostino";
const char Santo49[] PROGMEM="Giovannad'Arco";
const char Santo50[] PROGMEM="Maria Goretti";
const char Santo51[] PROGMEM="Camillo deLel.";
const char Santo52[] PROGMEM="Lorenzo";
const char Santo53[] PROGMEM="Gioacchino";
const char Santo54[] PROGMEM="Anna";
const char Santo55[] PROGMEM="Gaetano";
const char Santo56[] PROGMEM="Elena";
const char Santo57[] PROGMEM="Alfredo";
const char Santo58[] PROGMEM="Monica";
const char Santo59[] PROGMEM="Nicola da Tol.";
const char Santo60[] PROGMEM="Matteo";
const char Santo61[] PROGMEM="Maurizio";
const char Santo62[] PROGMEM="Cosma eDamiano";
const char Santo63[] PROGMEM="Tommaso";
const char Santo64[] PROGMEM="Cecilia";
const char Santo65[] PROGMEM="Crisogono";
const char Santo66[] PROGMEM="Francesco Sav.";
const char Santo67[] PROGMEM="Ambrogio";
const char Santo68[] PROGMEM="Rita da Cascia";
const char Santo69[] PROGMEM="Pietro e Paolo";
const char Santo70[] PROGMEM="";
const char Santo71[] PROGMEM="";
const char Santo72[] PROGMEM="";
const char Santo73[] PROGMEM="";
const char Santo74[] PROGMEM="";
const char Santo75[] PROGMEM="";
const char Santo76[] PROGMEM="";
const char Santo77[] PROGMEM="";
const char Santo78[] PROGMEM="";
const char Santo79[] PROGMEM="";
const char Santo80[] PROGMEM="";
const char Santo81[] PROGMEM="";
const char Santo82[] PROGMEM="";
const char Santo83[] PROGMEM="";
const char Santo84[] PROGMEM="";
const char Santo85[] PROGMEM="";
const char Santo86[] PROGMEM="";
const char Santo87[] PROGMEM="";
const char Santo88[] PROGMEM="";
const char Santo89[] PROGMEM="";
const char Santo90[] PROGMEM="";
const char Santo91[] PROGMEM="";
const char Santo92[] PROGMEM="";
const char Santo93[] PROGMEM="";
const char Santo94[] PROGMEM="";
const char Santo95[] PROGMEM="";
const char Santo96[] PROGMEM="";
const char Santo97[] PROGMEM="";
const char Santo98[] PROGMEM="";
const char Santo99[] PROGMEM="";
const char Santo100[] PROGMEM="";
PGM_P const Puntatore[] PROGMEM ={
Santo1, Santo2, Santo3, Santo4, Santo5, Santo6, Santo7, Santo8, Santo9,
Santo10, Santo11, Santo12, Santo13, Santo14, Santo15, Santo16, Santo17, Santo18, Santo19,
Santo20, Santo21, Santo22, Santo23, Santo24, Santo25, Santo26, Santo27, Santo28, Santo29,
Santo30, Santo31, Santo32, Santo33, Santo34, Santo35, Santo36, Santo37, Santo38, Santo39,
Santo40, Santo41, Santo42, Santo43, Santo44, Santo45, Santo46, Santo47, Santo48, Santo49,
Santo50, Santo51, Santo52, Santo53, Santo54, Santo55, Santo56, Santo57, Santo58, Santo59,
Santo60, Santo61, Santo62, Santo63, Santo64, Santo65, Santo66, Santo67, Santo68, Santo69,
Santo70, Santo71, Santo72, Santo73, Santo74, Santo75, Santo76, Santo77, Santo78, Santo79,
Santo80, Santo81, Santo82, Santo83, Santo84, Santo85, Santo86, Santo87, Santo88, Santo89,
Santo90, Santo91, Santo92, Santo93, Santo94, Santo95, Santo96, Santo97, Santo98, Santo99,
Santo100};
char Santo[25];
void leggeSanto() {}
void setup()
{
pinMode(4,INPUT); // Interruttore suono Sì/No (1:Sì).
pinMode(5,INPUT); // Encoder - Pulsante.
pinMode(5,INPUT_PULLUP);
pinMode(7,OUTPUT);
pinMode(A0,OUTPUT);
digitalWrite(A0,0);
pinMode(A1,OUTPUT); // LED 1
pinMode(A2,OUTPUT); // LED 2
pinMode(A3,OUTPUT); // LED 3
pinMode(A4,OUTPUT); // LED 4
pinMode(A5,OUTPUT); // LED 5
lcd.begin(16,2);
lcd.clear(); lcd.print(F(" Estrattore"));
lcd.setCursor(0,1); lcd.print(F(" di Santi"));
tone(7,1000,15);
char Santo[]="Qualcosa";
z=1;
while(strlen(Santo)>0)
{
strcpy_P(Santo, (PGM_P)pgm_read_ptr(&(Puntatore[z])));
// lcd.setCursor(0,1); lcd.print(Santo);
// delay(100);
nSanti+=1; z+=1;
}
LD=1;
SLED();
while(digitalRead(5)==0){delay(500);}
}
void loop()
{
// if(millis()-t0>499) // Due volte al secondo:
// {t0=millis(); Suono=digitalRead(4);}
while(digitalRead(5)==1);
while(digitalRead(5)==0)
{
RND1:
z=random(0,nSanti); // da 0 a nSanti-1, come gli elementi dell'array.
if(z==zo) goto RND1;
zo=z;
strcpy_P(Santo, (PGM_P)pgm_read_ptr(&(Puntatore[z])));
tone(7,1000,15);
lcd.clear(); lcd.print("S."); lcd.print(Santo);
LD+=1; SLED();
delay(60);
}
LD=3;
for(x=1; x<11; x++)
{
RND2:
z=random(0,nSanti); // da 0 a nSanti-1, come gli elementi dell'array.
if(z==zo) goto RND2;
zo=z;
strcpy_P(Santo, (PGM_P)pgm_read_ptr(&(Puntatore[z])));
tone(7,1000,15);
lcd.clear(); lcd.print("S."); lcd.print(Santo);
LD+=1; SLED();
delay(60);
}
randomSeed(millis());
for(x=0; x<6; x++)
{
RND3:
z=random(0,nSanti); // da 0 a nSanti-1, come gli elementi dell'array.
if(z==zo) goto RND3;
zo=z;
strcpy_P(Santo, (PGM_P)pgm_read_ptr(&(Puntatore[z])));
tone(7,1000,15);
lcd.clear(); lcd.print("S."); lcd.print(Santo);
LD+=1; SLED();
delay(200+150*x);
}
RND4:
z=random(0,nSanti); // da 0 a nSanti-1, come gli elementi dell'array.
if(z==zo) goto RND4;
zo=z;
strcpy_P(Santo, (PGM_P)pgm_read_ptr(&(Puntatore[z])));
tone(7,1000,15);
lcd.clear(); lcd.print("S."); lcd.print(Santo);
LD+=1; SLED();
delay(1150);
RND5:
z=random(0,nSanti); // da 0 a nSanti-1, come gli elementi dell'array.
if(z==zo) goto RND5;
zo=z;
strcpy_P(Santo, (PGM_P)pgm_read_ptr(&(Puntatore[z])));
tone(7,1000,15);
lcd.clear(); lcd.print("S."); lcd.print(Santo);
LD+=1; SLED();
delay(150);
lcd.clear();
delay(150);
lcd.print("S."); lcd.print(Santo);
delay(150);
lcd.clear();
delay(150);
lcd.print("S."); lcd.print(Santo);
delay(150);
lcd.clear();
delay(150);
lcd.print("S."); lcd.print(Santo);
LD=0;
while(digitalRead(5)==0) {delay(500);}
} // END loop
void SLED()
{
if(LD>5)LD%=5; if(LD==0)LD=5;
// LED 54321- LED 54321-
PORTC&=B11000001|1<<LD; PORTC|=B00000000|1<<LD;
}