Witajcie przyjaciele. Dzisiejszy post dotyczy programowego resetowania Arduino. Brzmi trochę dziwnie, ale dosłownie w niektórych przypadkach ta technika jest jedynym wyborem jaki pozostaje. Zdarzyło mi się to ostatnio w jednym z moich projektów, dlatego wiem, jakie to ważne. Zanim przejdziemy do szczegółów, przyjrzyjmy się najpierw funkcji resetowania Arduino.
Jeśli pracowałeś na dowolnej płytce Arduino, to zapewne zauważyłeś pin RESET w Arduino i możesz się zastanawiać, do czego służy ten pin. Pewnie zauważyłeś również, że po przesłaniu kodu na płytkę Arduino, Arduino resetuje się. Innym sposobem resetowania Arduino jest otworzenie terminala szeregowego w oprogramowaniu Arduino podczas podłączania płytki Arduino do komputera. Po otwarciu terminala szeregowego Arduino zostanie automatycznie zresetowany. Trzecim sposobem resetowania Arduino jest naciśnięcie przycisku. Po naciśnięciu i zwolnieniu przycisku Arduino zostaje zresetowane. Powinieneś również zajrzeć do artykułu „Jak uzyskać plik hex z Arduino?”.
Wszystkie te powyższe metody resetowania są ręczne, tzn. trzeba ręcznie nacisnąć przycisk lub otworzyć terminal szeregowy lub wgrać kod. W niektórych projektach musimy zresetować Arduino programowo, tj. automatycznie. W jaki sposób to zrobić jest temat dzisiejszego tutoriala. Opiszę dwie metody, za pomocą których programowo zresetujemy Arduino.
Resetowanie Arduino za pomocą pinu RESET
W pierwszej metodzie zresetujemy Arduino programowo za pomocą pinu RESET dostępnego na płytce Arduino.
Przede wszystkim połącz pin resetowania Arduino z dowolnym pinem cyfrowym, tak jak połączyłem go z pinem nr 4 pokazanym na poniższym rysunku:
Teraz prześlij poniższy kod na swoją płytkę Arduino:
int Reset = 4;
void setup() {
digitalWrite(Reset, HIGH);
delay(200);
pinMode(Reset, OUTPUT);
Serial.begin(9600);
Serial.println("Programowe resetowanie Arduino");
Serial.println("www.TheEngineeringProjects.com");
delay(200);
}
void loop()
{
Serial.println("A");
delay(1000);
Serial.println("B");
delay(1000);
Serial.println("Teraz resetujemy Arduino");
Serial.println();
delay(1000);
digitalWrite(Reset, LOW);
Serial.println("Ten napis nie zostanie wyświetlony");
}
Po przesłaniu kodu i otwarciu monitora szeregowego Arduino otrzymasz rezultaty, jak pokazano na poniższym rysunku:
Jak widać na powyższym rysunku, nasze Arduino nie wyświetla linii „Ten napis nie zostanie wyświetlony”, bo zostało wcześniej zresetowane.
Resetowanie Arduino za pomocą funkcji reset
W tej metodzie nie będziemy używać żadnego pinu sprzętowego. Zamiast tego zrobimy wszystko
w kodzie programu.
Jeśli nie wiesz zbyt wiele o programowaniu Arduino, powinieneś zapoznać się z wprowadzeniem do programowania Arduino.
Arduino ma wbudowaną funkcję o nazwie resetFunc(), którą musimy zadeklarować pod adresem 0,
a po jej wykonaniu Arduino zostaje automatycznie zresetowane.
Nie musisz nic robić na sprzęcie. Po prostu wgraj poniższy kod na swoją płytkę Arduino.
void(* resetFunc) (void) = 0;
void setup() {
Serial.begin(9600);
Serial.println("Programowe resetowanie Arduino");
Serial.println("www.TheEngineeringProjects.com");
delay(200);
}
void loop()
{
Serial.println("A");
delay(1000);
Serial.println("B");
delay(1000);
Serial.println("Teraz resetujemy Arduino");
Serial.println();
delay(1000);
resetFunc();
Serial.println("Ten napis nie zostanie wyświetlony");
}
Po przesłaniu kodu i otwarciu monitora szeregowego Arduino otrzymasz rezultaty, jak pokazano na poniższym rysunku:
W kodzie, który widziałeś, zdefiniowaliśmy funkcję resetFunc(), a następnie tam, gdzie wywołujemy tę funkcję, nasze Arduino zostaje zresetowane w tym momencie.
To wszystko na dzisiaj. Myślę, że dzisiejszy tutorial nie był zbyt trudny. Jeśli jednak nadal masz problemy to pisz w komentarzach.