Sommario:

Un semplice e pratico cronometro Arduino: 4 passaggi
Un semplice e pratico cronometro Arduino: 4 passaggi

Video: Un semplice e pratico cronometro Arduino: 4 passaggi

Video: Un semplice e pratico cronometro Arduino: 4 passaggi
Video: Timer con Arduino 2024, Settembre
Anonim
Un semplice e pratico cronometro Arduino
Un semplice e pratico cronometro Arduino

Cerca nel web il cronometro Arduino. Probabilmente l'hai appena fatto, se sei qui. Per esperienza personale, posso dirti che qualsiasi cronometro su Internet è troppo complesso (in codice, per principianti), o è troppo semplificato e poco pratico, come quelli che continuano a contare i secondi senza azzerarsi.

Lo pensi anche tu, eh? Beh, indovina un po'. L'ho fatto, e per di più, prendo direttamente il mio input dalla funzione millis(), una riga infinita di numeri (fino a 49 giorni o altro). La parte migliore? È solo una riga.

Il reset, è la vera parte difficile del cronometro. Per i programmatori intermedi, se non l'hai già fatto, vai avanti e prova a farlo da solo, con secondi, minuti e ore insieme. Avrai quello di cui sto parlando.

Per i principianti, continua a leggere e goditi il genio della mia mente.

Sto scherzando, ma la soluzione che ho trovato è abbastanza carina. Ecco di cosa si tratta:

Passaggio 1: la soluzione

La soluzione
La soluzione

Quindi il problema si sta resettando. Quello che vogliamo è un ciclo continuo e ripetuto di numeri, da un output infinito di numeri sequenziali (millis() - conta fondamentalmente millisecondi, o in realtà 1.024 millisecondi, ma qualunque cosa).

La prima cosa che viene in mente è usare la differenza, come time1 -time2 e un ritardo. Dimenticalo. Sono necessarie almeno sei righe di codice e un'istruzione if per l'avvio.

Quindi ecco come farlo. Abbiamo un limite (59). Vogliamo che tutto da 0 a 59 si ripeta più e più volte. Come?

E se… prendessimo il resto… della funzione millis diviso per 59… Bingo!

Quindi, dovrebbe essere così:

(60 [come valore iniziale perché il limite è 59] + millis() / 1000 [1000 millisecondi è un secondo]) % 60

Ok, lascia che ti spieghi. (%) o modulo, è fondamentalmente un operatore come (+) che trova il resto. Come il 9 % 2 = 1.

Così:

  • resto di (60 + 0) % 60 = 0
  • resto di (60 + 1) % 60 =1
  • resto di (60 + 58) % 60 = 58
  • resto di (60 + 59) % 60 = 59
  • resto di (60 + 60) % 60 = 60
  • resto di (60 + 61) % 60 = 1

Vedere!

Ora, per le parti.

Passaggio 2: le parti

Le parti
Le parti

Non molto, per niente

  1. Qualsiasi arduino
  2. Qualsiasi display (ho usato l'OLED da 0,96 , ma puoi usare qualunque cosa tu abbia, assicurati solo di inserire le giuste variabili nelle funzioni di visualizzazione del tuo display.)

Questo è tutto.

Passaggio 3: il codice

Ecco qua. È commentato abbastanza chiaramente, quindi non dovrebbero esserci problemi. Le librerie e l'init per OLED da 0,96 sono nel codice. Sostituiscilo con quello del tuo display se è diverso.

// Librerie OLED da 0,96"

#includere

#includere

#includere

#includere

// Inizializzazione OLED da 0,96"

#define OLED_RESET 4

Visualizzazione Adafruit_SSD1306 (OLED_RESET);

int secondi;

int minuti;

int ore;

void setup() {

// Un po' più di inizializzazione OLED da 0,96"

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay(); display.setTextSize(2); display.setTextColor(BIANCO); }

ciclo vuoto() {

secondi = (60 + millisecondi() / 1000) % 60;

minuti = (60 + millis() / 60000) % 60; ore = (25 + millis() / 3600000) % 25;

display.clearDisplay();

display.setCursor(0, 22); // stampa il numero di ore trascorse dal reset display.print(hours); display.print("h:");

// stampa il numero di minuti dal reset

display.print(minuti);

display.print("m:");

// stampa il numero di secondi trascorsi dal ripristino display.print(seconds); display.print("s");

display.setCursor(0, 0);

display.print("Cronometro"); display.drawLine(0, 18, 128, 18, BIANCO); display.display();

}

Passaggio 4: in conclusione…

In finale…
In finale…

Quindi è così! Ora vai a fare quello che vuoi con esso. Prendi il tempo delle uova o impossessati del tuo quartiere.

Saluti, Aarush

Consigliato: