Timer leggero.

Nella versione classica del timer, abbiamo creato una variabile separata a 4 byte per ogni timer. Molto dispendioso. Non è sempre necessario disporre di un timer per un periodo di diversi miliardi di millisecondi, il più delle volte è di pochi secondi. Puoi usare un tipo di dati più leggero (2 e 1 byte) e prendere solo la parte necessaria dal risultato millis(), più precisamente, il resto della divisione. Per accelerare l'esecuzione del codice, utilizzare una maschera di bit (bitmask - è un numero binario necessario per ottenere determinate cifre da un altro numero binario. Con l'aiuto di speciali operazioni logiche, il numero viene confrontato con la maschera e si ottiene il risultato: il valore di uno o più bit particolari, cioè una cifra).
Implementazione di un timer a 2 byte per una durata massima di 65535 ms (poco più di un minuto):
uint16_t timer1;
void loop() 
     uint16_t milliseconds = millis() & 0xFFFF; 
     if (milliseconds - timer1> 1000) 
     { 
          timer1 = milliseconds; 
           // azione 
     }
}
Allo stesso modo, puoi fare per una variabile da 1 byte, il periodo massimo è 255 ms:
uint8_t timer1;
void loop() 
     uint8_t milliseconds = millis() & 0xFF; 
     if (milliseconds - timer1 > 100) 
     { 
         timer1 = milliseconds
          // azione
     }
}

Crea il tuo sito web gratis! Questo sito è stato creato con Webnode. Crea il tuo sito gratuito oggi stesso! Inizia