+1 голос
Мне нужно при определенном условии сбрасывать плату, чтобы скетч начался заново. Как  это реализовать? Может есть какая-нибудь функция, которая это делает?
(905 баллов) 3 35 80

2 Ответы

+1 голос
 
Лучший ответ

Пример:
Прошейте плату Uno следующим скетчем:

// макрос который будет производить перезагрузку платы Ардуино
#define Reset() asm("JMP 0")

void setup() {
// встроеный в плату светодиод мигает три раза
// показывая что плата загружается
pinMode(13,OUTPUT);
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);

// пин к которому подключена кнопка
// которая будет производить сброс платы Ардуино
pinMode(2,INPUT_PULLUP);

}

void loop() {
// при нажатии на кнопку (PIN2 соеденить GND)
// вызывается макрос который перезагрузит плату Ардуино  
if (!digitalRead(2)==HIGH) Reset();
delay(1);
}

При подаче питания встроенный светодиод вспыхнет три раза - показывая что плата загружается.
Подключите кнопку к PIN2 которая будет соединять его c GND. (или просто кратковременно соедините PIN2 с GND перемычкой). Это вызовет перезагрузку платы, встроенный светодиод снова мигнет 3 раза - т.е. выполняется блок setup{}

(1.2 тыс. баллов) 2 10 38
выбран
переход на нулевой адрес это переход на нулевой адрес, а не сброс.
Вопрос звучал "....чтобы скетч начался заново" - про Аппаратный сброс речи не было.
+1 голос
Есть два варианта:

1. С помощью вачдога. Но будет минимальная выдержка времени в 8 мс.

2. Завести пин RESET на одну из ног GPIO и эту ногу программно прижать к земле.
(1.5 тыс. баллов) 2 11 35
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. parovoZZ

    8 балл(ов)

  2. dmipec

    2 балл(ов)

  3. wickiup

    2 балл(ов)

  4. Un_ka

    2 балл(ов)

  5. antonlewz

    1 балл(ов)

  6. Алексей1307

    1 балл(ов)

Награды месяца
1-е место: Arduino MKR GSM 1400
2-е место: Arduino MKR Wi-Fi 1010
3-е место: Arduino MKR Zero

...