Jak zatrzymać funkcję Void Loop w Arduino

Jak zatrzymać funkcję Void Loop w Arduino
Arduino to platforma programowa, która pozwala użytkownikom komunikować się z mikrokontrolerami, które nie były możliwe całkiem kilka lat temu. Tablice Arduino można zaprogramować za pomocą Arduino IDE. Arduino IDE używa języka C/C ++ z dodatkowymi funkcjami do kontrolowania i programowania płyt Arduino. Szkic arduino składa się głównie z dwóch funkcji, a jedno jest konfiguracja. Tutaj zrozumiemy, w jaki sposób możemy kontrolować pętlę za pomocą różnych technik programowania.

Jak zatrzymać Void Loop w Arduino?

Szkice Arduino składają się głównie z dwóch części pierwszej, a druga jest pętla. Funkcje konfiguracyjne działają tylko raz po skompilowaniu kodu, gdy funkcja pętli będzie działać, dopóki nowy szkic lub Arduino straci swoją moc.

Wiele projektów może wymagać, aby funkcje Void Loop działały przez określony czas lub zatrzymanie się po wykonaniu określonych instrukcji, więc teraz przyjrzymy się, w jaki sposób możemy zatrzymać funkcję pętli Void Arduino za pomocą różnych technik programowania.

Czy funkcja pętli naprawdę się kończy?

Arduino nie zapewnia żadnego sposobu zatrzymania funkcji Void Loop. Oprócz Arduino w mikrokontrolerach nie ma czegoś takiego. Technicznie wszystkie zastosowane przez nas techniki to po prostu zatrzymać funkcję pętli Arduino. Nie zatrzymuje się całkowicie, albo wysyłamy pętlę void do nieskończonego stanu za pomocą chwila lub użyj Wyjście Oświadczenie o zatrzymaniu procesu. Robiąc tę ​​pętlę Arduino utknęła w nieskończonej pętli bez wykonywania instrukcji, jedynym sposobem na odzyskanie go jest resetowanie; za pomocą przycisku lub przesyłając nowy szkic. Więc technicznie pętla Void Arduino nie kończy się.

Metody zatrzymania Void Loop w Arduino

Programowanie Arduino ma dwa typy pętli, które jest domyślnie w szkicu Arduino, które jest Void Loop (), podczas gdy druga jest używana podczas programowania lub pisania szkicu. Pętle utworzone przez użytkownika mogą łatwo przestać używać instrukcji przerwy.

Poniżej wymieniono kilka kroków, aby zatrzymać Void Loop w Arduino:

  • Używanie nieskończoności podczas pętli
  • Korzystanie z biblioteki snu
  • Korzystanie z instrukcji wyjścia (0)
  • Korzystanie z instrukcji IF

I: Używanie nieskończoności podczas pętli

Aby zatrzymać pętlę void w Arduino, naszkicuj nieskończoną pętlę można użyć za pomocą struktury pętli w czasie, gdy. Ta metoda będzie działać na wszystkich tablicach Arduino, ale nie powstrzyma to Arduino funkcjonującego, gdy Arduino nadal spożywa moc. Ta metoda można łatwo zaimplementować w dowolnym kodzie po ostatnim wierszu, w którym kod jest zakończony.

Weźmy przykład mrugnięcia LED, aby zrozumieć, w jaki sposób pętla While jest pomocna w łamaniu funkcji Void Loop:

void setup ()
// Umieść swój kod instalacyjny tutaj, aby uruchomić raz:
pinmode (LED_BUILTIN, wyjście);

void Loop ()
DigitalWrite (LED_BUILTIN, HIGH); // Włącz diodę LED
opóźnienie (1000); // opóźnienie sekundy
DigitalWrite (LED_BUILTIN, Low); // wyłącz diodę LED
opóźnienie (1000); // opóźnienie sekundy
while (1) // Infinite Loop

W powyższym kodzie zainicjowaliśmy wbudowany styk LED w funkcji konfiguracji void po tym w sekcji void pętla. Tutaj dioda LED zacznie migać w wzorze jednego 1 sekundy na i 1 sekundę. Po zakończeniu jednego cyklu nieskończoność, gdy pętla jest inicjowana na końcu drugiego opóźnienia; Teraz dioda LED pozostanie wyłączona do momentu ponownego przesłania kodu lub zresetowania Arduino.

II: Korzystanie z biblioteki snu

W powyższej metodzie Arduino Void Loop jest zatrzymany, ale Arduino będzie nadal przyjmować moc. Następna metoda, która na stałe zatrzyma Void Loop i umieszcza Arduino w trybie uśpienia Sleep_n0m1 Biblioteka, używając tego procesora Arduino można wysłać w trybie stałego uśpienia, dopóki Arduino nie zostanie zresetowane lub użyliśmy timera dla określonego czasu, dla którego Arduino przechodzi w tryb uśpienia. Ta metoda zależy od bibliotek, które mogą nie działać na niektórych płytach Arduino.

Znowu weźmiemy przykład LED, aby zademonstrować jego działanie.

#włączać
Spać spać;
niepodpisany długi czas wolny;
void setup ()
czas wolny = 5000;
pinmode (LED_BUILTIN, wyjście);

void Loop ()
DigitalWrite (LED_BUILTIN, HIGH); // Włącz diodę LED
opóźnienie (1000); // opóźnienie 1 sekundy
DigitalWrite (LED_BUILTIN, Low); // wyłącz diodę LED
opóźnienie (1000); // 1 s opóźnienie
spać.pwrdownMode (); // Ustaw tryb uśpienia
spać.Sleepdelay (czas poza czasem); // śpij dla: czas poza

Na początku szkicu zadzwoniliśmy do biblioteki Sleep Arduino i zdefiniowaliśmy zmienną po czasie Ta zmienna będzie przechowywać limit czasu, dla którego chcemy umieścić Arduino w trybie uśpienia. Tutaj wzięliśmy 5000 ms czasu poza. Następnie zdefiniowaliśmy wbudowaną diodę LED dla Arduino.

W sekcji Pętla Void jest zapisywany kod LED, tutaj LED zakończy jeden cykl migania, a następnie przejdzie do trybu uśpienia przez 5000 ms lub 5 sekund, po tym, jak dioda LED ponownie uruchomi jeden cykl migania. Cykl ten trwa do momentu zresetowania Arduino.

W tym przykładzie pętla zatrzyma się przez 5 sekund, po czym rozpocznie się od nowa z powodu zestawu poza czasem, ale jeśli będziemy musieli zatrzymać na stałe, musimy usunąć ten timer lub ustawić go na maksymalną wartość. Biblioteka snu może zatrzymać sekcję pętli na maksymalnie 49 dni, po czym zresetuje się automatycznie.

III: Korzystanie z instrukcji wyjścia (0)

Pętla void można również zatrzymać za pomocą instrukcji EXIT (). To stwierdzenie jest jednym z najprostszych sposobów zatrzymania funkcji Void Loop. Pamiętaj, aby użyć tej instrukcji na końcu kodu, ponieważ każda instrukcja zapisana po tym wierszu nie zostanie wykonana, dopóki Arduino nie zostanie zresetowane lub kod nie zostanie ponownie przesłany.

void setup ()
// Umieść swój kod instalacyjny tutaj, aby uruchomić raz:
pinmode (LED_BUILTIN, wyjście);

void Loop ()
DigitalWrite (LED_BUILTIN, HIGH); // Włącz diodę LED
opóźnienie (1000); // 1 s opóźnienie
DigitalWrite (LED_BUILTIN, Low); // wyłącz diodę LED
opóźnienie (1000); // 1 s opóźnienie
wyjście (0);

Powyższy kod wyjaśnia użycie instrukcji wyjściowych do zatrzymania pętli void w kodzie Arduino. Podobnie jak poprzedni przykład LED kod migania, a na końcu kodu zainicjowaliśmy linię wyjściową. To złamie pętlę arduino void. LED mrugnie przez jeden cykl po tym, jak się zatrzyma.

IV: Korzystanie z instrukcji IF

Oświadczenie IF jest ostatnią metodą, omówimy dzisiaj, aby zatrzymać pętlę void. IF-STATEMENT ustawi warunek wewnątrz pętli, która albo ponownie uruchomi pętlę void lub zatrzyma ją w zależności od wprowadzania użytkownika.

Poniższy kod pokazuje, że podtrzymanie IF za pomocą LED do zatrzymania pętli void pętli.

boolean stop = true;
void setup ()
// Umieść swój kod instalacyjny tutaj, aby uruchomić raz:
pinmode (LED_BUILTIN, wyjście);

void Loop ()
if (stop == true)
DigitalWrite (LED_BUILTIN, HIGH); // Włącz diodę LED
opóźnienie (1000); // 1 s opóźnienie
DigitalWrite (LED_BUILTIN, Low); // wyłącz diodę LED
opóźnienie (1000); // 1 s opóźnienie

stop = false;

Na początku kodu zainicjowaliśmy zmienną logiczną zatrzymywać się a jego wartość jest ustawiona na prawdziwe. Następnie w sekcji konfiguracji są zdefiniowane szpilki LED. W sekcji pętli void, jeśli stwierdzenia rozpoczną się i sprawdź zmienną zatrzymywać się wartość. Jeśli warunek stanie się prawdziwy, rozpocznie szkic mrugnięcia LED. Po zakończeniu cyklu mrugania LED przypisujemy wartość zatrzymywać się zmienna do fałszu. Następnie będzie sprawdzał pętlę pustki, ale stwierdzenie zawsze stanie się fałszywe, ponieważ ustawiamy wartość zatrzymywać się zmienne do fałszywego, co skutkuje zatrzymaniem void pętli kodu Arduino.

Wniosek

Pętla void jest ważną częścią kodu Arduino, wszystko zapisane w nim będzie działać, dopóki Arduino nie zostanie zresetowane. Czasami musimy zatrzymać sekcję pętli zgodnie z parametrami projektu, więc tutaj podkreśliliśmy wszystkie główne sposoby, w których możemy zatrzymać kod sekcji Arduino void Loop.