Yazılımda Arduino'yu Sıfırlamanın İki Yolu

El ile RESET düğmesine basmadan Arduino'yu baştan sıfırlamak istiyorsanız, birkaç yol vardır. İşte asgari kablolama / devre kullanarak iki yol.

Adım 1: RESET Pimine Bağlı 1 Kablo Kullanma

1. RESET pinine bir ÇIKIŞ pini (bu örnekte 12) bağlayan sadece 1 kablo kullanarak elektronik olarak. (devreye bakın)

Bu örnekte, dahili LED pimine 13 bağlı olan pim 13 yanıp sönmektedir. Pim 12, RESET pimine bir kablo ile bağlanır.
-Tipik olarak, bu bir sorun olacaktır çünkü uygulama başladığında, tüm pimler DÜŞÜK çekilir. Bu nedenle Arduino her koşuda devre dışı bırakılır. ANCAK, hile: setup () fonksiyonunda, İLK şey, sıfırlama pimimiz (digitalWrite (resetPin, HIGH) olarak adlandırılan pim 12'ye YÜKSEK yazmak ve böylece Arduino RESET pimini YÜKSEK çekmek.
 int led = 13; // OUTPUT LED pin olarak pin 13 int int resetPin = 12; // reset tuşuna bastığınızda kurulum rutini bir kez çalışır: void setup () {digitalWrite (resetPin, HIGH); gecikmesi (200); // dijital pimi çıkış olarak başlat. pinMode (led, ÇIKIŞ); pinMode (resetPin, OUTPUT); Serial.begin (9600); // Seri Portu başlat Serial.println ("reset"); // programın sıfırlandığını ve kurulum fonksiyonunun gecikme (200) olduğunu bilmek için reset sıfırla; } // döngü rutini sonsuza kadar tekrar tekrar çalışır: void loop () {delay (10); digitalWrite (led, YÜKSEK); // LED'i açın (YÜKSEK voltaj seviyesidir) Seri.println ("açık"); Gecikme (1000); // ikinci bir digitalWrite bekleyin (led, LOW); // gerilimi LOW Serial.println ("kapalı") yaparak LED'i kapatın; Gecikme (1000); // ikinci bir Serial.println bekleyin ("sıfırlanıyor"); gecikmesi (10); digitalWrite (resetPin, LOW); Serial.println ("bu asla olmaz"); // bu asla olmaz çünkü Arduino sıfırlanır} 

Adım 2: Just Software Kullanımı

Bu örnekte, fazladan kablolamaya gerek yoktur. Sıfırlama işlevini başlatır, ardından sıfırlama işlemini çağırırız.

void (* resetFunc) (void) = 0; // 0 adresinde sıfırlama işlevini bildir
...
resetFunc (); // çağrı sıfırlama
 int liderliğindeki = 13; // reset tuşuna bastığınızda kurulum rutini bir kez çalışır: void setup () {// dijital pimi çıkış olarak başlatır. pinMode (led, ÇIKIŞ); Serial.begin (9600); // seri bağlantı noktasını başlat} void (* resetFunc) (void) = 0; // sıfırlama işlevini @ adres 0'da bildir // döngü yordamı sonsuza kadar tekrar tekrar çalışır: void loop () {digitalWrite (led, HIGH); // LED'i açın (YÜKSEK voltaj seviyesidir) Seri.println ("açık"); Gecikme (1000); // ikinci bir digitalWrite bekleyin (led, LOW); // gerilimi LOW Serial.println ("kapalı") yaparak LED'i kapatın; Gecikme (1000); // ikinci bir Serial.println bekleyin ("sıfırlanıyor"); resetFunc (); // çağrı sıfırlama gecikmesi (100); Serial.println ("asla olmaz"); } 

İlgi̇li̇ Makaleler