Много пъти, когато работите с плоча Arduino Uno, е необходимо да го рестартирате без физическа намеса, било защото устройството е на труднодостъпно място, или защото искаме да автоматизираме процеса в рамките на кода. За щастие има няколко метода за извършване на a нулиране Arduino Uno чрез софтуер, всеки със своите специфични предимства и приложения.
В тази статия ще видим различни начини за рестартиране на a Arduino Uno чрез код, от използването на функционални указатели до използването на цифрови щифтове за генериране на външно нулиране. Ще проучим и функционирането на Автоматично нулиране при свързване през сериен порт и как да го избегнем, ако причинява проблеми в нашите проекти.
Повторно изследване Arduino Uno използване на функционални указатели
Един от най-използваните методи за рестартиране на a Arduino Uno от кода е използването на a функционален указател. Идеята е да присвоите адрес на паметта 0 на указател на функция и да го извикате, така че процесорът да извърши нулиране на системата. Можете да научите повече за свързани проекти на ръководство на Arduino Uno.
Основният код за този метод е както следва:
String letra = "";
int x = 2;
void(* resetSoftware)(void) = 0;
void setup(){
Serial.begin(9600);
Serial.println("Iniciando.");
}
void loop() {
if (Serial.available() > 0) {
letra = Serial.readString();
Serial.println(letra);
if(letra.indexOf("v") > -1){
x = x + 5;
Serial.println(x);
Serial.println("Reseteado.");
delay(500);
resetSoftware();
}
}
}
В този случай, когато буквата "v" се изпрати на серийния монитор, платката добавя 5 към променливата x, отпечатва новата стойност и след това изпълнява нулирането чрез извикване resetSoftware(). Това връща микроконтролера в първоначалното му състояние, сякаш бутонът за нулиране е бил натиснат. За други методи за програмиране можете да се обърнете към Ръководство за използване на millis в Arduino.
Нулиране на Arduino Uno с помощта на цифров ПИН
Друг начин за извършване на меко нулиране е свързване на цифров щифт към щифта за нулиране на чинията. Това се постига чрез проста жица между изходен щифт (като 10) и щифта RESET на Arduino. Този метод е полезен, ако търсите бързо решение, без да променяте буутлоудъра.
Кодът за този метод е както следва:
String letra = "";
int x = 2;
void setup(){
digitalWrite(10, HIGH);
Serial.begin(9600);
Serial.println("Iniciando.");
pinMode(10, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
letra = Serial.readString();
Serial.println(letra);
if(letra.indexOf("v") > -1){
x = x + 5;
Serial.println(x);
Serial.println("Reseteado.");
delay(500);
digitalWrite(10, LOW);
}
}
}
В този случай изпращането на буквата "v" през серийния монитор понижава логическото състояние на пин 10, което причинява нулиране на платката. Това е практична алтернатива, когато трябва да рестартирате системата от софтуер, без да променяте кода на буутлоудъра. Ако имате нужда от повече информация за свързаността на Arduino, препоръчваме да прочетете за ArduinoNano.
Автоматично нулиране на Arduino при свързване през сериен порт
Плочи Arduino Uno Те имат автоматичен механизъм за нулиране, когато се установи връзка през серийния порт. Това се случва, защото линията DTR на чипа ATmega8U2 е свързана чрез кондензатор от 100 nF към линията за нулиране на процесора ATmega328. Когато DTR се активира, на линията за нулиране се генерира импулс, който кара Arduino да се рестартира. Това е полезна функция в много проекти, като например тези, включващи OLED дисплеи, които можете да разгледате в Ръководство за 0.96″ OLED дисплеи.
Този механизъм позволява на зареждащ механизъм имат по-кратко време за изчакване и улесняват зареждането на нови програми, без да се налага ръчно да натискате бутона за нулиране. В някои случаи обаче това може да е недостатък, ако кодът зависи от постоянна серийна връзка.
Как да избегнете автоматично нулиране при използване на USB
Ако автоматичното нулиране при свързване на Arduino към компютър причинява проблеми с работата на проекта, има просто решение да го деактивирате. Плочата включва a малка писта, която може да се реже за да избегнете това поведение. Тази модификация може лесно да се направи, ако познавате основите на електрониката, както е обяснено в Ръководство за драйвери на стъпкови двигатели.
За да направите това, просто намерете следата в долната част на платката близо до USB конектора и я изрежете с нож или скалпел. Ако функцията за автоматично рестартиране трябва да бъде възстановена в бъдеще, тя може да бъде активирана отново чрез запояване на малък джъмпер между двете точки на пистата.
Знанието как да деактивирате автоматичното нулиране осигурява по-голям контрол върху това как Arduino се държи при получаване на данни от компютъра. Овладейте тези методи за нулиране на a Arduino Uno Той осигурява по-голяма гъвкавост при разработването на електронни проекти, позволявайки автоматизация, отстраняване на грешки и подобряване на поведението на вградените системи без необходимост от ръчна намеса.