- Потребан материјал:
- Кружни дијаграм:
- Објашњење програмирања:
- Постављање хардвера за трептање ЛЕД секвенце:
- Отпремање и рад:
Ово је друго упутство из низа лекција у којем учимо МСП430Г2 ЛаунцхПад компаније Текас Инструментс користећи Енергиа ИДЕ. У последњем водичу за Блинки ЛЕД представили смо себе ЛаунцхПад Девелопмент Боард-у и Енергиа ИДЕ-у, такође смо учитали свој први програм, а то је да у редовном интервалу трепће ЛЕД-ом на плочи.
У овом упутству научићемо како да користимо опцију Дигитал Реад и Дигитал Врите за читање статуса улазног уређаја попут прекидача и контролу више излаза попут ЛЕД-а. На крају овог водича научили бисте радити с дигиталним улазима и излазима, који се могу користити за повезивање многих дигиталних сензора попут ИР сензора, ПИР сензора итд., Као и за укључивање или искључивање излаза попут ЛЕД-а, зујалице итд. Звучи занимљиво јел тако!!? Хајде да почнемо.
Потребан материјал:
- МСП430Г2 ЛаунцхПад
- ЛЕД било које боје - 8
- Прекидач - 2
- 1к отпорник - 8
- Повезивање жица
Кружни дијаграм:
У нашем претходном упутству приметили смо да се сама лансирна рампа испоручује са два ЛЕД-а и прекидачем на плочи. Али у овом упутству требат ће нам и више од тога, јер планирамо да узастопно жаримо осам ЛЕД лампица када се притисне дугме. Такође ћемо променити редослед када се притисне друго дугме само да би било занимљиво. Дакле, морамо да направимо коло са 8 ЛЕД светла и два прекидача, комплетни дијаграм кола може се наћи у наставку.
Овде су 8 ЛЕД диода излази, а два прекидача улази. Можемо их повезати са било којим У / И пином на плочи, али повезао сам ЛРД-ове са пина П1.0 на П2.1 и пребацио 1 и 2 на пинове П2.4 и П2.3, како је горе приказано.
Сви катодни пинови ЛЕД диоде везани су за земљу, а анодни пин је повезан са И / О пиновима преко отпорника. Овај отпорник назива се отпорник за ограничавање струје, овај отпорник није обавезан за МСП430, јер је максимална струја коју може добити И / О пин само 6мА, а напон на пину је само 3,6В. Међутим, добра је пракса користити их. Када се било који од ових дигиталних пинова подигне високо, укључиће се одговарајућа ЛЕД лампица. Ако се можете присјетити посљедњих водича за ЛЕД програме, сјетит ћете се да ће дигиталВрите (ЛЕД_пин_наме, ХИГХ) ЛЕД засвијетлити, а дигиталВрите (ЛЕД_пин_наме, ЛОВ) окренути ЛЕД.
Прекидачи су улазни уређај, један крај прекидача повезан је на уземљење, а други на дигиталне пинове П2.3 и П2.4. То значи да ће сваки пут када притиснемо прекидач И / О пин (2.3 или 2.4) бити уземљен и остаће слободан ако се не притисне дугме. Погледајмо како можемо користити овај аранжман током програмирања.
Објашњење програмирања:
Програм мора бити написан за управљање 8 ЛЕД диода у низу када се притисне прекидач 1, а затим када се притисне прекидач 2 редослед се мора променити. Комплетан програм и демонстрација видео се може наћи на дну ове странице. Даље у наставку објаснићу програм ред по ред како бисте га могли лако разумети.
Као и увек, требали бисмо започети са воид сетуп () функцијом унутар које бисмо прогласили пинове које користимо као улазне или излазне пин-ове. У нашем програму се излазе 8 ЛЕД пинова и 2 прекидача су улази. Ових 8 ЛЕД диода је повезано са П1.0 на П2.1, што је пин број 2 до 9 на плочи. Тада су прекидачи повезани на пин П2.3 и Пин 2.4, који су бројеви 11 и 12, респективно. Дакле, прогласили смо следеће у воид сетуп ()
воид сетуп () {фор (инт и = 2; и <= 9; и ++) {пинМоде (и, ОУТПУТ); } за (инт и = 2; и <= 9; и ++) {дигиталВрите (и, ЛОВ); } пинМоде (11, ИНПУТ_ПУЛЛУП); пинМоде (12, ИНПУТ_ПУЛЛУП); }
Као што знамо, функција пинМоде () декларише пин као излаз или улаз, а функција дигиталВрите () га чини високим (ОН) или ниским (ОФФ). Петљу фор користили смо за израду ове декларације како бисмо смањили број линија. Променљива "и" ће се повећати од 2 до 9 у за петље и за сваки прираст функције унутрашње биће погубљен. Још једна ствар која би вас могла збунити је термин „ ИНПУТ_ПУЛЛУП “. Пин се може декларисати као улаз само позивањем функције пинМоде (Пин_наме, ИНПУТ), али овде смо користили ИНПУТ_ПУЛЛУП уместо ИНПУТ-а и оба имају приметну промену.
Када користимо било које пинове микроконтролера, пин би требао бити повезан на доњи или на високи. У овом случају иглице 11 и 12 повезане су на прекидач који ће се притиснути на масу. Али када прекидач није притиснут, пин није повезан ни са чим, ово стање се назива плутајући пин и то је лоше за микроконтролере. Дакле, да бисмо то избегли, користимо или пулл-уп или пулл-довн отпорник да држимо пин у стању када уђе у плутајући. У микроконтролеру МСП430Г2553 И / О пинови имају уграђени отпорник на извлачење. Да бисмо то искористили, све што треба да урадимо је да током декларације позовемо ИНПУТ_ПУЛЛУП уместо ИНПУТ баш као што смо то урадили горе.
Сада идемо у функцију воид лооп () . Шта год да је написано у овој функцији, извршаваће се заувек. Први корак у нашем програму је да проверимо да ли је прекидач притиснут и ако притиснемо, требали бисмо почети да трепћемо ЛЕД диоде у низу. Да бисте проверили да ли је дугме притиснуто, користи се следећи ред
иф (дигиталРеад (12) == ЛОВ)
Овде је нова функција функција дигиталРеад () , ова функција ће очитавати статус дигиталног пина и враћаће се ХИГХ (1) када пин добија неки напон и враћаће се ЛОВ (0) када је пин уземљен. У нашем хардверу, пин ће бити уземљен само када притиснемо дугме, у супротном ће бити висок пошто смо користили пулл-уп отпорник. Дакле, користимо наредбу иф да бисмо проверили да ли је дугме притиснуто.
Једном када се притисне дугме, улазимо у бесконачну петљу вхиле (1) . Ту почињемо да трепћемо ЛЕД диоде у низу. Бесконачна док петља је приказан испод и све што је написано унутар петље ће трајати заувек до паузе; користи се изјава.
вхиел (1) {}
Унутар бесконачног, док проверавамо статус другог прекидача који је повезан на пин 11.
Ако се притисне овај прекидач, трепћемо ЛЕД у једном одређеном низу, а трепћемо у другом низу.
иф (дигиталРеад (11) == ЛОВ) {фор (инт и = 2; и <= 9; и ++) {дигиталВрите (и, ХИГХ); кашњење (100); } за (инт и = 2; и <= 9; и ++) дигиталВрите (и, ЛОВ); }
Да бисмо трепнули ЛЕД у низу, поново користимо фор петљу, али овог пута користимо мало кашњење од 100 милисекунди помоћу функције делаи (100) како бисмо могли да приметимо како се ЛЕД повећава. Да би одједном светлио само један ЛЕД, користимо и други фор лооп да искључимо све ЛЕД. Дакле, укључујемо лед чекање неко време, а затим искључујемо све ЛЕД диоде, а затим повећавамо бројање, укључујемо ЛЕД чекање неко време и циклус се наставља. Али све ово ће се догодити све док други прекидач није притиснут.
Ако се притисне други прекидач, тада мењамо секвенцу, програм ће бити мање више исти као што се очекује за секвенцу чији је ЛЕД укључен. Линије приказане доле покушајте да погледате и схватите шта је промењено.
елсе {фор (инт и = 9; и> = 2; и--) {дигиталВрите (и, ХИГХ); кашњење (100); } за (инт и = 2; и <= 9; и ++) дигиталВрите (и, ЛОВ); }
Да, фор петља је промењена. Раније смо ЛЕД светлили од броја 2 па све до 9. Али сада ћемо кренути од броја 9 и смањивати се све до 2. На овај начин можемо приметити да ли је прекидач притиснут или не.
Постављање хардвера за трептање ЛЕД секвенце:
У реду са свим теоријским и софтверским делом. Узмимо неке компоненте и видимо како овај програм изгледа на делу. Струјни круг је врло једноставан и стога се лако може изградити на табли. Али залемио сам ЛЕД и прекидаче на перф плочи само да би изгледао уредно. Испод је приказана парфемска плоча коју сам залемио.
Као што видите, излазни пинови ЛЕД-а и прекидач извађени су као пинови конектора. Сада користимо жице женског и женског конектора за повезивање ЛЕД диода и пребацивање на МСП430 ЛаунцхПад плочу као што је приказано на доњој слици.
Отпремање и рад:
Када завршите са хардвером, само повежите плочу МСП430 са рачунаром и отворите Енергиа ИДЕ и користите програм дат на крају ове странице. Обавезно одаберите десну плочу и ЦОМ порт у програму Енергиа ИДЕ и кликните на дугме Отпреми. Програм би требало да се успешно компајлира и када се отпреми приказује „Завршено слање“.
Сада притисните дугме 1 на плочи и ЛЕД би требало да се упали редом, као што је приказано доле
Такође можете да држите друго дугме да бисте проверили да ли се секвенца мења. Комплетан рад пројекта приказан је у видео снимку испод. Ако сте задовољни резултатима, можете покушати да направите неке промене у коду, попут промене времена одлагања, промене секвенце итд. То ће вам помоћи да боље научите и разумете.
Надам се да сте разумели водич и научили нешто корисно помоћу њега. Ако сте наишли на било какав проблем, слободно поставите питање у одељак за коментаре или користите форуме. Упознајмо се у другом упутству где ћемо научити како читати аналогне напоне помоћу наше лансирне рампе МСП30.