Arduino Uno의 메모리를 지우려면 어떻게해야합니까?


15

나는 아들과 함께 Arduino를 배우는 어리석은 사람이며 USB 코드를 Arduino에 다시 꽂았을 때 프로그램이 여전히 실행 중이고 나 자신에게 생각했습니다. 쪽으로."

그래서 사람들이 이런 것들로 하루를 부르는 일반적인 방법은 무엇입니까? 당신은 보통 베어 본을로드합니까 스케치를하지 않거나 모든 것을 분리합니까?


4
"아두 이노에 USB 코드를 다시 꽂아도 프로그램이 여전히 실행 중입니다"라는 말의 의미는 무엇입니까? Arduino에 연결된 것이 있습니까?
jippie

@ jippie 예, 많은 LED가 연결되어 있고 모두 켜져 있습니다. 어떤 이유로 나는 프로그램이 메모리에로드되어 재부팅되면 사라질 것이라고 생각했지만 존재하지 않기 때문에 ....
Peter Turner

7
프로그램은 RAM이 아닌 플래시 메모리에로드되므로 전원을 끈 후에도 유지됩니다.
Ricardo

답변:


15

부팅되면 Arduino는 마지막에 넣은 모든 프로그램을 실행합니다. 원 원인 인 및 해해 결결 방 방법 법 : 실행하지 않으려면 전원을 켜지 마십시오.

기본적으로 Arduino는 일반적으로 Blink 프로그램을 실행합니다. 따라서 "재설정"하려면로드하고 하루 만 호출하면됩니다.

또는 sleep 명령으로 루프 프로그램을 작성하십시오.

icsp 핀을 통해 USB 부트 로더를 망쳤 으면 충분하지 않으므로 부트 로더를 다시 설치해야합니다. 그러나 USB를 통해 프로그램을 업로드하거나 프로그래머를 직접 사용하는 경우 Blink 또는 다른 더미 프로그램을 업로드하여 재설정하는 데 아무런 문제가 없습니다.


전압 단자에 아무것도 연결하지 않고 자체 파괴적인 프로그램을 실행할 수 있습니까?
피터 터너

전원이 없을 때 @PeterTurner? 그러나 핀을 잘못 사용하는 프로그램을 추가 할 수 있으며, 핀을 연결하지 않으면 약간의 손상을 입을 수 있습니다 (핀이 연결되어 있지 않은 한 많지 않음)
Manishearth

9

안전이 주요 관심사 인 경우 하루에 전화하기 전에 거의 항상 정지 * 스케치를 보드에로드해야합니다. 예를 들어, 보드가 반영구적으로 더 큰 시스템의 일부인 경우에 좋습니다. 당신은 그렇게 할 수 있습니다 :

  • File-> Examples-> Basic에 있는 Bare Minimum 스케치를 업로드하십시오.
  • 루프 지연이 큰 스케치를 업로드하십시오.
#include <limits.h>

void setup()
{}

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

void loop()
{}

* 중지는 단순히 비 유적입니다. 보드는 실제로 멈추지 않습니다.


2
exit()within setup()또는 loop()? 에서 전화하여 유사하고보다 영구적 인 효과를 얻을 수 있습니까?
피터 블룸필드

@ PeterR.Bloomfield 잊어 버렸습니다.
asheeshr

출구 또는 지연으로 귀찮게하는 이유는 무엇입니까? 아무튼 void setup () { } void loop () { }내부적으로 프로세서가 "유용하지 않은 일"을 반복하고 있습니다.
Nick Gammon

1

잘못 될 수있는 가장 중요한 것은 Arduino를 몇 주 동안 제쳐두고 스케치 (코드) 가로 드 된 것을 잊어 버린 다음 다시 작동하게하고 하드웨어를 연결하십시오 (스위치, LED 또는 모터) ) 이전 코드가 연결된 핀을 해결했기 때문에 예상치 않게 켜거나 켤 수 있습니다.


해결 방법 1. 새 코드를 먼저로드하십시오.

간단하고 안전한 기술은 하드웨어를 연결 하기 전에 현재 작업중인 새 코드를로드하는 것 입니다. 이제 코드의 기능, 사용하는 핀 및 이후에 하드웨어를 연결합니다 (바람직하게는 Arduino 켜기) 먼저 전원 코드를 뽑아서 빼십시오.

그런 다음 전원을 다시 연결하면 업로드 한 스케치가 실행되고 하드웨어가 연결되며 모든 것이 정상입니다.


해결 방법 2. "아무것도하지 않는"스케치를로드하십시오.

이 짧은 스케치를 업로드 할 수 있습니다.

int main () { }

"아무것도하지 않습니다". 모든 핀은 입력으로 유지되므로 안전하게 하드웨어를 연결 한 다음 새 프로젝트를 코딩 할 수 있습니다.


안전 제일

전원이 공급 된 하드웨어 (예 : LED, 스위치, 모터)를 꽂거나 뽑지 않는 것이 좋습니다. 주의가 산만 해 보드의 잘못된 소켓에 꽂으면 연결되어 있거나 Arduino 또는 둘 다에 즉시 손상을 줄 수 있습니다.

전원을 끄면 모든 것이 올바른 위치에 연결되어 있고 극성이 올바른지 등을 즉시 확인할 수 있습니다.

또한 점퍼 나 푹신한 옷을 입거나 카펫에 앉아있는 경우 신체에 정전기가 없는지 확인하십시오.

개인적으로 나는 Arduino에 도착하기 전에 항상 "접지"할 수있는 근처의 금속 부분에 손을 대고 접촉합니다. 예를 들어 PC의 금속 케이스, 헤드폰 소켓 등이 있습니다.

Arduino에 전원을 연결 한 후 (예 : USB 케이블 등) 전원 LED가 즉시 켜지지 않으면 전원을 즉시 분리하십시오! 당신은 무언가를 부족하게 할 수 있으며, 그렇게하는 시간이 적을수록 좋습니다.


1

이것이 일어날 때 가장 큰 관심사는 보통 새 프로젝트를 위해 Arduino를 연결하고 새 스케치의 초기 다운로드를 위해 USB를 연결하는 것입니다. 이전 프로그램이 무엇을 시도할지 전혀 모르고 완전히 다른 하드웨어에 연결되어 있다고 걱정합니다.

지금까지 아무런 나쁜 일도 없었으며 Arduinos 중 하나를 다시 휴지통에 넣을 때마다 BLINK 굽기를 채택하지 않을 것이라고 생각합니다. 아마 시간 문제 일 것입니다.


0

Arduino 보드가 다른 장치에 연결된 경우 모든 것을 분리하고 USB 케이블을 사용하여 arduino를 컴퓨터와 연결하고 새로운 스케치를 업로드하려고하면 도움이되기를 바랍니다.


Arduino SE에 오신 것을 환영합니다! 이 답변이 다른 답변보다 나은 이유가 있습니까? 감사!
익명 펭귄

0

Arduino IDE에서 예제로 이동하여 Eeprom을 선택하고 eeprom clear를 선택한 다음 스케치를 업로드하십시오.

핀 13의 LED가 켜지면 완료된 것입니다.

NB. Arduino의 EEPROM 크기에 따라 다소 시간이 걸릴 수 있습니다.


그래서 요점이 뭐야? I / O에 닿지 않는 것을 실행하지만 전원을 켤 때마다 EEPROM이 지워 집니까?
피터 Mortensen

실제로 이것을 시도 했습니까? 핀 (13)이 출력으로 설정해야 표시되지 않습니다 (아두 이노 IDE 1.6.5)
피터 모텐슨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.