Arduino UNO ADC read

Arduino UNO ADC read

След като се запознахме с основите на “Arduino IDE” и написахме нашата първа програма “blink.ino”, е време да направим следващата стъпка и да научим как да четем аналогови стойности с помощта на Arduino UNO. Тази функция е важна за различни проекти, като измерване на температура, светлина, напрежение и други аналогови сигнали. В тази статия ще разгледаме как да използваме вградения аналогово-цифров преобразувател (ADC) на Arduino UNO. Преди всичко трябва да направим примерна схема и да свържем компонентите.

Схема на свързване на компонентите:

Arduino UNO ADC read scheme

В тази схема очастват само два компонента:

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

В следващата статия ще разгледаме функцията “analogWrite()”. Тази функция ни позволява да генерираме широчинно импулсна модулация (ШИМ / PWM) от даден пин на Arduino. Линк към статията: Arduino PWM output