Arduino millis vs forsinkelse

Arduino millis vs forsinkelse
Arduino er en maskinvare- og programvarebasert plattform som gir en flott mulighet for studentene å lære og lage interessante prosjekter. Før du hopper til maskinvaren, må man lage en logikk ved hjelp av Arduino IDE som prosjektet vil utføre sine tildelte funksjoner. For forskjellige operasjoner er det et bredt spekter av funksjoner tilgjengelig som kan brukes i Arduino. Vi har diskutert Millis () og Delay () -funksjonen brukt i Arduino -programmering i detalj i denne guiden.

Hva er Millis () -funksjonen i Arduino?

Denne funksjonen gir den totale tiden med start fra driften av Arduino -koden og vil fortsette å kjøre til programmet kjører. Tilsvarende gir denne funksjonen den forløpte tiden i millisekunder og har kapasitet til å løpe i 50 dager etter at denne funksjonen vil tilbakestille verdien til null og starte fra igjen.

Betydningen av denne funksjonen er at den kan brukes i Arduino -programmet hvis en instruksjon bare skal kjøre på et bestemt tidspunkt. For ytterligere illustrasjon har vi forklart arbeidet med Millis -funksjonen etter eksemplet.

Anta at vi må utføre en instruksjon etter hvert 5. sekund, så først har vi definert tiden i millisekunder, hvoretter den spesifikke instruksjonen vil utføre.

usignert lang utførelse = 5000;

Så vi definerer den konstante variabelen som er navngitt Utførelse Når vi har en verdi på 5000 millisekunder, for å sjekke gjeldende tid for programmet, vil vi bruke Millis -funksjonen og vil lagre verdien i nåtid variabel.

usignert lang nåværende;
Opptreden = millis ();

Deretter må vi gjøre tilstanden for tiden som instruksjonen skal utføres. Så vi oppretter en IF -tilstand som vil være sann når forskjellen på nåværende og tidligere tid når 5000 millisekunder og instruksjonen i IF -tilstanden vil utføre. For slike forhold må vi også erklære en annen variabel som vil spare forrige tid eller siste tid.

Vi kan designe denne tilstanden på en slik måte at når forskjellen på strømmen og forrige tid er større enn lik utførelsestid, så utfører du følgende instruksjon. Etter at den respektive instruksjonen er utført, må du, lagre den nåværende tiden i tidsfordrivet variabel.

usignert lang tidsfordriv = 0;
if (nåværende-pasttime> = utførelse)
// Kjør instruksjonen
Pastime = CurrentTime;

Her er en ting å bli husket at vi har brukt den lange datatypen på grunn av Millis () -funksjonen, ettersom den har betydelig store verdier.

Arduino -kode for arbeid av Millis () -funksjonen

Den komplette koden for å forstå arbeidet med Millis -funksjonen er gitt som:

const usignert lang utførelse = 5000; /*tid som instruksjonen vil utføre*/
usignert lang fortid = 0; // variabel for sterk den siste tiden
usignert lang nåværende = 0; // variabel for lagring av nåtiden
void setup ()
Serie.Begynn (9600); // Initialisere seriell kommunikasjon

void loop ()
Opptreden = millis (); // Oppdatere verdien av nåværende
/ * Dette er hendelsen */
if (Presentime - Pastime> = executionTime) / *Tidsbetingelse som instruksjonen skal utføres * /
Serie.trykk ("For nåtid er:");
Serie.Println (Opptreden); // Visning av nåtid
Serie.print (""); // inkludert plass
Serie.print ("instruksjon som skal utføres:");
Serie.Println ("Velkommen til Linuxhint"); // instruksjon som skal utføres
Pastid = Opptreden; // Oppdaterer den siste tidsverdien

Arduino -koden vil fungere på en slik måte at for eksempel for eksempel iterasjonen er verdien av tidsfordrivet null og la oss si at nåværende tid er 400 millisekunder. I følge IF -tilstanden vil svaret være 400 som er mindre enn 5000 millisekunder, så IF -tilstanden vil være falsk.

Tilsvarende, i den tredje eller fjerde iterasjonen, er “Opptreden” 5000 millisekunder, så vil forskjellen være 5000 millisekunder, da verdien av "pastid" fremdeles er null. Så instruksjonen vil bli utført og verdien for tidsfordriv vil bli oppdatert.

På denne måten kan vi bruke Millis -funksjonen til å kjøre en spesifikk instruksjon på et bestemt tidspunkt.

Utgang fra Arduino -koden for Millis () -funksjonen

I seriemonitoren kan det tydelig sees at når det er en forskjell på "Opptreden" og "Pastime" er 5000, vil tilstanden være sann. Bildet som er lagt ut nedenfor, viser verdiene til "nåværende" som IF -tilstanden er sann og instruksjonen som skal utføres.

Hvis vi ganske enkelt skriver ut verdien av Millis () -funksjonen som er lagret i variabelnavnet "Opptreden" vil se slik ut som på bildet gitt nedenfor:

Hva er en forsinkelsesfunksjon i Arduino

Forsinkelsen () -funksjonen brukes hovedsakelig for å pause Arduino -koden i noen tid. Med andre ord, denne funksjonen skaper en forsinkelse av en gang spesifisert av brukeren i funksjonen til Arduino -koden.

Denne funksjonen kan brukes på programmet der verdien av en hvilken som helst variabel skal oppdateres ofte. Så ved å gi pausen til Arduino -programmet vil det gi seg tid for sensoren å oppdatere verdien.

Tilsvarende kan vi bruke forsinkelsesfunksjonen for å gi en pause mellom utførelsen av flere instruksjoner. Forsinkelsesfunksjonen tar seg tid i millisekunder som dens inngang og syntaks for forsinkelsesfunksjonen er gitt nedenfor:

forsinkelse (tid-i-millisekunder);

Arduino -kode for å bruke forsinkelsesfunksjonen

For å demonstrere funksjonaliteten til forsinkelsesfunksjonen har vi samlet en Arduino -kode som er gitt som:

void setup ()
Serie.Begynn (9600); // Initialisere seriell kommunikasjon

void loop ()
Serie.trykk ("Hei og velkommen"); // Instruksjon før forsinkelse
forsinkelse (5000); // å lage en pause på 5000 millisekunder
Serie.Println ("\ n til Linuxhint.com "); // instruksjon etter forsinkelse

I Arduino -koden har vi gitt to instruksjoner som vil skrive ut dataene på seriemonitoren. Begge instruksjonene utføres med en forsinkelse på 5000 millisekunder. Med andre ord, etter utførelsen av den første instruksjonen har vi brukt en forsinkelsesfunksjon som vil pause Arduino -koden for 5000 millisekunder. Etter 5000 millisekunder vil programmet bli startet fra der det ble stoppet, og den andre instruksjonen vil bli utført.

Utgang fra Arduino -kode for bruk av forsinkelse () -funksjon

Bildet som er lagt ut nedenfor er den første instruksjonen gitt før forsinkelsesfunksjonen () brukes.

Etter denne instruksjonen er programmet pause for 5000 millisekunder, og deretter utføres utførelsen av den andre instruksjonen. Figuren nedenfor viser at programmet har kjørt den andre instruksjonen.

Sammenligning av Millis () -funksjonen og forsinkelsen () -funksjonen

Forskjellene mellom millis () og forsinkelsesfunksjonen er gitt i tabellen nedenfor:

Millis () -funksjonen Forsinkelse () Funksjon
Det kan brukes til å kjøre en spesifikk instruksjon på bestemt tidspunkt Denne funksjonen skaper bare en pause i strømmen av Arduino -koden
Denne funksjonen gir tiden i millisekunder fra når Arduino -koden startes og kan gå opp til tid i 50 dager Denne funksjonen tar tid i millisekunder som brukerinngang og kjører for den bestemte tiden
Denne funksjonen tar ikke pause eller stopper koden Denne funksjonen stopper hele koden i noen tid

Hvordan kan jeg bruke millis () i stedet for forsinkelse ()

Vi bruker Millis -funksjonen i stedet for forsinkelse ved bare å bruke IF -tilstanden for det bestemte tidspunktet vi ønsker å kjøre hver instruksjon. Å gjøre dette vil automatisk gi en forsinkelse mellom utførelsen av to eller flere instruksjoner, og formålet med forsinkelse kan serveres. Den største fordelen for å bruke millisene i stedet for forsinkelse er at hele Arduino -programmet ikke stopper; Bare utførelsen av noen visse instruksjoner blir stoppet. Forsinkelsesfunksjonen stopper imidlertid hele programmet og ved bruk av forsinkelsesfunksjon kan imidlertid gå glipp av de eksterne inngangene til programmet fordi hele programmet er stoppet.

For ytterligere å illustrere har vi gitt Arduino -kode for hvordan vi kan bruke Millis -funksjonen i stedet for forsinkelsesfunksjon:

const usignert lang utførelse = 6000; /*tid der den første instruksjonen vil utføre*/
const usignert lang utførelsestid1 = 2000; /*tid der den andre instruksjonen vil utføre*/
usignert lang tid = 0; // variabel for sterk den første instruksjonens tidligere tid
usignert lang nåværende = 0; // variabel for lagring av nåtid
usignert lang pastime1 = 0; // variabel for sterk den andre instruksjonens tidligere tid
void setup ()
Serie.Begynn (9600); // Initialisere seriell kommunikasjon

void loop ()
Opptreden = millis (); // Oppdatere verdien av nåværende
/ * Dette er hendelsen */
if (Presentime - Pastime> = executionTime) / *Tidsbetingelse som instruksjonen skal utføres * /
Serie.trykk ("For nåtid er:");
Serie.Println (Opptreden); // Visning av nåtid
Serie.print (""); // inkludert plass
Serie.print ("instruksjon som skal utføres:");
Serie.Println ("Hold lysene av"); // instruksjon som skal utføres
Pastid = Opptreden; // Oppdaterer den siste tidsverdien

if (Presentime - Pastime1> = executionTime1) / * Tidstilstand som instruksjonen skal utføres * /
Serie.print ("dagens tid");
Serie.Println (Opptreden); // Visning av nåtid
Serie.print (""); // inkludert plassen
Serie.print ("instruksjon som skal utføres:");
Serie.println ("Slå på lysene"); // instrcution som skal utføres
Pastime1 = Opptreden; // Oppdaterer nåtiden for SCODN -instruksjon

Her i koden har vi brukt Millis -funksjonen for å utføre de to instruksjonene med en forsinkelse på nesten 4 sekunder. Vi har lagt ut et bilde av utdataene fra Arduino -koden samlet for å forklare hvordan Millis -funksjonen kan brukes ved å erstatte den med forsinkelsesfunksjon.

I utgangen kan vi se at når tiden er 2 sekunder, utføres den andre instruksjonen til tiden når 6 sekunder. Når tiden når 6 sekunder, blir den første instruksjonen utført.

Konklusjon

For å lage en logikk av enhver oppgave som må utføres ved hjelp av Arduino, er det flere funksjoner som kan brukes. Disse funksjonene gjør funksjonaliteten til Arduino -koden effektiv og enkel å implementere den opprettede logikken.Det er to funksjoner som vi har diskutert i detalj, den ene er Millis -funksjonen og den andre er forsinkelsesfunksjonen. Millis -funksjonen utfører en spesifikk instruksjon på et bestemt tidspunkt, mens forsinkelsesfunksjonen stopper Arduino -koden i noen tid.