Как стереть память о Arduino Uno?
Я просто тинкер, изучающий Arduino с моим сыном, и я был удивлен, что, когда я снова подключил USB-кабель к Arduino, программа все еще работала, и я подумал про себя: «Хорошо, что я просто не взорвал ничего вверх «.
Итак, как обычно люди называют это днем с этими вещами? Вы обычно загружаете голыми руками ничего не рисуя или просто отключаете все?
Что вы подразумеваете под «когда я снова подключил USB-кабель к Arduino, программа все еще работала», какое поведение вы наблюдали и какое поведение ожидали? Было ли что-нибудь связано с Arduino?
@jippie Да, у меня было подключено несколько светодиодов, и все они загорелись. Почему-то я думал, что программы были загружены в память и будут перезагружены, но так как этого не существует .
Программы загружаются во флэш-память, а не в ОЗУ, поэтому они сохраняются даже после отключения питания.
При загрузке Arduino будет запускать любую программу, которая была установлена на нем в последний раз. Решение: не включайте его, если не хотите, чтобы он работал.
Когда Arduino готов к работе, он обычно запускает программу Blink. Таким образом, вы можете просто загрузить это и назвать это день, если вы хотите «сбросить» его.
Или запустите программу цикла с командой сна.
Если вы возились с загрузчиком USB через контакты icsp, этого недостаточно, вам нужно переустановить загрузчик. Но если вы загружали программы через usb или напрямую с помощью программатора, нет проблем с загрузкой Blink или другой фиктивной программы для его сброса.
возможно ли, чтобы он запускал саморазрушающуюся программу без подключения к клеммам напряжения?
@PeterTurner, когда нет сил для этого? Нет. Но вы можете добавить программу, которая неправильно использует контакты, и если вы оставите ее на некотором повреждении, можно вызвать (не так много, если контакты не подключены)
Если безопасность является серьезной проблемой, то вы почти всегда должны загружать эскиз с остановкой * на доску, прежде чем называть ее днем. Это было бы хорошей идеей, например, когда ваша доска полупостоянно является частью более крупной системы. Вы можете сделать это:
- Загрузите набросок Bare Minimum, найденный в File -> Examples -> Basic в arduino-ide
- Загрузить эскиз с большой задержкой в цикле.
#include void setup() <> void loop() delay(ULONG_MAX); >
- Загрузите эскиз с звонком exit() от setup() ( Спасибо @Peter! )
void setup() exit(0); > void loop() <>
* Стоп просто образный. Доска действительно не перестает работать.
Можете ли вы получить аналогичный (и более постоянный) эффект, позвонив exit() изнутри setup() или loop() ?
@ PeterR.Bloomfield Не могу поверить, что я забыл об этом!
Зачем беспокоиться о выходе или задержке? Просто имейте void setup () < >void loop () < >— в любом случае внутренне процессор просто зацикливается на том, чтобы «ничего не делать полезного».
Главное, что может пойти не так, если вы отложите Arduino на пару недель, забудете, какой эскиз (код) загружен на него, а затем вернитесь к работе, подключите аппаратное обеспечение (например, переключатель, светодиод или двигатель). ) и он неожиданно загорится / включится, потому что предыдущий код адресован контакту, к которому он подключен.
Решение 1. Сначала загрузите новый код.
Простой и безопасный способ — загрузить новый код, над которым вы работаете сегодня, перед тем, как подключать какое-либо оборудование. Теперь вы знаете, что делает код, какие выводы он использует, а затем подключаете оборудование (предпочтительно поворачивая Arduino. сначала отключи его)
Затем при повторном подключении питания запускается загруженный эскиз, у вас подключено оборудование, и все должно быть в порядке.
Решение 2. Загрузите эскиз «ничего не делать».
Вы можете загрузить этот короткий набросок:
int main () >
Это «ничего не делает». Все контакты останутся входными данными, так что вы можете безопасно подключить свое оборудование и начать кодировать новый проект.
Безопасность прежде всего
Хорошее правило — не подключать и не отключать аппаратное обеспечение (например, светодиоды, переключатели, двигатели) при включенном питании. Если вы отвлечетесь и подключитесь к неправильной розетке на плате, вы можете немедленно повредить то, что вы подключили, или Arduino, или оба.
Выключив питание, вы можете в последнюю минуту проверить, все ли правильно подключено, правильная полярность и т. Д.
Также убедитесь, что на вашем теле нет статического электричества, особенно если вы носите джемпер или что-то пушистое или сидите на ковре.
Лично я всегда протягиваю руку и прикасаюсь к какой-то металлической части поблизости, чтобы «заземлить» себя, прежде чем дотянуться до Arduino. Примером является металлический корпус ПК, разъем для наушников или что-то в этом роде.
Если после подключения питания к Arduino (например, через USB-кабель) вы не сразу увидите, что загорелся индикатор питания, немедленно отключите питание! Возможно, вы что-то замкнули, и чем меньше времени вы это делаете, тем лучше.
Больше всего меня беспокоит то, что я обычно подключаю Arduino к своему новому проекту и подключаю USB для начальной загрузки нового скетча. Я волнуюсь, понятия не имею, что попытается использовать предыдущая программа, будучи подключенным к совершенно другому оборудованию.
Пока что ничего плохого не произошло, и я не думаю, что буду использовать BLINK каждый раз, когда кладу один из моих Arduinos обратно в мусорное ведро. Это, вероятно, просто вопрос времени.
Если плата Arduino подключена к любому другому устройству, отключите все и просто подключите Arduino к компьютеру с помощью USB-кабеля и попробуйте загрузить новый эскиз, надеюсь, это поможет.
Добро пожаловать в Arduino SE! Есть ли причина, по которой этот ответ лучше, чем другие ответы? Благодарность!
В Arduino IDE перейдите к примерам, выберите Eeprom, выберите eeprom clear и затем загрузите эскиз.
Когда загорится светодиод на контакте 13, все готово.
NB. Это может занять некоторое время в зависимости от размера EEPROM в Arduino.
Так в чем смысл? Запуск чего-то, что не касается ввода-вывода (но очищает EEPROM при каждом включении)?
How do I erase the memory of the Arduino Uno?
I’m just a tinkerer learning Arduino with my son and I was surprised that when I plugged the USB cord back in to the Arduino the program was still running and I thought to myself, «it’s a good thing I didn’t just blow anything up.» So, what’s the normal way people call it a day with these things? Do you usually load up the bare-bones do nothing sketch or just unplug everything?
3,827 3 3 gold badges 24 24 silver badges 61 61 bronze badges
asked Feb 26, 2014 at 18:32
Peter Turner Peter Turner
311 1 1 gold badge 2 2 silver badges 7 7 bronze badges
What do you mean by «when I plugged the USB cord back in to the Arduino the program was still running», what behavior did you observe and what behavior did you expect? Was anything connected to the Arduino?
Feb 26, 2014 at 18:35
@jippie yeah, I had a bunch of LED’s plugged in and they all lit up. For some reason I thought the programs were loaded into memory and would be gone on reboot, but since that doesn’t exist.
Feb 26, 2014 at 18:42
The programs are loaded into flash memory, not RAM, so they are kept even after powerdown.
Feb 26, 2014 at 20:05
6 Answers 6
When booted, the Arduino will run whatever program was put on it last. Solution: Don’t turn it on if you don’t want it to run.
When out of the box, the Arduino usually runs the Blink program. So you can just load that and call it a day if you want to «reset» it.
Or have a loop program with a sleep command.
If you’ve been messing with the USB bootloader via the icsp pins, this isn’t enough though, you’ll need to reinstall the bootloader. But if you’ve been uploading programs via usb or directly using a programmer, there is no issue with uploading Blink or some other dummy program to reset it.
answered Feb 26, 2014 at 18:37
Manishearth Manishearth
537 2 2 silver badges 8 8 bronze badges
is it possible to have it run a self-destructive program with nothing plugged in to the voltage terminals?
Feb 26, 2014 at 20:38
@PeterTurner when there’s no power to it? No. But you can add a program that misuses the pins, and if you leave it on some damage can be called (not much unless the pins are connected)
Feb 26, 2014 at 20:44
If safety is a major concern, then you should almost always load a stop* sketch onto the board before calling it a day. This would be a good idea, for example, when your board is semi-permanently a part of a larger system. You could do so by:
- Upload the Bare Minimum sketch found in File -> Examples -> Basic in the arduino-ide
- Upload a sketch with a large delay in loop.
#include void setup() <> void loop()
- Upload a sketch with a call to exit() from setup() (Thanks @Peter!)
void setup() < exit(0); >void loop() <>
*Stop is simply figurative. The board doesnt really stop running.
answered Mar 2, 2014 at 2:38
3,827 3 3 gold badges 24 24 silver badges 61 61 bronze badges
Could you get a similar (and more permanent) effect by calling exit() from within setup() or loop() ?
Mar 2, 2014 at 15:52
@PeterR.Bloomfield Can’t believe I forgot about that!
Mar 2, 2014 at 15:57
Why bother with either the exit or the delay? Just have void setup () < >void loop () < >— in any case internally the processor is just looping around «doing nothing useful».
Aug 18, 2015 at 21:44
The major thing that can go wrong is if you put your Arduino aside for a couple of weeks, forget what sketch (code) is loaded onto it, then get back to work on it, plug in hardware (like a switch, LED or motor) and have it unexpectedly light up / turn on, because the previous code addressed the pin it was connected to.
Solution 1. Load the new code first.
A simple and safe technique is to load the new code that you are working on today before you plug any hardware in. Now you know what the code does, what pins it uses, and you then plug the hardware in afterwards (preferably turning the Arduino off first by unplugging it).
Then when you reconnect power, it runs the sketch you uploaded, you have your hardware connected and all should be well.
Solution 2. Load a «do nothing» sketch.
You can upload this short sketch:
int main ()
It «does nothing». All pins will remain as inputs, so you can safely then attach your hardware, and then start coding your new project.
Safety first
A good rule is to not plug or unplug hardware (eg. LEDs, switches, motors) with the power applied. If you get distracted and plug into the wrong socket on the board you might immediately damage either what you are connected, or the Arduino, or both.
With the power off, you can then do a last-minute check that everything is connected to the right place, you have your polarities correct, and so on.
Also make sure you don’t have static electricity on your body, particularly if you are wearing a jumper or something fluffy, or are sitting on carpet.
Personally I always reach over and touch some metal part nearby to «ground» myself, before reaching for the Arduino. An example is the metal case of a PC, a headphone socket, or something like that.
If, after connecting power to the Arduino (eg. by the USB cable) you do not immediately see the power LED come on, disconnect the power immediately! You may have shorted something out, and the less time you do that for, the better.
Как очистить память на Arduino Uno
Что происходит, когда в Arduino или другом микроконтроллере заканчивается оперативная память (ОЗУ)? Обычно Arduino сходит с ума и перезагружается в странных местах. Что еще хуже, эти сбросы происходят в странных местах, часто отправляя вас в кроличью нору в поисках ошибок, которых никогда не было.
Что такое память?
Микроконтроллеры имеют несколько видов памяти, но двумя основными являются флэш-память и ОЗУ.
Flash сохраняет вашу программу. Инструкции, которые вы ввели в Arduino IDE, переведены на язык, понятный микро. Флэш-память является энергонезависимой, т. е. сохраняется в течение всего цикла питания. Arduino Uno вмещает около 16 000 инструкций. Достаточно для довольно сложной программы.
Оперативная память, с другой стороны, хранит данные, которые использует ваша программа. Динамические вещи, такие как переменные, структуры, стек и т. д., помещаются в оперативную память. Это энергозависимая память, поэтому при каждом сбросе микроконтроллера ОЗУ очищается и заполняется заново. Arduino Uno имеет 2048 байт оперативной памяти. Это немного, ваш ноутбук может иметь более 4 миллиардов байт оперативной памяти! Так что его довольно легко запустить на Arduino. И вы не можете просто вставить другую карту памяти или вставить карту памяти USB.
3 метода сокращения использования оперативной памяти
Доступная оперативная память обычно значительно меньше флэш-памяти, что делает ее ценным ресурсом для вашего проекта Arduino. Необходимо позаботиться о том, чтобы свести к минимуму его использование, чтобы вы могли максимизировать функциональность своего творения.
Можно использовать всю доступную флэш-память.
Недопустимо использовать всю оперативную память. Вашей программе требуется некоторое рабочее пространство для отслеживания вызовов функций и локальных переменных (это называется стеком). Если вы используете динамическую память, часть оперативной памяти также будет использоваться кучей.
Среда Arduino IDE помогает, оценивая требуемый статический объем оперативной памяти (переменные и т. д.), но не может знать, как стек и куча повлияют на ситуацию. Например, какая переменная появится и исчезнет и когда. Если эти динамические переменные заполнят память и начнут перезаписывать стек, то программа рухнет. Сбои, возникающие из-за повреждения памяти, часто непредсказуемы и их трудно воспроизвести.
Как правило, старайтесь, чтобы использование ОЗУ, сообщаемое Arduino IDE, не превышало 60 % доступного объема ОЗУ.
Удалите неиспользуемые переменные и проверьте свои типы
Иногда, когда вы увлечены программированием, вы пробуете так много вещей, что возникают случайные переменные. Это переменные, которые объявлены, но больше не используются. Если это более крупные объекты, содержащие структуры и массивы, они могут потреблять значительное количество оперативной памяти. Самый простой способ найти мошеннические переменные — это закомментировать их и посмотреть, не жалуется ли компилятор. Если это так, просто снимите комментарий, поскольку вы, очевидно, все еще используете его где-то еще в программе.
Также стоит проверить типы остальных переменных. Подходят ли они для поставленной задачи? Использование правильных типов может сэкономить вам несколько байтов здесь или там. Например, если вы создавали счетчик, который увеличивается до 100, а затем снова сбрасывается до 0, вам явно не нужно целое число без знака, способное считать до 65 535. Байт (или uint8_t) гораздо более подходит, поскольку он использует на 1 байт меньше оперативной памяти и легко покрывает целевой диапазон. В таблице ниже указано количество байтов, потребляемых каждым типом данных на Arduino Uno.
В Arduino доступны три вида памяти: флэш-память, RAM и EEPROM.
Флэш-память используется для хранения программы. Он сохраняется даже при отключении питания Arduino или при перезагрузке.
Все данные и переменные, используемые во время выполнения, хранятся в оперативной памяти. Однако оперативная память — это энергозависимая память, которая стирается при каждой перезагрузке или отключении питания.
Для хранения данных, которые сохраняются при сбросе, Arduino предоставляет EEPROM.
Что такое EEPROM?
EEPROM означает электрически стираемое программируемое постоянное запоминающее устройство. Его можно представить как жесткий диск компьютера. Однако время чтения/записи намного быстрее в случае EEPROM.
Данные в EEPROM можно записывать, перезаписывать или стирать. Но это должен сделать явно пользователь. Вы можете использовать библиотеку EEPROM Arduino для доступа к API, которые сделают эту работу за вас.
EEPROM обычно используются для хранения настроек, которые необходимо вызвать после перезагрузки или включения Arduino. Предположим, Arduino нужно запомнить последнее известное состояние лампы, что она включается и выключается, и восстанавливать это состояние при восстановлении питания. В таком случае последнее известное состояние может быть записано в EEPROM, которое может быть считано после перезагрузки Arduino.
Сколько байт вы можете хранить?
Общий размер EEPROM зависит от модели Arduino, которую вы используете. Arduino Mega имеет самую большую память 4096 байт, за ней следуют Uno, Nano и Mini с 1024 байтами каждая.Некоторые платы Arduino, такие как определенные версии Nano и Mini, имеющие на борту контроллер Atmega168, имеют только EEPROM размером 512 байт. Платы Arduino также позволяют подключать внешние EEPROM для увеличения емкости памяти.
Конечно, срок службы EEPROM ограничен. Следовательно, вы можете стирать и перезаписывать данные только определенное количество раз. Обычно EEPROM в Arduino выдерживает около 100 000 циклов записи/стирания. К счастью, операции чтения EEPROM не влияют на его долговечность.
Как очистить память Arduino
Способ 1
1. USB-кабель должен быть отключен
Прежде чем начать процесс, первым шагом должно быть отсоединение USB-кабеля от Arduino. Это отключит питание, а также освободит контакты RX и TX, которые используются для связи USB-Serial.
2. Подключите контакт RX к земле
Следующим шагом должно быть подключение контакта RX к земле. Хотя вы можете сделать это, подключив перемычку между контактами RX и GND, использование резистора 10 кОм позволит ограничить ток между двумя контактами до безопасного значения.
3. USB-кабель должен быть подключен
После того, как вы отсоединили контакт RX, включите питание Arduino, снова подключив к нему USB-кабель.
4. Загрузить новую программу
Откройте Arduino IDE и загрузите любой базовый скетч в Arduino. Вы можете загрузить скетч «Blink» или скетч «Bare Minimum», чтобы упростить задачу.
5. Отсоедините кабель
Затем снова отключите питание Arduino, отсоединив USB-кабель. Это сделано для того, чтобы безопасно удалить RX pull-down, не вызывая случайных коротких замыканий.
6. Снимите заземление RX
После того, как вы отсоединили USB-кабель, удалите резистор или провод, который вы подключили между контактом RX и контактом заземления.
7. Убедитесь, что Arduino подключен напрямую к компьютеру, а не через концентратор
Если этот метод у вас не работает, то вам следует проверить, как Arduino подключен к USB-порту вашего компьютера. Если он подключен через USB-концентратор, то все может не работать. Лучше всего подключить его напрямую к USB-порту вашего ПК.
Метод 2
Если вам неудобно подключать контакт RX к контакту GND, вы можете использовать метод, описанный ниже.
1. Отсоедините USB-кабель
Этот метод также предполагает сначала отсоединение USB-кабеля. Это связано с тем, что последующие шаги потребуют от вас изменения настроек порта USB, к которому будет подключена ваша Arduino.
2. Выберите Диспетчер устройств
Откройте Диспетчер устройств из окна «Управление» в раскрывающемся меню, которое появляется, когда вы щелкаете правой кнопкой мыши «Этот компьютер».
3. Выберите порты (COM и LPT)
Порт Arduino обычно указан в разделе COM и LPT в списке устройств. Выберите «COM и LPT» из списка.
4. Щелкните правой кнопкой мыши на плате Arduino (COMx)
Среди всех подключенных COM-портов вы должны знать, какой номер COM-порта соответствует Arduino.
5. Затем выберите «Свойства — Настройки порта — Переключить управление потоком на оборудование»
Теперь вам нужно изменить настройки COM-порта, соответствующего вашему Arduino. Для этого выберите «Свойства» в появившемся раскрывающемся меню. Нажмите «Настройки порта», а затем измените «Управление потоком» на «Аппаратное».
6. Создайте пустой скетч (пример ниже)
В этом методе вы также можете использовать скетч «Bare Minimum» для прошивки на Arduino. Загрузите скетч в Arduino IDE.
7. Снова подключите USB-кабель
Снова подключите USB-кабель к Arduino, чтобы снова включить его.
8. Загрузить, нажав Ctrl + U
Загрузите скетч «Базовый минимум». Вы также можете сделать это, нажав Ctrl+U на клавиатуре, не заходя в меню панели инструментов.
Вот пример пустого эскиза, который вы можете использовать
// Процедура цикла повторяется снова и снова:
Заключение
Если вы отложите Arduino на пару недель, вы можете забыть, какой скетч был загружен в него последним. В таком случае, если вы включите его, который подключен к цепи, это может привести к повреждению вашего Arduino или связанной с ним схемы.
Поэтому всегда стирайте и загружайте в него пустой эскиз, прежде чем использовать его в другой схеме.
У Arduino есть три вида памяти: RAM, Flash и EEPROM.
При перезагрузке Arduino содержимое ОЗУ удаляется. Используются переменные и регистры, а также указатель команд.
Флэш-память используется для хранения кода. Всякий раз, когда Arduino сбрасывается или выключается, эта информация не теряется.
Вам следует хранить данные в EEPROM, если вы не хотите, чтобы они были удалены. Вы не можете просто назначить переменную в EEPROM; вы должны сделать это напрямую. Это удобно для хранения данных конфигурации, которые не меняются часто, но которые вы не хотите менять каждый раз при включении или сбросе Arduino.
Создание данных внутри скетча занимает только то время, пока Arduino включен, когда вы идентифицируете и используете переменную. Данные, содержащиеся в Arduino, теряются независимо от того, сбрасывается ли он или выключается.
Что такое EEPROM?
Каждая плата Arduino имеет отдельную память в микроконтроллере. Она называется электрически стираемой программируемой постоянной памятью (также известной как EEPROM).
В этом крошечном пространстве памяти могут храниться байтовые переменные. При сбросе или выключении Arduino переменные, содержащиеся в EEPROM, остаются там. Проще говоря, EEPROM — это форма постоянного хранилища, которая работает аналогично жесткому диску в устройстве.
В электронном виде EEPROM можно интерпретировать, удалять и перезаписывать. Используя библиотеку EEPROM в Arduino, вы можете быстро читать и записывать из EEPROM.
Сколько байтов вы можете хранить?
Количество байтов, которые вы можете хранить в EEPROM, определяется микроконтроллером Arduino:
| Микроконтроллер Arduino | Размер EEPROM |
| ATmega2560 (Arduino Mega) | 4096 байт |
| ATmega328 (есть в Arduino Uno, Nano, Mini) | 1024 байта |
| ATmega168 (Arduino Nano) | 512 байт |
Вы можете получить дополнительную (внешнюю) EEPROM, если вам нужно хранить больше данных.
Срок службы EEPROM ограничен. EEPROM в Arduino настроен на управление 100 000 циклов записи/стирания на место. Чтения, с другой стороны, безграничны. Это гарантирует, что вы сможете считывать данные из EEPROM столько раз, сколько захотите, не ставя под угрозу его долговечность.
EEPROM полезен в проектах Arduino, в которых требуется сохранение данных даже после сброса Arduino или отключения питания.
Это особенно полезно для вызова последнего состояния переменной или количества включений устройства.
Например, вы можете использовать эту функцию в таком сценарии:
- Вы используете Arduino для управления лампой, и лампа включена;
- Ардуино случайно теряет питание;
- При восстановлении питания лампа остается выключенной — она не запоминает свою предыдущую настройку.
- Это то, чего вы не хотите. Вам может понадобиться, чтобы Arduino вспомнил, что произошло до того, как он потерял питание, и вернулся в прежнее состояние;
Чтобы решить эту дилемму, сохраните состояние лампы в EEPROM и укажите в своем эскизе условие, которое проверяет, соответствует ли текущее состояние лампы состоянию, сохраненному в памяти EEPROM.
Как очистить память Arduino/стереть EEPROM с помощью кодирования:
- Вам нужно найти базовую пустую программу установки (иногда ее называют циклом);
- Затем его нужно скомпилировать;
- Сбросьте плату Arduino. Нажмите аппаратную кнопку (обычно расположенную на чипе);
- Затем нужно нажать комбинацию клавиш Ctrl+U. Это загрузит код;
- Если ничего не происходит, повторите предыдущий шаг еще раз;
Перед тем, как загрузчик запустит программу, ожидается задержка; просто подождите. Это может справиться с потенциальными ошибками в коде Arduino при выполнении программного сброса каждые 500 мс.
Как сбросить/очистить память платы Arduino Leonardo?
Вот простой алгоритм действий:
- Кабель USB должен быть отключен;
- Подключите контакт RX к земле;
- Кабель USB должен быть подключен.
- Загрузить новую программу;
- Отсоедините кабель;
- Удалите заземление RX;
Убедитесь, что Arduino подключен напрямую к компьютеру, а не к концентратору.
Еще одно простое решение, которое может сработать:
- Отсоедините USB-кабель;
- Выберите Диспетчер устройств.
- Выберите порты (COM и LPT)
- Нажмите правую кнопку мыши на плате Arduino (COMx);
- Затем выберите «Свойства – Настройки порта – Установить управление потоком на оборудование»;
- Создайте пустой эскиз (пример ниже);
- Снова подключите USB-кабель;
- Загрузить, нажав Ctrl + U;
Вот пример пустого эскиза, который вы можете использовать:
// Пустой скетч
// Процедура цикла повторяется снова и снова:
При включении Arduino запускается последняя установленная на нем программа. Если вы не хотите, чтобы он выключался, не включайте его.
Обычно Arduino запускает программу Blink прямо из упаковки. Если вы хотите «сбросить» его, вы можете просто загрузить его, и все готово.
В качестве альтернативы вы можете использовать циклическую программу с кнопкой перехода в спящий режим.
Однако, если вы возились с загрузчиком USB через контакты, вам придется перезагрузить загрузчик. Если вы загружали программы через USB или напрямую использовали компилятор, загрузка Blink или другой фиктивной программы для сброса не должна вызвать проблем.
Как сбросить или очистить память платы Arduino Uno?
Если вы когда-либо работали с платой Arduino, вы, вероятно, сталкивались с контактом RESET и задавались вопросом, каково его назначение. Так что эта булавка пригодится.
Кроме того, вы могли обнаружить, что при загрузке кода на плату Arduino он сбрасывается.
Еще один способ сбросить настройки Arduino — открыть последовательный терминал в программе Arduino при подключении платы Arduino к устройству. Arduino немедленно сбрасывается при запуске последовательного терминала.
Кнопка — это третий способ сброса настроек Arduino. Arduino перезагрузится, когда вы нажмете и отпустите кнопку.
Чтобы «сбросить» Arduino, выполните следующие действия. Выключите его, зажмите Reset, а затем снова включите, все еще удерживая кнопку. Из-за этого исходный эскиз больше не может работать. После этого вам нужно будет создать новый эскиз.
Видео по теме: Как очистить EEPROM в Arduino
Как удалить любой скетч с любой платы Arduino?
Рассмотрите возможность загрузки эскиза во флэш-память, как если бы вы записывали файл ОС на SD-карту Raspberry Pi. Этот скетч будет загружаться каждый раз, когда вы подключаете питание. Однако с микроконтроллером он загружается почти мгновенно.
Поскольку микросхема Arduino запрограммирована на прошивку с помощью программы, она может оставаться на микросхеме до повторной прошивки, независимо от того, была ли она выключена или включена.
Если вы хотите настроить плату Arduino для работы с новой схемой, подумайте о том, чтобы сначала загрузить программу Blink, потому что это самый простой и быстрый способ «перезагрузиться» в общую начальную точку.
Я загрузил скетч в Arduino Uno, цикл которого выглядит примерно так:
Итак, теперь я больше не могу ничего загружать, потому что в IDE написано «порт уже используется».
Есть ли способ «сбросить» Arduino без другого программатора?
Ничто больше не использует последовательный порт, и все шло нормально, пока я не загрузил предыдущий скетч.
Я нашел несколько интересных вещей:
Открыто ли окно «Последовательный монитор» Ardunio? Если это так, это заблокирует ваше общение с доской.
21 Ответ 21
- Подготовьте базовую пустую программу (пустая установка, цикл и т. д.)
- Скомпилируйте его.
- Сбросьте настройки Arduino с помощью аппаратной кнопки на микросхеме.
- Нажмите Ctrl + U, чтобы загрузить код.
- В случае неудачи — до 3.
Существует задержка перед запуском программ загрузчиком, просто поработайте над временем. Это сработало для меня, когда ошибка в моем коде Arduino выполняла программный сброс каждые 500 мс.
У меня ушло 2 часа, но наконец-то это сработало. Что сработало для меня, так это: (1) Удерживайте нажатой кнопку сброса. (2) Нажмите Ctrl + U, чтобы загрузить мой код. (3) Подождите, пока не появится сообщение о загрузке. (4) Отпустите кнопку сброса , а затем снова быстро нажмите и отпустите ее.
У меня была такая же проблема на двух платах Arduino (одной Uno и одной плате Modern Device Freeduino/USB Host), и окно между перезагрузкой и началом использования последовательного порта было настолько маленьким, что было невозможно загрузить данные.
Я, наконец, решил проблему, купив еще один Arduino Uno и соорудив кабель ISP в соответствии с этими инструкциями, и используя его для прошивки приложения Bare Bones из примеров на каждую недоступную плату, используя Arduino IDE версии 0023, следуя этим инструкциям, чтобы изменить предпочтения.txt. (Обязательно сохраните исходный файл перед его редактированием, чтобы вы могли заменить его после восстановления Arduino.)
Чтобы исправить каждую доску, потребовалась одна быстрая загрузка. Такое быстрое исправление после стольких страданий. Возможно, вам не захочется покупать еще один Arduino, но учтите следующие преимущества:
- Вы можете перезаписать загрузчик на Arduino, чтобы освободить место.
- После перезаписи загрузчика плата будет загружаться быстрее.
- Предполагается, что вы можете запрограммировать необработанные AVR для специальных проектов, но я не пробовал: Google for ArduinoISP
- Это быстро исправит Arduino, которые вы заблокируете в будущем.
- Теперь вы можете безопасно поэкспериментировать, чтобы найти способы предотвратить блокировку устройства при использовании последовательного порта в будущем.
- Отключите USB-кабель.
- Подключите контакт RX к земле.
- Подключите USB-кабель.
- Загрузить новую программу
- Отсоедините USB-кабель.
- Удалите заземление RX.
Спасибо за ваше решение, у меня оно сработало на Mega 2560, но я подключаю контакт RX к GND с помощью резистора 10 кОм, который является более безопасным методом понижения напряжения
Убедитесь, что вы подключаете Arduino напрямую к компьютеру, а не через концентратор. Эта ошибка будет вызвана использованием концентратора.
Это была именно моя проблема. Я использовал USB-концентратор, встроенный в мой монитор. Так что, по крайней мере, иногда это проблема.
Я думаю, это зависит. Иногда это нормально с USB-концентратором. Возможно, предыдущие USB-устройства нужно очистить в диспетчере устройств (если в Windows)? Чтобы отобразить эти старые устройства, необходимо вызвать пункт меню.
После того, как я почесал голову над этой проблемой, вот очень простое решение, которое работает в любое время:
- Отключите USB-кабель.
- Зайдите в Диспетчер устройств
- Нажмите Порты (COM и LPT)
- Щелкните правой кнопкой мыши на Arduino. (COMx)
- Свойства
- Настройки порта
- Перенесите управление потоком на HARDWARE
- Создайте пустой эскиз (Необязательно)
- Подключите USB-кабель.
- Загрузить ( Ctrl + U )
На этот раз я был очень взволнован, возможно, это сработает, но это не сработало. Однако спасибо за другое решение.
Вот что я сделал в Linux, чтобы иметь возможность запрограммировать мой Arduino Micro, который застрял в цикле отправки ключа 0 при подключении через USB;
Ваш вывод может немного отличаться, поэтому просто попробуйте запустить;
затем подключите Arduino и посмотрите, как отформатирован вывод.
Это остановило X от приема нажатий клавиш и позволило Arduino IDE наконец запрограммировать!
Основываясь на своем опыте связи, которая уже используется или заблокирована, я бы сказал, что программа, с которой вы взаимодействуете, все еще имеет связь.
Я также обнаружил, что если вы отсоедините USB-кабель, связь прервется. Это не лучшее решение, но оно решает проблему.
Для пользователей Arduino Yun: попробуйте выполнить загрузку через Ethernet/Wi-Fi (меню Инструменты → Порт).
У меня была точно такая же проблема, и я перепробовал почти все (кроме записи нового загрузчика). Я удивлен, что это сработало, но я без проблем загрузил пустой скетч.
Я потратил последние пять часов на поиск решения этой проблемы (последовательный порт COM3 уже используется, а последовательный порт неактивен). Я перепробовал все возможные форумы и сайты вопросов и ответов, включая этот.
Что, наконец, исправило это (избавился от последнего введенного кода, который зависал, и загрузил простую функцию мерцания)?
Перейдите по этой ссылке — http://arduino.cc/en/guide/windows и следуйте инструкциям по установке драйверов. Мой драйвер был «уже обновлен», но после этих шагов проблема была устранена. Теперь я снова счастлив в кемпинге.
Примечание: сброс платы вручную с помощью кнопки на чипе или в цифровом виде с помощью различных кодов в Интернете не помог решить эту проблему, потому что сигнал был каким-то образом заблокирован/перепутан между моим Arduino Uno и портом в моем ноутбуке. . Обновление драйверов похоже на сброс для проблемы «последовательный порт уже используется».
Читайте также:
- Писатель хочет напечатать 480-страничную рукопись на компьютере, если он наберет 8
- Звуковая карта Supremefx 2, как подключить
- Виды компьютерных игр для дошкольников
- Что такое django rest framework
- Ремонт ноутбука замена ремонт мобильного рф комп
click fraud protection
Очистка памяти Arduino важна, потому что, если вы по ошибке скомпилируете и загрузите старую программу в новую схему, текущая и значения напряжения, установленные для старой схемы, могут превысить ограничение по току и напряжению для новой, что приведет к повреждению вашей новой схема. В этом руководстве мы сосредоточимся на том, как очистить память Arduino, но перед этим давайте разберемся, какие типы памяти есть у Arduino.
Типы памяти в Arduino
Arduino поставляется с тремя видами памяти SRAM, Flash и EEPROM. Один из них является летучим, а два оставшихся — энергонезависимыми. Энергозависимая память стирает данные после отключения питания. С другой стороны, энергонезависимая память сохраняет данные, даже если вы отключили входное питание постоянного тока или перезагрузили Arduino.

Ниже я кратко объяснил три типа памяти и то, что они хранят:
ВСПЫШКА: это тип памяти, в которой хранится наш скетч Arduino. При сбросе Arduino информация сохраняется внутри него.
SRAM: SRAM (статическая оперативная память) создает и хранит все типы переменных и играет с ними после вызова в программе. Когда вы перезагружаете Arduino, все содержимое удаляется.
ЭСППЗУ: (электрически стираемое программируемое постоянное запоминающее устройство) хранит данные, которые должны храниться в течение более длительного периода времени; он сохраняет информацию даже при отключении входного питания. Я бы порекомендовал EEPROM, поскольку он более надежен, когда речь идет об управлении памятью. EEPROM похож на жесткий диск, присутствующий в ПК. EEPROM запоминает последнюю программу, которую вы выполнили с помощью Arduino.
Количество байтов в каждом хранилище памяти зависит от того, какой микроконтроллер вы используете. Ниже я упомянул объем памяти двух микроконтроллеров:
| Тип памяти | ATmega328P | ATmega2560 |
|---|---|---|
| Вспышка | 32К байт | 256К байт |
| SRAM | 2К байт | 8К байт |
| ЭСППЗУ | 1К байт | 4К байт |
Способы очистки памяти Arduino
У нас есть несколько вариантов очистки памяти Arduino:
- Самый простой из них — просто нажать кнопку Перезагрузить Кнопка присутствует на плате Arduino.
- Соединение контактов RX и GND.
- Загружаем минимальный скетч.
Теперь мы подробно обсудим эти три метода:
1: Использование кнопки сброса для очистки памяти
Самый простой способ сбросить настройки Arduino — нажать кнопку Перезагрузить кнопка, выделенная на изображении выше:

Нажатие этой кнопки не удалит уже сохраненный эскиз, а только очистит изменчивый памяти, например ОЗУ. Сохраненная программа перезапустится, и данные, такие как переменные, указатели команд и регистры, хранящиеся в ОЗУ, будут очищены.
Выполните следующие действия, чтобы очистить память Arduino (RAM) с помощью кнопки сброса:
Шаг 1: Отключите питание Arduino.
Шаг 2: Теперь нажмите и удерживайте кнопку сброса, пока делаете это, включите Arduino, подключив его к источнику питания.
2: Очистка памяти Arduino с помощью контактов RX и GND
Второй способ очистки памяти Arduino — использование контактов RX и GND. Выполните следующие шаги:
Шаг 1: Отсоедините последовательный кабель USB, это выключит Arduino. На плате Arduino последовательная связь осуществляется с помощью двух контактов RX и TX, удаление USB-кабеля освободит эти два контакта.
Шаг 2: Теперь соедините контакты Rx и GND, между ними используйте резистор (20 кОм) для поддержания безопасного ограничения тока.

Шаг 3: Удалите контакт RX, включите Arduino с помощью USB-кабеля, но перед этим сначала отключите контакт RX.

Шаг 4: Откройте IDE Arduino и загрузите любой простой скетч или скетч «Bare Minimum» из библиотеки Arduino.
Шаг 5: Опять же, отсоедините USB-кабель, ваш Arduino снова будет выключен, делая это, мы можем обеспечить ограничения тока между двумя терминальными портами RX и GND.
Шаг 6: поскольку мы удалили кабель USB, теперь отсоединяются клеммы RX и GND.
Шаг 7: Наконец, напрямую подключите плату Arduino к ПК через COM-порт.
3. Очистка памяти Arduino путем загрузки пустого скетча
Предположим, вы не предпочитаете использовать провод для очистки памяти Arduino, поэтому другой способ сделать это — загрузить пустой эскиз, также известный как «минимальный эскиз», чтобы очистить память Arduino.
Прежде чем загружать скетч «Газовый минимум», сначала выполните следующие шаги:
Шаг 1: Отсоедините USB-кабель, чтобы отключить Arduino от источника питания.
Шаг 2: нажмите клавишу Windows на клавиатуре и введите Диспетчер устройств затем нажмите открыть.
Шаг 3: откроется новое окно, теперь прокрутите вниз до СОМ и LPT раздел.
Шаг 4: найти и выбрать COM-порт к которому подключена Ардуино.
Шаг 5: щелкните правой кнопкой мыши и нажмите Характеристики из выпадающего меню, затем выберите «Настройка порта» и переключите «Управление потоком» на Аппаратное обеспечение.
Теперь, когда вы настроили свое оборудование, пришло время загрузить скетч «Bare Minimum» на плату Arduino. Ниже я показал пустой скетч, который заменяет предыдущий загруженный вами скетч и говорит Arduino ничего не настраивать и ничего не зацикливать.
// Минимальный эскиз
недействительная установка ( )
<
>
пустая петля ( )
<
задерживать ( 500 ) ;
>

Заключение
Предположим, вы какое-то время не использовали Arduino и теперь хотите подключить ее к новой схеме и не помните, какую последнюю программу вы в нее загрузили, поэтому предыдущий скетч может повредить вашу новую схему, лучше всегда загружать «пустой эскиз» или использовать программу мигания светодиодов, которая поставляется с Arduino, и она может спасти вашу схему от любого вида повреждать.
