• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Jak użyć w szkicu dane z monitora portu szeregowego?
#1
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);
  
}

}
 
Odpowiedź
#2
(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.
 
Odpowiedź
#3
Dzięki "oscarX". Faktycznie, po co sobie komplikować życie. Warunki "if"  wystarczają - sprawdziłem,  działają zgodnie z założeniami. Problem rozwiązany, chociaż inaczej niż sie spodziewałem. Smile
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości