Hvordan blinke uten å bruke forsinkelsesfunksjonen i Arduino

Hvordan blinke uten å bruke forsinkelsesfunksjonen i Arduino
Blink uten forsinkelse () er det enkleste Arduino-prosjektet for en bedre forståelse av nybegynnere og i Arduino, er det en innebygd funksjon av forsinkelse () som genererer en forsinkelse av en spesifikk tid (i millisekunder). Så hvorfor er det behov for å lage et prosjekt med blinkende lysdioder uten forsinkelse () -funksjon? I denne oppskrivningen vil vi prøve å finne ut svaret på dette spørsmålet og vil diskutere metoden som vi kan blinke uten å bruke forsinkelsesfunksjonen () i Arduino.

Hvorfor trenger vi å blinke uten å bruke forsinkelsesfunksjonen () i Arduino

Forsinkelsen () -funksjonen produserer en forsinkelse av en definert tid i utførelsen av uttalelser, eller vi kan si at forsinkelsen () -funksjonen pauser hele programmet, og ingen uttalelser vil bli utført før forsinkelsen () ikke kommer til slutt.

Det betyr at vi ikke kan gjøre noen annen oppgave før forsinkelsen ikke er fullført, dette er den største bekymringen for at noen ganger blir det motløs å bruke forsinkelsesfunksjonen (). La oss vurdere eksemplet med en budmann, han drar til huset og finner ingen hjemme, sa naboene til, den berørte personen vil være tilbake til hjemmet hans om en time. Nå, hva skal budmannen gjøre? Enten kan han vente eller kan levere pakkene til de nærliggende kundene og komme tilbake etter en time for å levere pakken til den personen.

På samme måte anbefaler vi ikke i programmering å bruke forsinkelsesfunksjonen () og ta en pause i hele programmet i noen tid, i stedet for det foretrekker vi å utføre en annen oppgave mens LED -en blink.

Blink uten å bruke forsinkelses () funksjonskoden i Arduino

I Arduino kan vi blinke lysdioder uten å bruke forsinkelsesfunksjonen med en veldig enkel kode. Før vi går gjennom kode, la oss forklare formålet med noen innebygde funksjoner som brukes i koden:

Funksjoner Hensikt
pinmode () Denne funksjonen brukes til å definere den spesifikke pinnen for å fungere som en utgang eller inngang
DigitalWrite () Denne funksjonen brukes til å konfigurere PIN -koden i henhold til høye eller lave tilstander
Serie.begynne() Denne funksjonen brukes til seriell kommunikasjon
millis () Denne funksjonen brukes til å trekke ut utførelsestiden for kode i millisekunder

Tenk på følgende kode:

int LED = 13;
int x = 1;
usignert lang D1, D2;
void setup ()
pinmode (LED, output);
DigitalWrite (LED, 1);
Serie.Begynn (9600);

void loop ()
d2 = millis ();
if (d2-d1> = 1000)
x = 1-x;
d1 = millis ();
DigitalWrite (LED, X);

Forklaringen på koden ovenfor er:

  • Vi har definert en variabel “X” med en heltalldatatype, og den vil bli brukt til å endre LED -tilstanden.
  • Vi definerer også en variabel LED med en heltalldatatype og lagrer 13 i den. Denne 13 vil bli brukt til den tretten nummerstiften til Arduino.
  • To variabler D1 og D2 er definert med den usignerte lange datatypen. Den "usignerte lange" datatypen brukes til å lagre 32 biter av antall, og den kan lagre opptil 4 294 967 295 tall, og tingen som skal være nødvendig å fortelle er at denne datatypen ikke lagrer negative tall i den.
  • I tomromsoppsettet () bruker vi først PinMode () -funksjonen og erklærer PIN 13 som en utgangspinne.
  • Deretter brukte vi DigitalWrite () -funksjonen for å gjøre tilstanden til pinne 13 høy.
  • Til slutt brukte vi seriell kommunikasjon med en baud rate på 9600.
  • I tomromsløyfen () skriver vi koden for blinking av lysdioder fordi vi vil gjenta den i en uendelig tidsperiode.
  • Vi trekker ut tidspunktet for utførelsen av koden til nå og lagrer verdien i variabel D2.
  • Deretter ved å bruke IF-setningen, sjekket vi tilstanden IF (D2-D1> 1000), hvis det er sant, vil den endre verdien på x.
  • Så lagrer vi den andre verdien av utførelse av kode i D1.
  • Til slutt, ved å bruke DigitalWrite () -funksjonen, endret LED -tilstanden ved å bruke verdien av x.
  • Dette vil fortsette i uendelig tid (fordi verdien av D2-D1 ikke vil være større enn 1000 i alle fall).

Simulering

Vi kjører denne koden i Proteus -simuleringen, vi åpner Proteus og finner følgende komponenter:

  1. Arduino Uno R3
  2. Led
  3. Motstand
  4. Bakke

Koble den ene terminalen til motstanden med pinne 13 av Arduino, koble den positive terminalen til LED med den andre terminalen til motstanden, og koble bakken med den negative terminalen til LED. Når kretsen er fullført, dobbeltklikk på Arduino og last opp en "Hex" -fil med Arduino -kode i den.

Spill prosjektet og LED vil begynne å blinke som vist nedenfor:

Maskinvarekonfigurasjon

Den samme kretsen som simuleres på proteus vil bli samlet på brødplaten. Vi brukte jumperledninger for å koble til komponentene som er LED, Arduino og Motstand:

Den svarte jumpertråden er koblet til bakken til Arduino og den negative terminalen til LED. Deretter er en motstand (220 ohm) koblet til den positive terminalen til LED, og ​​et annet ben av motstanden (220 ohm) er koblet til pinne 13 av Arduino ved hjelp av den røde jumpertråden. Koden er allerede lastet opp på Arduino, prosjektet med prosjektet er:

LED -en blinker med suksess uten å bruke forsinkelsesfunksjonen ().

Konklusjon

Blink Without Delay () -funksjonen i Arduino er det nybegynnernivåprosjektet som brukes til å demonstrere hvordan prosjektet kan utføres uten å bruke forsinkelsesfunksjonen (). Uten å bruke forsinkelsesfunksjonen er vi ikke begrenset til en enkelt oppgave og kan kjøre andre instruksjoner i koden. I denne oppskrivningen har vi forklart den blinkede LED uten forsinkelse () -funksjonen i Arduino ved hjelp av en demonstrasjon av dens simulering så vel som maskinvarekonfigurasjonen.