Два способи перезавантажити arduino на програмному рівні

Для того, щоб перезавантажити ваш Arduino не натискаючи кнопку Reset, існує два варіанти. Нижче розглянуті обидва. Для їх реалізації буде потрібно мінімум додаткової електричної обв'язки.

Використовуємо провід, підключений до 12 контакту

В цьому випадку світлодіод на 13 піне Arduino (можна використовувати і вбудований світлодіод), блимає. 12 пін підключається до контакту Reset за допомогою одного провідника.

Два способи перезавантажити arduino на програмному рівні

Без додаткових хитрувань на програмному рівні не обійтися, так як на початку роботи нашого скетчу, все Піни на Arduino приймають значення LOW. В результаті ми відключимо наш контролер. Але! Трюк полягає в тому, що перше, що відбувається в межах функції setup (): ми подаємо HIGH на контакт 12, який викликає наш пін reset (digitalWrite (resetPin, HIGH), і таким чином забезпечує сигнал HIGH на контакті Arduino RESET.

int led = 13; // пін 13 буде працювати в якості Піна OUTPUT

int resetPin = 12;

// функція setup отработате один раз, після того як ви натиснете reset:

// инициализируем цифровий пін як вихід

Serial.begin (9600); // инициализируем підключення по серійному порту

Serial.println ( "reset"); // відображаємо рядок reset, щоб знати, що була проведена перезавантаження і

// знову відпрацьовує функція setup

// цикл loop відпрацьовує знову і знову:

digitalWrite (led, HIGH); // запалюємо світлодіод (HIGH - це подача напруга)

delay (1000); // чекаємо одну секунду

digitalWrite (led, LOW); // відключаємо світлодіод, подавши команду LOW

delay (1000); // чекаємо одну секунду

Serial.println ( "this never happens");

// цього ніколи не станеться, так як Arduino перезавантажується

Використовуємо виключно програмну перезавантаження

Два способи перезавантажити arduino на програмному рівні

У прикладі, який наведений нижче, вам не знадобиться ніякого додаткового підключення. Ми просто инициализируем функцію reset і після викликаємо reset.

resetFunc (); // викликаємо reset

Вся програма для перезавантаження Arduino:

// функція setup відпрацьовує один раз після натискання reset:

// инициализируем цифровий пін як вихід.

Serial.begin (9600); // инициализируем серійний порт

void (* resetFunc) (void) = 0; // оголошуємо функцію reset

// цей цикл відпрацьовується знову і знову:

digitalWrite (led, HIGH); // включаємо світлодіод

delay (1000); // чекаємо секунду

digitalWrite (led, LOW); // відключаємо світлодіод, подаючи команду LOW

delay (1000); // чекаємо одну секунду

resetFunc (); // викликаємо reset

Для чого можна використовувати програмну перезавантаження Arduino?

Перезавантаження Arduino на програмному рівні можна використовувати при роботі з nRF24L01 + 2.4 Гц трансівером (з використанням бібліотеки RF24 library). Цей скетч відмінно підходить в тих випадках, коли трансивер втрачає зв'язок і перестає працювати. Забезпечити перезавантаження модулів радіопередавачів 2.4G Гц досить складно, а ось перезавантажити ваш Arduino Uno або Arduino Pro Mini не складе проблем. Ваша програма повинна відпрацювати приблизно наступне: "Якщо протягом 100 мс не було отримано пакета даних, Arduino повинен перезавантажитися". В результаті модулі радіопередавачів автоматично перепідключатися і зв'язок налагоджується!

ARDUINO-DIY.COM - це інформаційний ресурс з кращими інструкціями і туторіали по використанню контролерів Arduino.

Завжди раді конструктивної співпраці. З усіма питаннями, побажаннями і пропозиціями звертайтеся на пошту [email protected].

Copyright © 2024