В този урок въвеждаме концепцията за ADC (аналогово към цифрово преобразуване) в ARDUINO UNO. Платката Arduino има шест ADC канала, както е показано на фигурата по-долу. Сред тях всеки един или всички от тях може да се използва като входове за аналогово напрежение. В Arduino Uno ADC е 10-битова разделителна способност (така стойности число от (0- (2 ^ 10) 1023)). Това означава, че ще преобразува входните напрежения между 0 и 5 волта в целочислени стойности между 0 и 1023. Така че за всеки (5/1024 = 4.9mV) на единица.
Във всичко това ще свържем потенциометър или пот към канала „A0“ и ще покажем резултата от ADC на прост дисплей. Простите дисплеи са 16x1 и 16x2 дисплейни единици. Дисплеят 16x1 ще има 16 символа и е в един ред. 16x2 ще има 32 символа общо 16 в 1- ви ред и още 16 във 2- ри ред. Тук трябва да се разбере, че във всеки знак има 5x10 = 50 пиксела, така че за показване на един символ всички 50 пиксела трябва да работят заедно, но не е нужно да се притесняваме за това, защото в дисплейния блок има друг контролер (HD44780), който прави работа за управление на пикселите (можете да го видите в LCD устройство, това е черното око отзад).
Необходими компоненти
Хардуер: ARDUINO UNO, захранване (5v), JHD_162ALCD (16x2LCD), 100uF кондензатор, 100KΩ пот или потенциометър, 100nF кондензатор.
Софтуер: arduino IDE (Arduino всяка вечер)
Електрическа схема и обяснение
В 16x2 LCD има 16 щифта, ако има задно осветление, ако няма задно осветление, ще има 14 извода. Човек може да захранва или да оставя щифтовете на задното осветление. Сега в 14-те извода има 8 извода за данни (7-14 или D0-D7), 2 извода за захранване (1 & 2 или VSS & VDD или GND & + 5v), 3 -ти извод за контрол на контраста (VEE - контролира колко дебели трябва да бъдат символите показани) и 3 контролни щифта (RS & RW & E).
Във веригата можете да забележите, че съм взел само два контролни щифта, контрастният бит и READ / WRITE не се използват често, така че могат да бъдат късо заземени. Това поставя LCD в най-висок контраст и режим на четене. Просто трябва да контролираме ENABLE и RS щифтовете, за да изпращаме символи и данни по съответния начин.
Връзките, които се правят за LCD са дадени по-долу:
PIN1 или VSS към земята
PIN2 или VDD или VCC до + 5v мощност
PIN3 или VEE към земята (дава максимален контраст най-добър за начинаещи)
PIN4 или RS (Регистрация за избор) до PIN8 на ARDUINO UNO
PIN5 или RW (четене / запис) към земята (поставя LCD в режим на четене, улеснява комуникацията за потребителя)
PIN6 или E (Активиране) до PIN9 на ARDUINO UNO
ПИН11 или Д4 до ПИН10 на ARDUINO UNO
PIN12 или D5 до PIN11 на ARDUINO UNO
PIN13 или D6 до PIN12 на ARDUINO UNO
PIN14 или D7 до PIN13 на ARDUINO UNO
ARDUINO IDE позволява на потребителя да използва LCD в 4-битов режим. Този тип комуникация позволява на потребителя да намали използването на пина на ARDUINO, за разлика от други ARDUINO не е необходимо да се програмира отделно за използването му в 4 it режим, тъй като по подразбиране ARDUINO е настроен да комуникира в 4 битов режим. Във веригата можете да видите, че използвахме 4-битова комуникация (D4-D7).
Така че само от наблюдение от горната таблица ние свързваме 6 щифта LCD към контролер, в който 4 щифта са щифтове за данни и 2 щифта за управление.
Горната фигура показва диаграмата на ADC на ARDUINO UNO.
Работещи
За да свържем LCD с ARDUINO UNO, трябва да знаем няколко неща.
|
На първо място UNO ADC каналите имат референтна стойност по подразбиране 5V. Това означава, че можем да дадем максимално входно напрежение от 5V за ADC преобразуване на всеки входен канал. Тъй като някои сензори осигуряват напрежение от 0-2,5V, с 5V референция получаваме по-малка точност, така че имаме инструкция, която ни позволява да променим тази референтна стойност. Така че за промяна на референтната стойност имаме (“analogReference ();”)
По подразбиране получаваме максималната разделителна способност на ADC на борда, която е 10 бита, тази разделителна способност може да бъде променена с помощта на инструкция („analogReadResolution (битове);“). Тази промяна на резолюцията може да бъде полезна за някои случаи.
Сега, ако горните условия са зададени по подразбиране, можем да прочетем стойност от ADC на канал '0', като директно извикаме функцията “analogRead (pin);”, тук “pin” представлява щифт, където сме свързали аналогов сигнал, в този случай би бъде “A0”. Стойността от ADC може да бъде взета в цяло число като „int ADCVALUE = analogRead (A0); ”, Чрез тази инструкция стойността след ADC се съхранява в цялото число„ ADCVALUE ”.
СЕГА нека поговорим малко за 16x2 LCD. Първо трябва да активираме заглавния файл ('#include
Второ, трябва да кажем на дъската какъв тип LCD използваме тук. Тъй като имаме толкова много различни видове LCD (като 20x4, 16x2, 16x1 и т.н.). Тук ще свържем 16x2 LCD към UNO, така че ще получим 'lcd.begin (16, 2);'. За 16x1 получаваме 'lcd.begin (16, 1);'.
В тази инструкция ще кажем на платката, където сме свързали щифтовете. Пиновете, които са свързани, трябва да бъдат представени по ред като „RS, En, D4, D5, D6, D7“. Тези щифтове трябва да бъдат представени правилно. Тъй като свързваме RS към PIN0 и така нататък, както е показано в електрическата схема, ние представяме номера на щифта към борда като „LiquidCrystal lcd (0, 1, 8, 9, 10, 11);“.
След като горе остава само да се изпратят данни, данните, които трябва да се покажат на LCD, трябва да бъдат написани като „cd.print („ здравей, свят! “);“. С тази команда LCD дисплеят показва „здравей, свят!“.
Както можете да видите, няма нужда да се притесняваме за нищо друго, просто трябва да инициализираме и ООН ще бъде готова да покаже данни. Не е нужно да пишем програмен цикъл, за да изпращаме данните байт по байт тук.
Използването на ADC на Arduino Uno е обяснено стъпка по стъпка в програмата C, дадена по-долу.