• 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
Arduino = gamepad/joystick?
#11
(03-02-2017, 00:36)Filip napisał(a): W kodzie mam Serial.print co 5 sekund i nawet nie potrafię tego do końca zrozumieć, dodałem opisy Smile

Kod PHP:
loopCount++;  // loop+1
 
   if ( (millis()-startTime)>5000 ) {  // jeżeli (czas startu arduino(ms) odjąć czas startu funkcji(ms)) większy niż 5000(ms)
 
       Serial.print("Average loops per second = ");  // print
 
       Serial.println(loopCount/5);  // print ilość loopów dzielone na 5
 
       startTime millis();  // nadpisujemy czas startu funkcji
 
       loopCount 0//resetujemy policzone przez 5 sekund loopy
 
       

Jeżeli dobrze rozumiem ten prosty kod to na jego podstawie nie powinienem mieć problemów z kontrolowaniem np. ledów nie powodując opóźnień w działaniu kontrolera. Poza ledami posłuży mi to do kontrolowania silniczków wibracyjnych i przekaźników, precyzja nie jest ważna, ważniejsze jest płynne działanie kontrolera i brak opóźnień.
Kod jest dobry. Do niektórych komentarzy możnaby sie przyczepić  ale ważne jest abyś to Ty rozumiał co sie dzieje.
Funkcja millis() zwraca czas od startu arduino, zwiększa swoją wartość co 1ms.
Zmienna startTime nie przechowuje "czas startu funkcji" ale zapamiętuje kiedy ostatnio  był wysyłany komunikat(funkcja Serial.print).

Kod można zapisać w troche innej postaci:
Kod PHP:
loopCount++;  // loop+1
czasAktualny millis();
if ( (
czasAktualny czasZapamietany)>5000 ) { //sprawdzamy różnicę czasu, jeśli >5s to wykonujemy zadaną operację
 
   Serial.print("Average loops per second = ");
 
   Serial.println(loopCount/5);
 
   czasZapamietany czasAktualny//zapamiętujemy aktualny czas
 
   loopCount 0;

Przejżyj przykład Przykłady->02.Digital->BlinkWithoutDelay, przeszukaj sieć pod kątem użycia millis()(w końcu znajdziesz osobę która pisze zrozumiałym dla Ciebie językiem Wink) bo zrozumienie tych przykładów pozwala na wykonanie prostej wielozadaniowości.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości