Bagaimana cara menghapus memori Arduino Uno?

15

Saya hanya bermain-main belajar Arduino dengan anak saya dan saya terkejut bahwa ketika saya menghubungkan kabel USB kembali ke Arduino program masih berjalan dan saya berpikir, "itu hal yang baik saya tidak hanya meniup apa pun naik."

Jadi, bagaimana orang biasa menyebutnya sehari dengan hal-hal ini? Apakah Anda biasanya memuat tulang-tulang tanpa melakukan sketsa atau mencabut semuanya?

Peter Turner
sumber
4
Apa yang Anda maksud dengan "ketika saya menghubungkan kembali kabel USB ke Arduino, program masih berjalan", perilaku apa yang Anda amati dan perilaku apa yang Anda harapkan? Apakah ada yang terhubung dengan Arduino?
jippie
@ Jippie ya, saya memiliki banyak LED yang terpasang dan mereka semua menyala. Untuk beberapa alasan saya pikir program-program dimuat ke dalam memori dan akan reboot, tetapi karena itu tidak ada ....
Peter Turner
7
Program dimuat ke dalam memori flash, bukan RAM, sehingga disimpan bahkan setelah powerdown.
Ricardo

Jawaban:

15

Saat di-boot, Arduino akan menjalankan program apa pun yang ada di sana terakhir. Solusi: Jangan nyalakan jika Anda tidak ingin dijalankan.

Ketika di luar kotak, Arduino biasanya menjalankan program Blink. Jadi Anda bisa memuatnya dan menyebutnya sehari jika Anda ingin "mengatur ulang" itu.

Atau miliki program loop dengan perintah sleep.

Jika Anda telah mengacaukan bootloader USB melalui pin icsp, ini tidak cukup, Anda harus menginstal ulang bootloader. Tetapi jika Anda telah mengunggah program melalui usb atau langsung menggunakan programmer, tidak ada masalah dengan mengunggah Blink atau program boneka lainnya untuk mengatur ulang.

Manishearth
sumber
apakah mungkin menjalankan program penghancuran sendiri tanpa ada yang terhubung ke terminal tegangan?
Peter Turner
@PeterTurner ketika tidak ada kekuatan untuk itu? Tidak. Tetapi Anda dapat menambahkan program yang menyalahgunakan pin, dan jika Anda membiarkannya pada beberapa kerusakan dapat dipanggil (tidak banyak kecuali pin terhubung)
Manishearth
9

Jika keselamatan menjadi perhatian utama, maka Anda harus selalu memuat sketsa berhenti di papan sebelum memanggilnya sehari. Ini akan menjadi ide yang baik, misalnya, ketika papan Anda secara semi-permanen merupakan bagian dari sistem yang lebih besar. Anda dapat melakukannya dengan:

  • Unggah sketsa Bare Minimum yang ditemukan di File-> Examples-> Basicdi
  • Unggah sketsa dengan penundaan besar dalam lingkaran.
#include <limits.h>

void setup()
{}

void loop()
{
  delay(ULONG_MAX);
}
void setup()
{
   exit(0);
}

void loop()
{}

* Berhenti hanya bersifat kiasan. Papan tidak benar-benar berhenti berjalan.

asheeshr
sumber
2
Bisakah Anda mendapatkan efek serupa (dan lebih permanen) dengan menelepon exit()dari dalam setup()atau loop()?
Peter Bloomfield
@ PeterR.Bloomfield Tidak percaya saya lupa tentang itu!
asheeshr
Mengapa repot-repot dengan pintu keluar atau penundaan? Hanya saja void setup () { } void loop () { }- dalam hal apapun secara internal prosesor hanya berputar di sekitar "tidak melakukan apa pun yang berguna".
Nick Gammon
1

Hal utama yang bisa salah adalah jika Anda menyisihkan Arduino Anda selama beberapa minggu, lupakan sketsa (kode) apa yang dimuat ke dalamnya, lalu kembali bekerja di sana, pasang perangkat keras (seperti sakelar, LED atau motor) ) dan nyalakan / nyalakan secara tiba-tiba, karena kode sebelumnya membahas pin yang terhubung dengannya.


Solusi 1. Muat kode baru terlebih dahulu.

Teknik yang sederhana dan aman adalah dengan memuat kode baru yang Anda kerjakan hari ini sebelum Anda mencolokkan perangkat keras apa pun. Sekarang Anda tahu apa yang dilakukan oleh kode tersebut, pin apa yang digunakannya, dan Anda kemudian pasang perangkat keras sesudahnya (lebih disukai memutar Arduino off pertama dengan mencabutnya).

Kemudian ketika Anda menghubungkan kembali daya, itu menjalankan sketsa yang Anda unggah, Anda memiliki perangkat keras Anda terhubung dan semuanya harus baik-baik saja.


Solusi 2. Muat sketsa "jangan lakukan apa-apa".

Anda dapat mengunggah sketsa singkat ini:

int main () { }

"Tidak melakukan apa-apa". Semua pin akan tetap sebagai input, sehingga Anda dapat dengan aman kemudian memasang perangkat keras Anda, dan kemudian mulai mengkodekan proyek baru Anda.


Keselamatan pertama

Aturan yang baik adalah untuk tidak mencolokkan atau mencabut perangkat keras (mis. LED, sakelar, motor) dengan daya yang diberikan. Jika Anda terganggu dan tancapkan ke soket yang salah di papan Anda mungkin langsung merusak apa yang Anda terhubung, atau Arduino, atau keduanya.

Dengan matikan, Anda kemudian dapat melakukan pengecekan di menit terakhir bahwa semuanya terhubung ke tempat yang tepat, Anda memiliki polaritas yang benar, dan sebagainya.

Pastikan juga Anda tidak memiliki listrik statis di tubuh Anda, terutama jika Anda mengenakan jumper atau sesuatu yang berbulu, atau duduk di karpet.

Secara pribadi saya selalu meraih dan menyentuh beberapa bagian logam di dekatnya untuk "tanah" sendiri, sebelum meraih Arduino. Contohnya adalah kotak logam dari PC, soket headphone, atau sesuatu seperti itu.

Jika, setelah menghubungkan daya ke Arduino (mis. Dengan kabel USB) Anda tidak segera melihat LED daya menyala, segera putuskan daya! Anda mungkin telah mempersingkat sesuatu, dan semakin sedikit waktu Anda melakukannya, semakin baik.

Nick Gammon
sumber
1

Kekhawatiran terbesar saya ketika ini terjadi adalah saya biasanya memasang kabel Arduino untuk proyek baru saya dan saya mencolokkan USB untuk mengunduh awal sketsa baru. Saya khawatir, tidak tahu apa yang akan dicoba program sebelumnya, terhubung ke perangkat keras yang sama sekali berbeda.

Sejauh ini tidak ada hal buruk yang terjadi dan saya tidak berpikir saya akan mengadopsi pembakaran BLINK setiap kali saya memasukkan salah satu Arduino saya kembali ke tempat sampah. Ini mungkin hanya masalah waktu saja.

linhartr22
sumber
0

Jika papan arduino terhubung ke perangkat lain maka cabut semua kabel dan hubungkan arduino dengan komputer menggunakan kabel usb dan coba unggah sketsa baru saya harap ini akan membantu.

nipi
sumber
Selamat Datang di Arduino SE! Adakah alasan jawaban ini lebih baik dari jawaban yang diberikan lainnya? Terima kasih!
Penguin Anonim
0

Di Arduino IDE, buka contoh, pilih Eeprom, pilih eeprom hapus dan kemudian unggah sketsa.

Saat itu LED on pin 13 akan menyala, Anda selesai.

NB. Ini mungkin memakan waktu tergantung pada ukuran EEPROM di Arduino.

Victor Peters
sumber
Jadi apa gunanya? Menjalankan sesuatu yang tidak menyentuh I / O (tetapi membersihkan EEPROM di setiap power on)?
Peter Mortensen
Sudahkah Anda mencoba ini? Pin 13 tampaknya tidak diatur sebagai output (Arduino IDE 1.6.5)
Peter Mortensen