17-06-2024, 06:29
(16-06-2024, 19:54)Keram napisał(a): Witam. Pracuję nad projektem, który ma porównać czas impulsu na wejściu cyfrowym, z czasem zadanym i w zależności od wyniku aktywować określone wyjścia cyfrowe. Do zmierzenia czasu trwania impulsu stosuję poniższy szkic, lecz nie mam pomysłu jak pobrać z portu czas impulsu w milisekundach i obrabiać dalej w programie. Używam Arduino Nano.
const int switchPin = 2;
unsigned long startTime;
unsigned long duration;
void setup()
{
pinMode(switchPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
if(digitalRead(switchPin) == LOW)
{
startTime = millis();
while(digitalRead(switchPin) == LOW)
duration = millis() - startTime;
Serial.println(duration);
}
}
Przecież masz go w zmiennej duration.
PS. Trochę poprawiłem formatowanie - ale może chodziło o coś takiego:
Kod:
if(digitalRead(switchPin) == LOW)
{
startTime = millis();
while(digitalRead(switchPin) == LOW)
;
duration = millis() - startTime;
twoja_funkcja(duration);
}Będzie trochę szybciej.

