+2 голосов
Мне нужно при определенном условии сбрасывать плату, чтобы скетч начался заново. Как  это реализовать? Может есть какая-нибудь функция, которая это делает?
(917 баллов) 5 64 103

2 Ответы

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

Пример:
Прошейте плату 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 тыс. баллов) 4 23 50
выбран
переход на нулевой адрес это переход на нулевой адрес, а не сброс.
Вопрос звучал "....чтобы скетч начался заново" - про Аппаратный сброс речи не было.
+2 голосов
Есть два варианта:

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

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

    75 балл(ов)

  2. Un_ka

    54 балл(ов)

  3. parovoZZ

    12 балл(ов)

  4. sser

    10 балл(ов)

  5. Тёмик

    5 балл(ов)

  6. NesteruS

    5 балл(ов)

Награды месяца
1-е место: OLED-дисплей (Troyka-модуль)
2-е место: Графический экран 128×64
3-е место: Текстовый дисплей 16×2 (Troyka-модуль)

...