Arduino Millis vs ritardo

Arduino Millis vs ritardo
Arduino è una piattaforma basata su hardware e software che offre agli studenti una grande opportunità di apprendere e creare progetti interessanti. Prima di saltare sull'hardware è necessario creare una logica utilizzando Arduino IDE su cui il progetto eseguirà le sue funzioni assegnate. Per operazioni diverse sono disponibili una vasta gamma di funzioni che possono essere utilizzate in Arduino. Abbiamo discusso della funzione Millis () e Delay () utilizzata nella programmazione Arduino in dettaglio in questa guida.

Che cosa è la funzione Milis () in Arduino?

Questa funzione dà il tempo totale a partire dall'esecuzione del codice Arduino e continuerà a funzionare fino a quando il programma è in esecuzione. Allo stesso modo, questa funzione dà il tempo trascorso in millisecondi e ha la capacità di funzionare per 50 giorni dopo che questa funzione ripristinerà il suo valore a zero e ricomincerà.

Il significato di questa funzione è che può essere utilizzato nel programma Arduino se un'istruzione deve essere eseguita solo in un momento specifico. Per ulteriori illustrazioni abbiamo spiegato il funzionamento della funzione Millis con l'esempio.

Supponiamo che dobbiamo eseguire un'istruzione ogni 5 secondi, quindi prima abbiamo definito il tempo in millisecondi, dopodiché l'istruzione specifica verrà eseguita.

ExecutionTime non firmato Long = 5000;

Quindi, definiamo la variabile costante denominata tempo di esecuzione Avere un valore di 5000 millisecondi, quindi per verificare l'ora corrente del programma utilizzeremo la funzione Millis e memorizzeremo il suo valore nel tempo presente variabile.

Long Panificio non firmato;
presentere = millis ();

Successivamente, dobbiamo fare la condizione per il tempo in cui verrà eseguita l'istruzione. Quindi, creiamo una condizione if che sarà vera quando la differenza del tempo presente e passato raggiunge 5000 millisecondi e l'istruzione all'interno della condizione If eseguirà. Per tali condizioni dobbiamo anche dichiarare un'altra variabile che salverà il tempo precedente o il passato.

Possiamo progettare questa condizione in modo tale che quando la differenza di corrente e il tempo precedente è maggiore di uguale al tempo di esecuzione, quindi eseguire la seguente istruzione. Dopo che la rispettiva istruzione viene eseguita Salva quell'ora corrente nella variabile del passatempo.

PASSAGGIO LUNGO INSIGNATO = 0;
if (prestime-pasttime> = esecuzione)
// Esegui le istruzioni
passatempo = CurrentTime;

Qui una cosa è ricordare che abbiamo usato il tipo di dati lungo a causa della funzione Milis () in quanto ha valori considerevolmente grandi.

Codice Arduino per il funzionamento della funzione Milis ()

Il codice completo per comprendere il funzionamento della funzione Millis è dato come:

cost non firmato lungo tempo di esecuzione = 5000; /*tempo su cui l'istruzione eseguirà*/
PASSAGGIO LUNGO INSIGNATO = 0; // Variabile per il passato del passato
Presentatime senza firma non firmato = 0; // Variabile per la memorizzazione del tempo attuale
void setup ()
Seriale.Inizia (9600); // Inizializzazione della comunicazione seriale

void loop ()
presentere = millis (); // Aggiornamento del valore della presentazione
/ * Questo è l'evento */
if (PAUTTIME - PASSETTION> = ExecutionTime) / *Condizione del tempo su cui verrà eseguita l'istruzione * /
Seriale.stampa ("Il tempo attuale è:");
Seriale.println (presente); // visualizzando l'ora attuale
Seriale.print (""); // incluso lo spazio
Seriale.print ("istruzioni da eseguire:");
Seriale.println ("Welcome to LinuxHint"); // istruzioni da eseguire
PASSETTHE = PAUTTIME; // Aggiornamento del valore del tempo passato

Il codice Arduino funzionerà in modo tale che, ad esempio, in primo luogo, il valore del passatempo è zero e diciamo che il tempo corrente è di 400 millisecondi. Secondo la condizione IF, la risposta sarà 400 che è inferiore a 5000 millisecondi, quindi la condizione se sarà falsa.

Allo stesso modo, nella terza o quarta iterazione la "presentazione" è di 5000 millisecondi, quindi la differenza sarà di 5000 millisecondi poiché il valore del "passato" è ancora zero. Quindi, l'istruzione verrà eseguita e il valore per il passatempo verrà aggiornato.

In questo modo possiamo utilizzare la funzione Millis per eseguire un'istruzione specifica in un momento specifico.

Output del codice Arduino per Milis ()

Nel monitoraggio seriale si può vedere chiaramente che quando c'è una differenza di "presentazione" e "passato" è 5000, la condizione sarà vera. L'immagine pubblicata di seguito mostra i valori del "presente" in cui la condizione if è vera e l'istruzione che deve essere eseguita.

Se stampiamo semplicemente il valore della funzione Milis () che viene memorizzato nel nome della variabile "PAUTTIME" sembrerà così come nell'immagine indicata di seguito:

Cos'è una funzione di ritardo () in Arduino

La funzione Delay () viene utilizzata principalmente per mettere in pausa il codice Arduino per qualche tempo. In altre parole, questa funzione crea un ritardo di qualche tempo specificato dall'utente nel funzionamento del codice Arduino.

Questa funzione può essere utilizzata nel programma in cui il valore di qualsiasi variabile deve essere aggiornato frequentemente. Quindi, dando la pausa al programma Arduino, darà il tempo al sensore di aggiornare il suo valore.

Allo stesso modo, possiamo utilizzare la funzione di ritardo per dare una pausa tra l'esecuzione di più istruzioni. La funzione di ritardo richiede il tempo in millisecondi poiché il suo input e la sintassi per la funzione di ritardo sono riportati di seguito:

ritardo (tempo in millisecondi);

Codice Arduino per l'utilizzo della funzione di ritardo

Per dimostrare la funzionalità della funzione Delay () abbiamo compilato un codice Arduino che viene dato come:

void setup ()
Seriale.Inizia (9600); // Inizializzazione della comunicazione seriale

void loop ()
Seriale.stampa ("ciao e benvenuto"); // istruzioni prima del ritardo
ritardo (5000); // creando una pausa di 5000 millisecondi
Seriale.println ("\ n a linuxhint.com "); // istruzioni dopo il ritardo

Nel codice Arduino abbiamo fornito due istruzioni che stampano i dati sul monitor seriale. Entrambe le istruzioni vengono eseguite con un ritardo di 5000 millisecondi. In altre parole, dopo l'esecuzione della prima istruzione abbiamo usato una funzione di ritardo che metterà in pausa il codice Arduino per 5000 millisecondi. Dopo 5000 millisecondi il programma sarà iniziato da dove è stato fermato e la seconda istruzione verrà eseguita.

Output del codice Arduino per l'utilizzo della funzione Delay ()

L'immagine pubblicata di seguito è la prima istruzione fornita prima che venga utilizzata la funzione delay ().

Dopo questa istruzione il programma viene messo in pausa per 5000 millisecondi e quindi si svolge l'esecuzione della seconda istruzione. La figura seguente mostra che il programma ha eseguito la seconda istruzione.

Confrontare la funzione Millis () e ritardo ()

Le differenze tra il Millis () e la funzione di ritardo sono riportate nella tabella seguente:

funzione millis () ritardo () funzione
Può essere utilizzato per eseguire un'istruzione specifica al momento specifico Questa funzione crea solo una pausa nel flusso del codice Arduino
Questa funzione dà il tempo in millisecondi da quando viene avviato il codice Arduino e può salire in tempo per 50 giorni Questa funzione richiede tempo in millisecondi come input dell'utente ed esegue quel tempo specifico
Questa funzione non mettono in pausa o interrompe il codice Questa funzione interrompe l'intero codice per un po 'di tempo

Come posso usare millis () invece di ritardo ()

Usiamo la funzione Millis invece del ritardo semplicemente usando la condizione IF per il tempo specifico in cui vogliamo eseguire ogni istruzione. In questo modo darà automaticamente un ritardo tra l'esecuzione di due o più istruzioni e lo scopo del ritardo può essere servito. Il vantaggio principale per l'utilizzo del Millis anziché il ritardo è che l'intero programma Arduino non si ferma; Solo l'esecuzione di alcune istruzioni viene messa in sosta. Tuttavia, la funzione di ritardo interrompe l'intero programma e l'utilizzo della funzione di ritardo può in qualche modo perdere gli input esterni al programma perché l'intero programma viene interrotto.

Per illustrare ulteriormente abbiamo fornito il codice Arduino su come possiamo utilizzare la funzione Millis anziché la funzione di ritardo:

cost non firmato lungo tempo di esecuzione = 6000; /*tempo su cui eseguirà la prima istruzione*/
const non firmato Long ExecutionTime1 = 2000; /*tempo su cui eseguirà la seconda istruzione*/
PASSAGGIO LUNGO INSIGNATO = 0; // Variabile per Strong il tempo passato della prima istruzione
Presentazione Long non firmata = 0; // Variabile per la memorizzazione del tempo presente
PASTERIO LUNGO INSIGNATO1 = 0; // Variabile per Strong il tempo passato della seconda istruzione
void setup ()
Seriale.Inizia (9600); // Inizializzazione della comunicazione seriale

void loop ()
presentere = millis (); // Aggiornamento del valore della presentazione
/ * Questo è l'evento */
if (PAUTTIME - PASSETTION> = ExecutionTime) / *Condizione del tempo su cui verrà eseguita l'istruzione * /
Seriale.stampa ("Il tempo attuale è:");
Seriale.println (presente); // visualizzando l'ora attuale
Seriale.print (""); // incluso lo spazio
Seriale.print ("istruzioni da eseguire:");
Seriale.println ("tieni le luci spente"); // istruzioni da eseguire
PASSETTHE = PAUTTIME; // Aggiornamento del valore del tempo passato

if (PACTIME - PASSETTIE1> = ExecutionTime1) / * Condizione del tempo su cui verrà eseguita l'istruzione * /
Seriale.print ("il tempo attuale");
Seriale.println (presente); // visualizzando l'ora attuale
Seriale.print (""); // incluso lo spazio
Seriale.print ("istruzioni da eseguire:");
Seriale.println ("Accendi le luci"); // instruizione da eseguire
PASSETTHE1 = PATTETHETHE; // Aggiornamento del tempo attuale dell'istruzione Scodn

Qui nel codice abbiamo utilizzato la funzione Millis per eseguire le due istruzioni con un ritardo di quasi 4 secondi. Abbiamo pubblicato un'immagine dell'output del codice Arduino compilato per spiegare come la funzione Millis può essere utilizzata sostituendola con la funzione di ritardo.

Nell'output possiamo vedere che quando il tempo è di 2 secondi la seconda istruzione viene eseguita fino al tempo raggiunge i 6 secondi. Quando il tempo raggiunge 6 secondi viene eseguita la prima istruzione.

Conclusione

Per creare una logica di qualsiasi attività che deve essere eseguita utilizzando Arduino, ci sono più funzioni che possono essere utilizzate. Queste funzioni rendono la funzionalità del codice Arduino efficiente e facile da implementare la logica creata.Esistono due funzioni di cui abbiamo discusso in dettaglio, una è la funzione Millis e l'altra è la funzione di ritardo. La funzione Millis esegue un'istruzione specifica in un momento specifico mentre la funzione di ritardo interrompe il codice Arduino per un po 'di tempo.