Кодты іздеу

Lesson 98-9: Arduino көмегімен жарықдиодты кернеу деңгейінің өлшегіші немесе потенциометрмен жүретін жарық

Lesson 98-9: Arduino көмегімен жарықдиодты кернеу деңгейінің өлшегіші немесе потенциометрмен жүретін жарық

Бұл жоба бес жарықдиодты бағаналық график дисплейі ретінде пайдаланатын кернеу деңгейінің өлшегішін қалай құруға болатынын көрсетеді, ол толығымен Arduino және бір потенциометр арқылы басқарылады. Тұтқаны бұраған кезде Arduino аналогтық істіктегі өзгеретін кернеуді оқиды және әр вольт үшін бір жарықдиодты жағады, сондықтан жарықтар қатары тұтқамен бірге жоғары және төмен «жүреді». Бұл аналогтық кірісті түсінудің ең айқын жолдарының бірі, өйткені сіз аналогтық-цифрлық түрлендірудің физикалық жарық жолағы ретінде нақты уақытта орындалып жатқанын көре аласыз.

5 leds on breadboard with sliding veriable resistor shown connected to Arduino UNO
5 leds on breadboard with sliding veriable resistor shown connected to Arduino UNO

Мұндағы практикалық құндылық жарық шоуынан әлдеқайда асып түседі. Өлшенген кернеуді шығыстар жиынтығына салыстыруды түсінгеннен кейін, сіз дәл сол үлгіні нақты аспап жасау үшін қайта пайдалана аласыз. Мысалы, сіз мыналарды жасай аласыз:

  • 12 В немесе USB қуат банкінің қалған сыйымдылығын жарықдиодтар қатары ретінде көрсететін батарея зарядының индикаторы.
  • Қалқымалы сенсор тереңдікке пропорционалды кернеу шығаратын су құбырының деңгей өлшегіші.
  • LM35 сияқты аналогтық температура сенсорын пайдаланатын температуралық бағаналық дисплей.
  • Радио қабылдағыш немесе күшейткіш үшін сигнал күші немесе аудио деңгейінің өлшегіші.
  • Кез келген 0–5 В аналогтық түрлендіргіш (қысым, жарық, позиция) үшін қарапайым сенсорлық көрсеткіш.
  • Мультиметр экранынсыз қуат рельстерін тексеруге арналған стендтік кернеу зонды.

Шекті мәндер тақта кернеуінің пайыздары ретінде есептелгендіктен, бірдей код Uno және Mega сияқты 5 В тақталарда және тек бір жолды өзгерту арқылы 3,3 В тақталарда жұмыс істейді.

Аппараттық қамтамасыз ету және компоненттер

Бөлшектер тізімі әдейі минималды, және бәрі бейненің басында түсіндіріледі (бейнеде 01:54-те). Сізге қажет:

  • Бір Arduino тақтасы (Uno, Nano немесе Mega).
  • Бес жарықдиод, бағана анық оқылуы үшін бір түсті болғаны жөн, бірақ аралас түстер де жарайды.
  • Бес ток шектеуші резистор. Оқулықта 1 кΩ резисторлар пайдаланылады, бірақ шамамен 300 Ω мен 1 кΩ аралығындағы кез келген нәрсе жарайды; жоғары мәндер жарықдиодтарды жай ғана күңгірт етеді (бейнеде 05:33-те).
  • Бір потенциометр. Айналмалы тұтқа түрі де, сырғымалы түрі де көрсетілген (бейнеде 02:19-да).
  • Прототиптік тақта және қосқыш сымдар.

Жарықдиодтың өзі туралы қысқаша ескерту, өйткені бұл сымдарды жалғау үшін маңызды: жарықдиод - диод, сондықтан ол тек бір бағытта өткізеді. Пластикалық корпустың тегіс жағы және қысқа аяғы катод (теріс). Ұзын аяғы анод (оң). Оқулық бұл таңбаны және физикалық пішінді егжей-тегжейлі қарастырады (бейнеде 02:39-да).

Резистор мәні кездейсоқ емес. Жарықдиод шамамен 2 В төмендетеді, ал кішкентай 3 мм және 5 мм түрлері шамамен 10 мА тартады. 5 В қоректендіру кезінде қалған 3 В резистор арқылы төмендеуі керек, сондықтан Ом заңы R = 3 В / 0,01 А = 300 Ω береді. Бұл максималды жарықтық үшін мән; 1 кΩ пайдалану қауіпсіз, сәл күңгірт таңдау (бейнеде 04:41-де).

Сымдарды жалғау нұсқаулығы

Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
wiring for Arduino walking light LEDs
wiring for Arduino walking light LEDs

Сымдарды жалғаудың жарықдиод бөлігі бұрынғы жүретін жарық жобасымен бірдей: әр жарықдиодтың аноды өз цифрлық істігіне қосылады, ал әр катод резистор арқылы ортақ жер рельсіне өтеді. Оқулықта жарықдиодтар 7, 6, 5, 4 және 3 істіктеріне қосылған (бейнеде 43:04-те).

Потенциометр - жалғыз жаңа бөлік. Оның екі сыртқы істігі екі қуат рельсіне барады — бір сыртқы істік жерге, екіншісі 5 В-қа (немесе 3,3 В жүйесін өлшеп жатсаңыз 3,3 В-қа). Ортаңғы істік, қозғалтқыш деп аталады, шығыс болып табылады және A0 аналогтық істігіне қосылуы керек (бейнеде 43:30-да). Қозғалтқыш айнымалы кернеуді шығаратын нәрсе: тұтқаны бұраған кезде қозғалтқыш резистивті жол бойымен сырғиды және ол ұсынатын кернеу екі рельс арасында біркелкі өзгереді.

Бір маңызды мәлімет: егер сіз схема жұмыс істеп тұрғанда потенциометрді алып тастасаңыз, аналогтық істік қалқымалы күйде қалады және жарықдиодтар кездейсоқ жыпылықтайды. Бұл мінез-құлық бейнеде көрсетілген (бейнеде 48:52-де) және аналогтық кіріс әрқашан анықталған кернеу көзін қажет ететінін еске салады.

Кодты түсіндіру

Код қысқа және оның көп бөлігі қарапайым, сондықтан бұл бөлім тек сіз өзгерткіңіз келетін бөліктерге назар аударады. Осы параметрлердің барлығы скетчтің жоғарғы жағында орналасқан.

Істік анықтамалары. Бұлар Arduino-ға жарықдиодтар мен потенциометр қай істіктерге қосылғанын айтады. Егер сіз жарықдиодтарды басқаша қоссаңыз, бұл сандарды сәйкестендіру үшін өзгертіңіз — тәртіп маңызды, өйткені LED1 ең төменгі шек, ал LED5 ең жоғарғы шек.

const int potPin = A0;//define a pin to connect potentiometer
const int LED1 = 7;
const int LED2 = 6;
const int LED3 = 5;
const int LED4 = 4;
const int LED5 = 3;

Плата кернеуі. Бұл дұрыс анықтау керек ең маңызды мән. Бұл әрбір шекті мән есептелетін анықтамалық шама. Uno немесе Mega үшін 5.0 етіп, ал 3.3 В Nano немесе ұқсас плата үшін 3.3 етіп орнатыңыз. Егер оны қате қалдырсаңыз, әрбір LED дұрыс емес кернеуде қосылады (бейнеде 44:19).

float boardVoltage= 5.0;//for UNO and MEGA 5.0V for Nano either 5V or 3.3V

Сериялық кернеу дисплейі. Өлшенген кернеуді 9600 бодпен Serial Monitor-ге шығару үшін оны true етіп орнатыңыз, бұл калибрлеу кезінде өте пайдалы. Барлығы жұмыс істегеннен кейін шығысты өшіру үшін оны false етіп орнатыңыз.

boolean showVoltage = true;//true or false to read voltage in serial monitor

Түрлендіру қалай жұмыс істейді. Arduino-ның аналогты-цифрлық түрлендіргіші 0-ден 1023-ке дейінгі санды қайтарады, себебі ол 10-биттік түрлендіргіш (210 = 1024 қадам). Код осы шикі санды плата кернеуін анықтамалық ретінде пайдаланып нақты кернеуге масштабтайды. Егер сіз Due сияқты 12-биттік платаға ауыссаңыз, есте сақтайтын жол осы, онда 4095-ке бөлесіз.

int sensorValue = analogRead(A0);
float voltage = sensorValue * (boardVoltage / 1023.0);

Шекті мән логикасы. Кернеулерді қатты кодтаудың орнына, әрбір қадам плата кернеуінің пайызы ретінде көрсетіледі. 95% немесе одан жоғары болса, барлық бес LED жанады; 80%-дан жоғары болса тек төртеуі; және осылайша 20%-ға дейін төмендейді, онда бір LED жанады. Осы пайыздық тәсіл салыстыруларды қайта жазбай-ақ скетчті 5 В және 3.3 В платалар арасында тасымалданатын етеді.

if (voltage >= boardVoltage*0.95)
{
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
      digitalWrite(LED4, HIGH);
      digitalWrite(LED5, HIGH);
}

Код else if қолданатындықтан, циклден әр өтуде дәл бір тармақ орындалады, сондықтан бір уақытта тек дұрыс санды LED қосылады. Әр циклдің соңындағы 50 мс кідіріс дисплейдің жыпылықтауын болдырмайды.

Тікелей жоба және демонстрация

Скетчті жүктегеннен кейін Serial Monitor-ді 9600 бодпен ашыңыз және тұтқаны баяу бұраңыз. Басып шығарылған кернеу мен LED жолағы бір-бірімен тығыз сәйкеседі: шамамен 1 В-та бір LED жанады, 2 В-та екеуі жанады, және осылайша шамамен 4.8 В-қа дейін бесеуі де қосылады (бейнеде 47:37). Көрсеткіштер күтілетін мәннен бірнеше жүздік вольт шегінде ауытқиды, бұл 10-биттік түрлендіргіш үшін тамаша.

Егер қадамдар сәл біркелкі емес көрінсе, бұл әдетте код емес, резисторлар. Оқулықта стандартты көміртекті-пленкалы резисторлар 10% толеранттылыққа ие екені, ал көк металл-пленкалы түрлері әдетте 1% болатыны және айтарлықтай тығызырақ, дәлірек қадамдар беретіні атап өтілген (бейнеде 48:18).

Сондай-ақ айналмалы потенциометрді сырғитын потенциометрге ауыстырып, сызықтық сезіммен бірдей мінез-құлыққа қол жеткізе аласыз, бұл егер өлшеуішті панельге орнатуды жоспарласаңыз, жақсы опция (бейнеде 49:07).

Егер жарықты тұтқамен емес, қолмен жылжытқыңыз келсе, бұл Lesson 98-8: Walking Light with Push Button and LEDs with Arduino сабағында қарастырылған. Ал егер LED-тердің өз таймерімен жүруін қаласаңыз, Lesson 98-7: Walking Light Using Arduino and 5 LEDs қараңыз.

Осы бейнеден байланысты жобалар

Тараулар

  • [00:00] 10 LED жобасына шолу
  • [02:29] LED негіздері, таңбалар және резисторды есептеу
  • [42:25] LED кернеу деңгейі өлшеуішіне кіріспе
  • [43:04] LED-тер мен потенциометрді қосу
  • [43:54] Кернеу жолағы кодын түсіндіру
  • [44:19] Плата кернеуінің анықтамасын орнату
  • [46:00] Шекті мән логикасы және пайыздық қадамдар
  • [47:14] Демонстрация: LED жолағымен кернеуді оқу
  • [48:18] Резистор толеранттылығы және дәлдік
  • [49:07] Сырғитын потенциометрді пайдалану

Суреттер

wiring for Arduino walking light LEDs
wiring for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Arduino UNO-ға қосылған жылжымалы айнымалы резисторы бар breadboard-тағы 5 LED
Arduino UNO-ға қосылған жылжымалы айнымалы резисторы бар breadboard-тағы 5 LED
941-Lessson 98-LED-9: Arduino code walking LED light controlled by potentiometer
Тіл: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Сізге қажет болуы мүмкін нәрселер

Ресурстар мен сілтемелер

Файлдар📁

Arduino кітапханалары (zip)

Пайдаланушының нұсқаулығы