Misurare con micros()
Fa parte della sezione Temporizzazione senza delay del percorso Arduino di Coddy. Lezione 16 di 18.
millis() conta millisecondi interi, una granularità troppo grossolana per intervalli brevi: una pressione di 2.5 ms verrebbe letta come 2 o 3. micros() è lo stesso tipo di orologio, ma conta i microsecondi, milionesimi di secondo: ce ne sono 1000 in ogni millisecondo.
Sull'Uno avanza a intervalli di 4 microsecondi e restituisce anche un unsigned long. Per cronometrare qualcosa, leggilo prima e dopo, quindi sottrai:
unsigned long start = micros();
int reading = analogRead(A0);
unsigned long took = micros() - start;
Serial.println(took); // circa 110: una chiamata a analogRead() richiede circa 0.1 msDato che conta così velocemente, micros() esaurisce i numeri molto prima di millis(): dopo circa 70 minuti riparte da 0. Usalo per intervalli brevi e millis() per qualsiasi intervallo più lungo di qualche minuto.
Sfida
FacileMisura per quanto tempo il pulsante viene tenuto premuto, in microsecondi:
- quando il pulsante viene premuto, memorizza
micros()inpressedAt - quando viene rilasciato, stampa
micros() - pressedAt
Premi Esegui, tocca il pulsante, poi Verifica.
Provalo tu
const int buttonPin = 2;
bool wasPressed = false;
unsigned long pressedAt = 0;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
bool pressed = digitalRead(buttonPin) == LOW;
if (pressed && !wasPressed) {
// el botón acaba de pulsarse: recuerda el momento
}
if (!pressed && wasPressed) {
// el botón acaba de soltarse: imprime cuánto tiempo estuvo pulsado, en microsegundos
}
wasPressed = pressed;
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Temporizzazione senza delay
Esercitati da solo: Playground Arduino