Più o meno rispondete tutti così, perché non vi rendete conto che il programma può diventare molto impegnativo da sviluppare man mano che cresce di dimensioni. Quando ciò accade si dice che il codice non è mantenibile.
Il codice diventa non mantenibile quando:
- L'introduzione di una nuova funzionalità comporta malfunzionamento generale.
- Difficoltà di debug, fino alla impossibilità completa di debug.
- Difficoltà nel rimuovere o modificare una o più funzionalità presente (il codice smette di funzionare)
- Difficoltà nel comprendere cosa e come lavora il codice dopo pochi mesi passati senza lavorarci.
Per questi motivo lesto ti ha suggerito le modifiche e non per una questione di stile.
Le convenzioni non fanno parte del linguaggio ma sono parte fondamentale del processo di programmazione.
Le poche convenzioni da rispettare per Arduino style sono minime e facili da apprendere. Si possono acquisire
le convenzioni anche copiando dal codice degli esempi forniti con l'ide.
Il codice che hai scritto non stabilisce alcuna convenzione, tuttavia visto che ridotto di dimensioni io
come altri programmatori riusciamo a non confonderci, man man che il programma cresce di dimensioni
l'unico in grado di comprendere cosa fa il codice sarai tu ma solo durante lo sviluppo, la manutenzione dopo
mesi ti creerà parecchie difficoltà e potresti anche arrivare a chiederti; ma l'ho scritto io?
Alcuni programmi in assembler usano contare il tempo come hai fatto tu, ma senza l'inconveniente che si presenta nel tuo codice, che è facilmente aggirabile facendo uso di millis(). Il problema nel tuo codice è che
il loop principale gira ad una velocità di 100ms a ciclo, quindi 10 cicli ogni secondo. Ti eri posto il problema della efficienza e non capisco perché usi il delay(100) che è tutto il contrario di efficiente.
// all'inizio dello sketch
#define TIME_TRIGGER_100MS 100
unsigned long timeTrigger100ms = 0;
void loop() {
// delay (100);
if (!timeTrigger100ms)
timeTrigger100ms = millis();
if ( (millis() - timeTrigger100ms) > TIME_TRIGGER_100MS) {
Tmr(); // run each 100ms
}
// run at full speed
if (Serial.available()) {
RxCar = Serial.read();
Timer[2]=60;
digitalWrite(pinLed,HIGH);
}
}
ps: codice non testato
Ciao.