Аналогты кіріс шін аналогты-санды трлендіргішті,тартыш резисторларын тсіндірііз.
Аналогты-санды трлендіргіш. лшенетін сигналды дискретті аналогты мндерін компьютерде деу шін оны санды трде берілуі тиіс, яни, СА трлендіргіш арылы жасаймыз. САТ екі тсіл арылы жмыс жасайды – параллельдік салыстыру жне адымды жаындау (аппроксимация).САТ та салыстыру тсілімен жмыс істеу (comparation), кіріс мні кернеуді трлі дегейлерінде салыстырылады, ол негізі кернеуден жне каскад кедергісі арылы орындалады (сурет.2.9). р салыстыру слбаларында – компараторда 0 немесе 1 беріледі. Компраторды р шыысы соынан екілік код трленеді. Мндай САТ тез рі жылдам рекет етеді, біра компораторды олданан себептен ол ымбаттау болады. АСТ адымдап жаындау принципі бойынша жмыс істесе, ол САТ негізінде растырылан. Кіріс сигнал диапазоны 2n –1 интервалдара блінген, мндаы n –шыыс кздегі бит саны. Есептеуіш жылдам осы сандарды тізбегін басарады, олар бірден аналогты мнге трленеді. Есептеуіш шыысты САТ – таы шыыс жне кіріс аналогты мндеріні кернеулері рсат етілген абілеттіліктен тмендегенінше лайта береді.
Тартыш резисторлары.Аналогты кірістерді шыыс яшытарында санды шыыстарда жмыс жасайтындай тартыш резисторлары бар. Осы резисторларды осу шін келесі команда орындалады:
digitalWrite(14, HIGH); зірге шыыс яшытары кіріс порттары ретінде олданылып тр. Резисторды осан кезде баса датчиктерді пайдаланан analogRead() функциясыны хабарлайтын мндеріне сер етеді. Пайдаланушыларды кпшілігі тартыш резисторларды аналогты кірістерді оны санды режиміне шыару кезінде пайдаланады.
Arduino-да жылы импульстік модуляция деген не?
Ендік-импульстік молуляция
Ендік-импульстік молуляция PWM (Eng. PWM) болып ысартылады.
Ендік-импульстік молуляцияда LED аналогты бадарламасыны шыуларын пайдалану мысалы Arduino ны Файл-> Sketchbook-> Examples-> менюі арылы ол жетімді.
Ендік-импульстік молуляция немесе ысышы ЕИМ дегеніміз санды рылылар кмегімен трлі аналогты мндерді шыаратын операция. рылы немі жоары жне е тменгі млшерлер арасындаы ауысатын тікбрышты сигнал - рылылар импульсіні сигналдарын алу шін пайдаланылады. Бл сигнал е жоары 5В жне е тменгі 0В арасындаы кернеуді модельдей отырып, 5В ті 0В ке салыстырмалы трде осылу жылдамдыын згертіп отырады.Е жоары лщемні осылу жылдамдыы импульсті ені деп аталады. р-трлі аналогты мндерді алу барысында импульсті ені згеріп отырады. Тез-тез осып-шіруді жылдам згеруі кезінде светодиота зіліссіз 0 жне 5 В арасындаы сигналды беріп біз светодиотты жарытыын басара аламыз.
Графикте жасыл сызытармен траты уаыт кезедері белгілееді. Уаыт зындыы жиілікке кері пропорционал. Яни ЕИМ жиілігі 500HZ болса, жасыл сызытар 2 миллисекунда рбір аралытарында толады. 0 мен 255 масштабы арасындаы Analog.Write() функциясын шаыру Analog.Write(255) мні 100% ке сйкес келеді, яни 5В зіліссіз осылып трады. Сйкесінше Analog.Write(177) 50% ке сйкес болады.
Мысалы, сіз платформа алып, ала жне арта шайаыз. Бізді кз шін, бл озалыс жыпылытап жары диодтарыны жылтыр желісіне айналады. LED шін ендік-импульсті кбейту немесе азайту LED жылтыр желісіні тмендеуі болады.
41. Arduino жадыны андай трлерін білесіз?
Ардуино платформасын олданатын ATmega168 микроконтроллерінде жадыны 3 трі бар:
• Flash жады скетчтерді сатау шін пайдаланылады.
• RAM: айнымалыларды сатау жне жмыс істеу шін пайдаланылады.
• EEPROM: траты апаратты сатау шін пайдаланылады.
Flash жады жне EEPROM жады энерготуелді жады болып саналады. RAM да сол сияты шпа жады болып табылады. шпа деп отыранымыз, яни энерготуелді дегенді білдіреді.
Мироконтроллер ATmega168 келесі жадылара ие:
• флеш жады 16 KB (оны ішінде жктегіштер шін пайдаланылатыны 2 KB)
• ОЗУ 1024 байт
• 512 байт EEPROM
ОЗУ ды шаын млшеріне назар аударуымыз шарт, себебі лкен атарлар клемі оны толытай иелеп алуы ммкін. Мысалы, келесі тсіндірмені кре аламыз:
char message[] = "I support the Cape Wind project.";
Осы атарды зі жалпы клемні 32байтытан трады. Яни рбір символ 1 байтты алады. Егер лкен колемдегі мтін немесе таблицаны дисплейге шыаруда ОЗУ-даы барлы 1024 байтты алуымыза тура келеді. Ал сол кезде жады жетпей калса, программа ате туралы хабарлайды. Мысалы ол программа жазады, біра жмыс істемеуі ммкін. Оны анытау шін жолдарды комментарийге аламыз немесе программа жолдарын тездетеміз. Егер осыдан кейін программа жмыс істесе, онда оны орындалуына бкіл ОЗУды жады кеткен болып саналады.
Бл проблеманы шешуді бірнеше жолдары бар:
- Программада скетчтармен жмыс істегенде, Ардуиноа салма салмау шін деректерді бір блігін компьютерге жктесек болады.
- Егер сізде іздеу кестелері немесе баса да ірі жиымдар бар болса, мндерлі сатау шін е аз деректер трін пайдалануа болады.
- Ауыртыруа болмайьын жолдар немесе деректерді флеш жадыа сатауа болады. Ол шін PROGMEM кілтін олдану ажет.
Ал EEPROM ді олдану шін EEPROM кітапханасына жгінеміз.
42. Arduino зілуі (Arduino Interrupts) алай пайдаланылады?
зілу - ол азір процессор не істеп жатан болса, соны шіріп оны жмысын жасартатын бірнеше операцияларды орындау керектігі жнінде процессора келетін сигналды айтамыз. Бл процесс зілуді дегіш (interrupt handler) деп аталады. Біз функцияны іске асыру жне зіліссіз оны осатын болса, онда бл функция рбір уаытта сигнал деп аталады. зілу дегіші ораланы туралы апарат келсе, процессор брыны істеп жатанын деуді жаластырады.
зуге бірнеше кздерден пайда болады:
• Ардуинодаы таймерлерді бірі, зілуді таймер арылы алыптасады;
• сырты кіруді згеруі нтижесінде зілу;
• ПИН тобыны згерту арылы.
Сіз зілуді пайдалансаыз, немі жоары басымдылы жадайын тексеретін цикл кодын жазуды ажеті жо. Баяу жауап немесе хабар-ошарсыз кеткен юасылан тймелер туралы аладап ажеті жо.
Процессор автоматты трде ол істеп жатанын тотатады жне з зуге деуші шаыруа болады. Сіз жай ана ол туындаан кезде жауап кодын жазуыыз керек.
Барлыы тегіс жмыс істеу шін, ол кп емес 10 трлі зілуді пайдалану е жасы болып табылады.
зілім дегіштері ана басым, уаыт-сезімтал оиаларды деуге пайдаланылуы тиіс. Сіз зіліс дегіші кезінде зілуді шірілгенін есте сатаыз. Сіз зілу дегейін тым кп жасауа тырыссаыз, баса зілу туралы нашар жауап алатын боласыз.
Бадарламада зілісті деу функциясы боланда, баса зілуден ажыратылады. Бны екі маызды салдары бар:
• Атарылып жатан жмыс ыса болуы керек, себебі ол бірді бір зілуді жіберіп алмауы ажет.
• олданылып жатаг кодта зілістерді белсендеуін шаыратын ештене болмауы тиіс, мысалы: delay ().
Бл бадарламаны атып алуына алып келеді.
loop () та за деуді шегерііз.
Таймерді жасайтынан брын тексеру
Таймерлер шектеулі ресурс болып табылады. Arduino UNO барлы 3і де бар болып табылады жне олар кптеген нрселер шін пайдаланылады. Егер таймер конфигурациясында сіз щатасатын болсаыз, кейбір нрселер жмыс істемеуі ммкін. Мысалы, Arduino Uno:
• Timer0 - millis (), micros (), delay () жне PWM 5 жне 6 пиндарда олданылады.
• Timer1 - Servo, WaveHC библиотекасы жне PWM 9 жне 10 пиндарда олданылады.
• Timer2 - Tone жне PWM 11 жне 13 пиндарда олданылады.