03-02-2017, 10:17
(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 opisyKod jest dobry. Do niektórych komentarzy możnaby sie przyczepić ale ważne jest abyś to Ty rozumiał co sie dzieje.
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ń.
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;
}
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
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania