Cara Reset Arduino dengan Kode Program

Ada kalanya kita ingin reset ulang Arduino untuk sekedar memastikan semua fungsi berjalan dengan semestinya. Atau jika Arduino dalam keadaan nge-hang karena suatu hal, tentu kita harus meresetnya. Untuk mereset arduino secara manual tentunya tidak mungkin kita lakukan jika sistem kendali berbasis Arduino yang sudah kita bangun sudah terpasang di suatu tempat tentu. Satu-satunya cara adalah dengan membuat semacam sistem auto reset  atau dengan pendeteksian jika Arduino dalam keadaan hang.

Untuk tutorial kali ini akan kita bahas tentang bagaimana me-reset Arduino dengan kode program atau secara software tidak dengan menekan tombol reset hardware. Reset Arduino secara berkala sangat penting untuk Anda lakukan terutama pada Arduino yang bekerja mandiri sebagai sebuah sistem kendali yang bekerja 24 jam terus menerus. Hal ini untuk mencegah Arduino menjadi nge-hang dan senantiasa membuatnya ‘segar’ kembali.

Untuk me-reset Arduino dengan kode program, Anda dapat mendefinisikan sebuah function di alamat 0 program Arduino. Jadi ketika Anda memanggil function ini di sembarang tempat dalam program utama Anda, maka pada dasarnya Anda akan menuju alamat 0 di Arduino Anda. Ini akan menghasilkan efek yang sama seperti saat Anda menekan tombol reset  Arduino (reset hardware). Untuk lebih jelasnya berikut ini adalah contoh penggunaan function ‘ku_reset’ untuk mereset Arduino secara software

void(* ku_reset) (void) = 0;

void setup() {    
  Serial.begin(9600);
  Serial.println("ini di blok setup Arduino");
  Serial.println("http://saptaji.com");
  delay(1000);

}

void loop()
{
  Serial.println("ini di blok loop Arduino");
  delay(1000);              
  Serial.println("siap-siap reset Arduino");
  Serial.println();
  delay(1000);
  ku_reset();
  Serial.println("ga bakal sampai sini karena udah di-reset");
}

Perhatikan cara pendefinisian function ‘ku_reset’ agar berada di alamat 0 Arduino (baris [1]) dan cara pemanggilan function untuk reset tersebut (baris [18]). Untuk lebih jelasnya, silahkan buka jendela Serial Monitor melalui menu Tools-Serial Monitor. Perhatikan bahwa baris [19] di atas tidak akan pernah dieksekusi (tidak tertampil di jendela Serial Monitor) karena Arduino sudah di-reset terlebih dahulu (baris [18])

cara reset arduino dengan kode program

Anda dapat mengombinasikan function ku_reset() di atas dengan library Time/TimeAlarm untuk membuat sistem auto reset Arduino secara berkala dalam jangka waktu tertentu, misalnya seminggu sekali atau sebulan sekali untuk me-refresh sistem Arduino Anda .

Di awal tutorial ini, saya sempat menyinggung tentang sistem pendeteksian Arduino dalam keadaan nge-hang. Arduino harus bisa mendeteksi dirinya sendiri tidak berfungsi sebagaimana mestinya dan bagaimana cara menanganinya. Salah satu cara yang banyak dipakai adalah dengan memanfaatkan WDT (Watch Dog Timer), yakni semacam timer yang jika mengalami overflow akan men-trigger interrupt yang akan mereset suatu processor (dalam hal ini mikrokontroller AVR ATMega dalam board Arduino). Jadi teknik reset Arduino dengan WDT adalah berbeda dengan cara reset menggunakan function ku_reset di atas. Jika menggunakan WDT, sistem reset akan terpicu oleh overflow timer WDT, jika menggunakan function ku_reset, sistem reset akan terjadi karena kita yang memanggil function tersebut. Jadi WDT adalah sebuah mekanisme pe-reset-an Arduino jika sudah terjadi nge-hang (pasca kejadian), sedangkan function ku_reset adalah mekanisme pe-reset-an Arduino sebelum terjadi hang (preventif). Bagaimana cara penggunaan WDT dan kapan kita menggunakannya akan saya bahas lebih detail dalam tutorial berikutnya….

0 0 votes
Article Rating

Leave a Reply

50 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Sutrisno

Mas mau nanya: klo arduino yg sdh di upload cnth aplikasi trs kita ingin mereset default lagi caranya gmn ya?klo tombol reset kan cm ngre start arduino ny saja ga ngilangin isi programnya..mhn bantuan jwbnya mas..nuuwun

ranggi

trimakasi mas,,, ini yang saya cari sejak kemarin

Muhatharasyari

mas sy kan punya arduino esp8266mod wifi jammer, klo mau reset gmna yah mohon bantuannya, ini no hp saya mas WA = 085298281354

hendro

Mas. Saya ingin belajar arduino dimana ya ?
Terimakasih

Anbu

Mas mau adu ilmu nihhhh
Apa perbedaan arduino dengan sismin atmega yang dibuat sendiri mas
Ayoooo !!!!!
Kalau memang situ suhu mikrokontroller……
Wkwkwkwkwkkwkwkw

lukman ariyanto

Mantap mas Ilmunya ijin sedot ilmu nya ya hehe

sembiring kembaren

mau nanya mas
kemarin aku unistal prorgam arduino
kembali aku instal lagi, tapi port nya dah berubah
tiba buat program dan di kompilasi ke skecth arduino jadi ngak bisa mas
petunjuk mas soalnya dah kewalahan. mau cari perogram dalam bord arduino juga ngak bisa. direset juga ngak bisa

Dani usman

Mas mau nanya saya bikin module RTU dengan arduino, komunikasi pake RS485, kebetulan saya bikin dua slave, permasalahan nya kalau individual gak Ada masalah, tapi kalau saya konek dua module selalu komunikasi nya error, padahal sudah di bedain id nya, penyebab nya APA ya Mas???, kaya yang nge hang, kalau di reset Bagus lagi komunikasi nya, minta ajarin dong Mas untuk auto reset arduino setiap 3 menit sekali gitu Mas, ya fungsinya seperti tombol reset gitu Mas, Karena kalau pas komunikasi error saya tekan tombol reset Bagus lagi, aku tunggu ya Mas.

fie

mas kalau arduinonya diupload lebih dari satu program gimana ya? apakah bisa, apakah akan berjalan dengan normal?

fie

Makasih mas..
mas saya mau nanya, ada dapat masalah masih belum teratasi. saya sekarang buat control lampu menggunakan bluetooth and arduino uno untuk belajar tapi saat saya control di hp android lampunya tidak menyala mas, padahal saya juga sudah upload programnnya ke arduinonya. ada solusi gak mas? Makasih mas sebelumnya.

fie

Iya mas tak cobain dulu..
kalau kabel pawernya 250v terus lampunya sekitar 220-240v itu gak ada masalah ya mas?

Arry

Mas, mau tanya kalau boardnya sdh terlanjur freeze atasinya gmn ya? Kabel tidak terbaca.

Sebelumnya jalan normal, sepertinya saya ada salah colok jumper, boardnya langsung nyala semua lampunya, (led bawaan, tx/rx, indikator on) dan puanasss. Saya pake adaptor 12v.

ard

mas,, saya mau tanya.. kalo saya ingin mereset salah satu void pake fungsi diatas bisa engga ya mas ?? terima kasih.

ard

maksud saya hanya satu fungsi perintah saja yang saya mau reset mas..kira2 bisa engga ya mas ?? Kan kalo pake fungsi reset yg disini kan,, semua program ke reset ulang kan mas ??

ard

maksud saya di program saya seperti ini :
void setup(){
” ” }

void loop(){
” ” }

void suhu 1(){
” ” }

void suhu 2 (){
” “}

jadi yang saya tanyakan,, apakah dengan fungsi reset diatas bisa mereset salah satu fungsi void perintah nya mas ? misalkan yg saya mau reset itu hanya void suhu 2 saja.. terima kasih..

ard

Karena saya mau ngambil data secara prriodik mas

gandalf

maap mas, sy juga nunggu jawaban yg ini, kira2 gmana caranya ya mas? mohon bantuannya 🙂

ard

Kira2 seperti apa ya mas kalo pake script ??

hedi herdian

gan mau nanya arduino saya tadi konek dan bisa upload kodingan tp udah beberapa kali upload sekarang gak bisa konek di pc yang berbeda pun sama ini harus gimana ya gan

DEDE KUR

Mas mau tanya, kalo ingin reset menggunakan keypad gimana ya mas? Jadi ketika misalnya saya mau pencet # di keypad bisa ke awal lagi mas?? Mohon bantuannya mas terimakasih

Yakim

selamat malam,maaf mengganggu, kalau mau ganti kode atau PIN dari keypad gimna caranya?

rudy

mas,kenapa nodemcu saya kerika saya mau upload ulang malah keluar reseeting via RES pin,mohon pencerahannya egera mas,nodemcu amica

lukman

selamat malam mas. semisal reset arduino itu tiap minggu sekali bagaimana mas. menggunakan fungsi timer apa RTC

Danang

Pny sy Arduino uno dan sy isi program utk joystick menggunakan xloader, dan sekarang sy mau kembalikan sprit semula tp tdk bs krn awal sy colokan arduinonya ke computer lngsng terdeteksi joystick. Sy buka program arduinonya itu portnya tdk terdeksi port arduinonya. Itu gmn ya cara mengatasinya ?

dewi

mas mau tanya kalau arduino bisa di remote?

Pemuda Pelajar

if….. else if…  else if (nilaiSensor < 301){    int h = dht.readHumidity();   int t = dht.readTemperature();   unsigned long currentMillis = millis();   if (currentMillis – previousMillis >= jeda)    {   previousMillis = currentMillis;   }   if (ledState == LOW)    {    ledState = HIGH;   }      else    {    ledState = LOW;   }   int nilaiSensor = analogRead (sensor);   int percentSensor = nilaiSensor/6;  lcd.setCursor (0,0);  lcd.print (“Processing…”);    delay(200);  lcd.clear();         for (i++; i < 101;){    lcd.setCursor (0,1);    lcd.print (i);    lcd.print (“%”);    delay(50);    break;   }  digitalWrite (lightPump, HIGH);  digitalWrite (waterPump, HIGH);  digitalWrite (indicatorLight, ledState); Bang, misal yg blok else if (nilaiSensor < 301) sudh dijalankan terus sensor mendeteksi… Read more »

Mahad

permisi mau tanya kalau mau reset tapi pakai photo resistor kira kira bisa ndak?

Fendix

Sangat berguna untuk reset millis()

50
0
Would love your thoughts, please comment.x
()
x