![Arduino UNO ADC read](http://ardudevelop.eu/wp-content/uploads/2024/07/Arduino-UNO-ADC-read.jpg)
След като се запознахме с основите на “Arduino IDE” и написахме нашата първа програма “blink.ino”, е време да направим следващата стъпка и да научим как да четем аналогови стойности с помощта на Arduino UNO. Тази функция е важна за различни проекти, като измерване на температура, светлина, напрежение и други аналогови сигнали. В тази статия ще разгледаме как да използваме вградения аналогово-цифров преобразувател (ADC) на Arduino UNO. Преди всичко трябва да направим примерна схема и да свържем компонентите.
Схема на свързване на компонентите:
![Arduino UNO ADC read scheme](http://ardudevelop.eu/wp-content/uploads/2024/07/Arduino-UNO-ADC-read-scheme.jpg)
В тази схема очастват само два компонента:
1: Arduino UNO
2: Потенциометър 10к (килоома)
В тази схема сме свързали сме единия край на потенциометъра към +5v а другия край към GND. Плъзгача или ( средния край ) на потенциометъра сме свързали към аналоговия пин на Arduino UNO “А0”.
Примерна програма за четене на аналогови стойности
Програмата, която ще напишем, ще чете стойностите от аналоговия пин A0 и ще ги изписва в серийния монитор.
int analogPin = A0;
int value = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
value = analogRead(analogPin);
Serial.println(value);
delay(1000);
}
Обяснение на кода ред по ред
Ред първи – (int analogPin = A0;)
Тук инициализираме променливата analogPin
, която ще бъде свързана с аналоговия пин A0 на контролера. Това ще ни позволи да четем аналогови сигнали от този пин.
Ред втори – (int value = 0;)
Създаваме променлива value
, която ще съхранява стойността, прочетена от аналоговия пин.
Ред четвърти – (void setup() {)
void setup()
представлява функция, която се стартира след започването на програмата. В нея инициализираме серийната комуникация със скорост 9600 bps. Това е необходимо, за да можем да изписваме стойностите в серийния монитор.
Ред шести – (Serial.begin(9600);)
Стартиране на серийна комуникация със скорост 9600bps в секунда. Това позволява на Arduino да изпраща данни към компютъра.
Ред девети – (void loop() {)
Следващата стъпка в програмата е void loop()
. Това е функция, която се изпълнява непрекъснато. В нея ще четем аналоговата стойност и ще я изписваме в серийния монитор.
Ред единадесети – (value = analogRead(analogPin);)
analogRead(analogPin)
е функция, която чете стойността от аналоговия пин и я съхранява в променливата value
. Тази стойност може да бъде между 0 и 1023, което съответства на входното напрежение между 0V и 5V.
Ред дванадесети – (Serial.println(value);)
С помощта на Serial.println(value)
, стойността, прочетена от аналоговия пин, се изписва в серийния монитор. Това ни позволява да видим стойностите в реално време.
Ред тринадесети – (delay(1000);)
delay(1000)
е функция, която забавя изпълнението на програмата с 1000 милисекунди (една секунда). Това осигурява интервал между всяко четене и изписване на стойностите.
Останалата част от програмата
С това завършва и нашата програма за четене на аналогови стойности с Arduino. Тя е проста, но много полезна за разбиране на основите на аналогово-цифровото преобразуване. Тази програма може да бъде основа за по-сложни проекти, включващи сензори и други аналогови устройства. На този клип ще видите подробно обяснение.
На картинката отдолу е показан реалният резултат от програмата при завъртане на потенциометъра:
![Arduino UNO ADC read](http://ardudevelop.eu/wp-content/uploads/2024/07/Arduino-UNO-ADC-read--1024x398.jpg)
В следващата статия ще разгледаме функцията “analogWrite()”. Тази функция ни позволява да генерираме широчинно импулсна модулация (ШИМ / PWM) от даден пин на Arduino. Линк към статията: Arduino PWM output