Як стерти пам'ять про Arduino Uno?


15

Я просто майстер, що навчається Ардуїно з сином, і я був здивований, що коли я знову підключив USB-шнур до Arduino, програма все ще працювала, і я подумав собі: "Це добре, що я просто нічого не продував вгору ".

Отже, який нормальний спосіб люди називають це щодня цими речами? Ви зазвичай завантажуєте голі кістки, не робите нічого ескізу або просто від'єднуєте все від розетки?


4
Що ви маєте на увазі під "коли я знову підключив USB-шнур до Arduino, програма все ще працювала", яку поведінку ви спостерігали та яку поведінку ви очікували? Чи було щось пов’язане з Arduino?
jippie

@jippie Так, у мене підключилася купа світлодіодів, і всі вони загорілися. Чомусь я думав, що програми завантажені в пам'ять, і вони будуть перезавантажені, але оскільки цього не існує ....
Пітер Тернер

7
Програми завантажуються у флеш-пам'ять, а не в оперативну пам'ять, тому вони зберігаються навіть після вимкнення живлення.
Рікардо

Відповіді:


15

Після завантаження Arduino запустить будь-яку програму, яка була останньою. Рішення. Не вмикайте його, якщо ви не хочете, щоб він працював.

Коли вийшов з коробки, Arduino зазвичай запускає програму Blink. Тож ви можете просто завантажити це і зателефонувати за день, якщо хочете "скинути" його.

Або мати програму циклу з командою сну.

Якщо ви возилися з завантажувачем USB через штифти icsp, цього, однак, недостатньо, вам потрібно буде знову встановити завантажувач. Але якщо ви завантажували програми через usb або безпосередньо використовували програміст, немає проблеми з завантаженням Blink або якоїсь іншої манекенової програми для її скидання.


чи можна змусити його запускати саморуйнівну програму, що нічого не підключається до клем напруги?
Пітер Тернер

@PeterTurner, коли на це немає сили? Ні. Але ви можете додати програму, яка зловживає шпильками, і якщо ви залишите її на деяку шкоду, ви можете викликати (не багато, якщо шпильки не підключені)
Manishearth

9

Якщо безпека є головною проблемою, то майже завжди слід завантажувати ескіз стоп * на дошку, перш ніж називати її в день. Це було б хорошою ідеєю, наприклад, коли ваша рада напівпостійно є частиною більшої системи. Ви можете зробити це:

  • Завантажте ескіз Мінімум голого, знайдений у File-> Examples-> Basicв
  • Завантажте ескіз з великою затримкою в циклі.
#include <limits.h>

void setup()
{}

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

void loop()
{}

* Стоп - просто образний. Дошка насправді не перестає працювати.


2
Чи можете ви отримати подібний (і більш постійний) ефект, зателефонувавши exit()зсередини setup()чи loop()?
Пітер Блумфілд

@ PeterR.Bloomfield Не можу повірити, що я забув про це!
asheeshr

Навіщо турбуватися або з виходом, або із затримкою? Просто майте void setup () { } void loop () { }- у будь-якому випадку внутрішньо процесор просто розкручується, "не роблячи нічого корисного".
Нік Гаммон

1

Головне, що може піти не так - якщо ви відкладете Arduino вбік на пару тижнів, забудете, який ескіз (код) завантажений на нього, а потім поверніться до роботи над ним, підключіть обладнання (наприклад, перемикач, світлодіод або двигун) ) і несподівано загоріться / увімкнеться, тому що попередній код стосувався штифта, до якого він був підключений.


Рішення 1. Спочатку завантажте новий код.

Простий і безпечний прийом - це завантажити новий код, над яким ви працюєте сьогодні, перш ніж підключити будь-яке обладнання. Тепер ви знаєте, що робить код, які штифти він використовує, а потім після цього підключайте обладнання (бажано, повертаючи Arduino спочатку, від'єднавши його).

Потім, коли ви знову підключите електроживлення, він запускає ескіз, який ви завантажили, у вас підключено обладнання та все має бути добре.


Рішення 2. Завантажте ескіз "не робіть нічого".

Ви можете завантажити цей короткий ескіз:

int main () { }

Це "нічого не робить". Всі штифти залишатимуться вхідними даними, тож ви можете сміливо приєднати обладнання, а потім розпочати кодування нового проекту.


Безпека насамперед

Хорошим правилом є не підключати або відключати обладнання від розетки (наприклад, світлодіоди, вимикачі, двигуни) з поданою потужністю. Якщо ви відволікаєтесь та підключаєтесь до неправильної розетки на платі, ви можете негайно пошкодити або те, що ви підключені, або Arduino, або і те й інше.

Після вимкнення живлення ви зможете в останню хвилину перевірити, чи все підключено до потрібного місця, чи є ваша полярність правильною тощо.

Також переконайтеся, що у вас немає статичної електрики на тілі, особливо якщо ви носите джемпер чи щось пухнасте, або сидите на килимі.

Особисто я завжди досягаю і торкаюсь якоїсь металевої частини поруч, щоб "заземлити" себе, перш ніж доїхати до Ардуїно. Приклад - металевий корпус ПК, розетка для навушників чи щось подібне.

Якщо після підключення живлення до Arduino (наприклад, за допомогою кабелю USB) ви не відразу побачите індикатор живлення, вмикається, негайно відключіть живлення! Можливо, вам щось скорочено, і чим менше часу ви робите для цього, тим краще.


1

Моє найбільше занепокоєння, коли це трапляється, це те, що я зазвичай провідную Arduino для свого нового проекту, і я підключаю USB для початкового завантаження нового ескізу. Я хвилююся, не маючи поняття, що буде намагатися попередня програма, підключившись до абсолютно іншого обладнання.

Поки нічого поганого не відбулося, і я не думаю, що я прийматиму палаючу БІЛЬКУ щоразу, коли кладу один із моїх Arduinos назад у смітник. Це, мабуть, лише питання часу.


0

Якщо плата arduino підключена до будь-якого іншого пристрою, тоді відключіть все від мережі та просто підключіть arduino до комп’ютера за допомогою usb-кабелю та спробуйте завантажити новий ескіз, я сподіваюся, що це допоможе.


Ласкаво просимо в Arduino SE! Чи є якась причина, що ця відповідь краща за інші відповіді? Спасибі!
Анонімний пінгвін

0

У Arduino IDE перейдіть до прикладів, виберіть Eeprom, виберіть eeprom clear та завантажте ескіз.

Коли світлодіод на штифті 13 увімкнеться, ви закінчили.

NB. Це може зайняти деякий час, залежно від розміру EEPROM в Ардуїно.


Тож який сенс? Запуск чогось, що не торкається вводу / виводу (але очищає EEPROM при кожному включенні живлення)?
Пітер Мортенсен

Ви насправді пробували це? Здається, що контакт 13 не встановлений як вихід (Arduino IDE 1.6.5)
Peter Mortensen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.