Skocz do zawartości

Zagnieżdżona pętla IF wykonująca się przez ściśle określony czas


mzmudek

Pomocna odpowiedź

Bo to już kolejna wersja... Faktycznie nie najlepsza. Mój błąd. Ale może zadam inne pytanie. Czy w ogóle ten schemat, który pokazałem wcześniej, jest możliwy do realizacji za pomocą if'ów, czy jest jakaś prostsza metoda, której nie dostrzegam?

Link do komentarza
Share on other sites

Śnieg spadł, grzybów nie ma.

Próbowałem użyć "for". Nie zadziałało. Czy Ty spojrzałeś na pełen schemat programu? Od pola "start" do pola "koniec"? Bo może się nie zrozumieliśmy? Pomiar trwający 3 ms to tylko ułamek całości. I tu jest problem, bo pomiar albo się kończy na amen, albo olewa te 3 ms.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Jak chcesz wykonywać coś wielokrotnie przy pomocy if-a? To tylko na schemacie algorytmu wygląda jak if, bo jest poziomym rombem. Wszelkie nawroty sterowania (te strzałki w górę) realizujesz za pomocą jednej z kilku instrukcji pętli: for, while lub do.

W Twoim przypadku, skoro warunek sprawdzasz na początku, to powinno być while. Gdybyś się nad tym chwilę zastanowił to byś zauważył, że warunkiem wyjścia z pętli wypisywania jest dwukrotny (pod rząd) negatywny test wielkości napięcia który możesz sprawdzać na końcu (wtedy pętla do). Wystarczy prosty licznik wyników negatywnych. Czy tak miało być?

A może inaczej: opisz własnymi słowami co chcesz zrobić. Nie patrz na rysunek bo być może się na czymś zafiksowałeś, tylko opisz jak to ma działać. Pamiętaj, że wypisywanie czegoś przez Serial nie jest bezkarne. Gdy tylko zapełni się bufor (po kilkudziesięciu znakach) wysłanie każdego kolejnego znaku to mogą być milisekundy. Jeśli wszystko ma trwać 3ms, to możesz mieć 1000% błędu pomiaru czasu. Już Ci kiedyś pisałem: oddziel akwizycję od obróbki i wypisywania wyników bo polegniesz na komunikacji.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.