Come sbattere le palpebre senza usare la funzione di ritardo in Arduino

Come sbattere le palpebre senza usare la funzione di ritardo in Arduino
Blink senza ritardo () è il progetto Arduino più semplice per una migliore comprensione dei principianti e in Arduino, esiste una funzione integrata di ritardo () che genera un ritardo di un tempo specificato (in millisecondi). Allora perché c'è bisogno di fare un progetto di LED lampeggianti senza un ritardo ()? In questo articolo, cercheremo di capire la risposta a questa domanda e discuteremo il metodo con cui possiamo battere le palpebre senza usare la funzione Delay () in Arduino.

Perché dobbiamo sbattere le palpebre senza usare la funzione Delay () in Arduino

La funzione Delay () produce un ritardo di un tempo definito nell'esecuzione di istruzioni o possiamo dire che la funzione Delay () mettono in pausa l'intero programma e nessuna istruzione verrà eseguita fino a quando il ritardo () non si concluderà.

Significa che non possiamo fare nessun'altra attività fino a quando il ritardo non è completato, questa è la principale preoccupazione per cui a volte è scoraggiato l'utilizzo della funzione di ritardo (). Consideriamo l'esempio di un uomo di corriere, va a casa e non trova nessuno a casa, hanno detto i vicini, la persona interessata tornerà a casa sua tra un'ora. Ora, cosa dovrebbe fare l'uomo del corriere? O può aspettare o può consegnare i pacchi dei clienti vicini e tornare dopo un'ora per consegnare il pacco di quella persona.

Allo stesso modo, nella programmazione non consigliamo di utilizzare la funzione Delay () e mettere in pausa l'intero programma per un po 'di tempo, invece che preferiamo eseguire qualche altro compito mentre il battito del led.

Blink senza usare il codice funzione delay () in Arduino

In Arduino, possiamo battere le palpebre senza utilizzare la funzione Delay () con un codice molto semplice. Prima di passare attraverso il codice, spieghiamo lo scopo di alcune funzioni integrate che vengono utilizzate nel codice:

Funzioni Scopo
pinMode () Questa funzione viene utilizzata per definire il pin specifico per agire come output o input
DigitalWrite () Questa funzione viene utilizzata per configurare il pin in base agli stati alti o bassi
Seriale.inizio() Questa funzione viene utilizzata per la comunicazione seriale
millis () Questa funzione viene utilizzata per estrarre il tempo di esecuzione del codice in millisecondi

Considera il seguente codice:

INT LED = 13;
int x = 1;
D1 lungo non firmato, D2;
void setup ()
pinMode (LED, output);
DigitalWrite (LED, 1);
Seriale.Inizia (9600);

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

La spiegazione del codice sopra è:

  • Abbiamo definito una variabile "x" con un tipo di dati interi e verrà utilizzato per modificare lo stato del LED.
  • Definiamo anche un LED variabile con un tipo di dati interi e memorizziamo 13. Questo 13 verrà utilizzato per il pin numero di Arduino.
  • Due variabili D1 e D2 sono definite con il tipo di dati lunghi non firmati. Il tipo di dati "non firmato" viene utilizzato per archiviare 32 bit di numero e può archiviare fino a 4.294.967.295 numeri e la cosa da dire è che questo tipo di dati non archivia numeri negativi in ​​esso.
  • Nel setup void (), in primo luogo, utilizziamo la funzione pinMode () e dichiariamo il pin 13 come pin di uscita.
  • Successivamente, abbiamo usato la funzione DigitalWrite () per rendere alto lo stato del pin 13.
  • Infine, abbiamo usato la comunicazione seriale a un tasso di baud di 9600.
  • Nel loop void (), digitiamo il codice di lampeggiamento dei LED perché vogliamo ripeterlo per un periodo di tempo infinito.
  • Fino ad ora estraiamo il tempo di esecuzione del codice e memorizziamo il valore in variabile D2.
  • Quindi usando l'istruzione IF abbiamo controllato la condizione if (d2-d1> 1000), se è vero, cambierà il valore di x.
  • Quindi archiviamo l'altro valore di esecuzione del codice in D1.
  • Infine, usando la funzione digitaleWrite (), ha modificato lo stato del LED usando il valore di x.
  • Ciò continuerà per un tempo infinito (perché il valore di D2-D1 non sarà sempre superiore a 1000.

Simulazione

Eseguimo questo codice nella simulazione Proteus, apriremo il Proteus e troveremo i seguenti componenti:

  1. Arduino UNO R3
  2. GUIDATO
  3. Resistore
  4. Terra

Collegare l'unico terminale del resistore con il pin 13 di Arduino, collegare il terminale positivo del LED con l'altro terminale del resistore e collegare il terreno con il terminale negativo del LED. Una volta completato il circuito, fare doppio clic su Arduino e caricare un file "esadecimale" del codice Arduino in esso.

Gioca al progetto e il LED inizierà a battere le palpebre come mostrato di seguito:

Configurazione hardware

Lo stesso circuito che viene simulato sul Proteus sarà assemblato sulla breadboard. Abbiamo usato fili jumper per collegare i componenti a LED, Arduino e resistenza:

Il filo del jumper nero è collegato al suolo dell'Arduino e al terminale negativo del LED. Quindi un resistore (220 ohm) è collegato al terminale positivo del LED e un'altra gamba del resistore (220 ohm) è collegata al pin 13 di Arduino usando il filo del jumper rosso. Il codice è già caricato su Arduino, il funzionamento del progetto è:

Il LED viene lampeggiato con successo senza usare la funzione Delay ().

Conclusione

La funzione Blink Without Delay () in Arduino è il progetto di livello principiante che viene utilizzato per dimostrare come il progetto può essere eseguito senza utilizzare la funzione Delay (). Senza utilizzare la funzione Delay () non siamo limitati a un'unica attività e possiamo eseguire altre istruzioni del codice. In questo articolo, abbiamo spiegato il LED Blink senza ritardo () in Arduino con l'aiuto di una dimostrazione della sua simulazione e della sua configurazione hardware.