Sensore di prossimità GP2Y0A21YK0F

Salve a tutti. Sto provando ad implementare il sensore di prossimità della Sharp e, seguendo il codice che segue non ho nessun problema.

#define sensor 35 // Sharp IR GP2Y0A41SK0F 

void setup() {
  Serial.begin(115200); // start the serial port with baud rate of 115200
}

void loop() {
  float volts = analogRead(sensor) * 0.0008056640625; // value from sensor * (3.3/4096)
  int distance_cm = 29.988 * pow( volts, -1.173);
  delay(2000); // read data every 2 seconds

  if (distance <= 80) {
    Serial.println(distance);
  }
}

Vorrei però far si che quando il sensore è al di sotto di una certa soglia solo dopo X secondi esegua una azione. Per esempio: se distanza inferiore a 10 cm. per 3 secondi accendi led altrimenti non fare nulla. Come posso procedere? l'istruzione per accendere il led ovviamente la conosco, mi perdo nel gestire la durata. Grazie

Io ti consiglio di implementare una macchina a stati. Cerca nel forum, ne abbiamo parlato.
Uno degli “eventi" che fa cambiare "stato" è appunto il passare del tempo che puoi calcolare usando millis.

Grazie ora mi documento a riguardo

Altra possibilità: copi continuamente millis() in una variabile uint32_t t_evento; se accade l'evento, smetti di copiarlo. Quando millis()-t_evento raggiunge o supera 3000, fai ciò che devi.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.