Оқулық «Білім беруді дамыту федералдық институты»



Pdf көрінісі
бет127/159
Дата10.10.2022
өлшемі8,62 Mb.
#42085
түріОқулық
1   ...   123   124   125   126   127   128   129   130   ...   159
7.2.5. Бағдарлама жасау тілі.
Алдыңғы бөлімде Ардуино тақтасын компьютерге қосу рәсімі сипатталған 
болатын және енді, тақта қосылғанда бағдарламаны микробақылаушы 
жадына жүктеу қажет, яғни микробақылаушыны бағдарламалап қою 
қажет. Бірақ, ең алдымен бағдарламаның өзін (скетч) жазу керек.
Бағдарлама жазу үшін бағдарлама жасау тілі болады. Олар өте көп: C, C + 
+ , C#, Fortran,



196 
Basic, Visual Basic, Python, Java, Pascal және басқалары. Осы тілдер жоғары 
деңгейлі. Осы тілдердегі бағдарламалар адамның жаратылыс тіліне жақын 
келеді, демек, оларды жазу оңай әрі тез және оңай оқылады. Алайда, 
мұндай бағдарламалар компьютерге түсініксіз, сондықтан бағдарламаны 
компьютерге жүктеу алдында, оны өз бетінше толықтыру керек- 
нұсқаулықтағы нөлдер мен бірліктер түріндегі жоғары деңгейлі тілден 
компьютерге түсінікті тілге ауыстыру қажет. Осыны құрастырушылар 
(таратушылар) деп аталатын бағдарламалар айналысады. Әр тілдің өзінің 
құрастырушысы болады. Құрастырушы жоғары деңгейлі тілде жазылған 
бағарламаға кіруді алады, ал шығуда бинарлы орындалатын файл 
жасалады. Бинарлы файл оқу үшін жарамсыз және тек компьютер 
процессорының орындауына арналған. Олардың не үшін алынғанынан 
тыс әртүрлі түрлері болады: . exe — бұл Windows үшін орындалатын 
бағдарлама, hex — микробақылаушы және т.б. үшін орындалатын 
бағдарлама. 
Бағдарламаны жазу кезінде, бағдарлама жасау тілінің қағидасын 
сақтау ғана емес, сондай-ақ бағдарлама құру, бағдарлама құрылымы 
қағидасын сақтау да маңызды. Ардуино үшін бағдарлама жасау тілін 
зерттеуді қарапайым бағдарламадан қарастыруды бастайық. Бағдарлама 
мәтінін. немесе оны тағы бағдарламаның шығыс коды деп те атайды, кез 
келген мәтіндік редактормен жазуға болады. Бірақ, оны 7.6-суретте 
көрсетілгендей, тікелей Arduino IDE әзірлеу ортасында жазу қолайлырақ. 
Әзірлеу ортасы дұрыс жазуға және жазылған бағдарлама кодын тексеруге
арналған құралды ұсынады. Жарық диодын жыпықтатуға арналған 
бағдарлама жазайық. Жарықдиоды кез келген цифрлық қорытындыға 
қосылған сыртқы немесе Ардуино тақтасына кіріктірілген, ішкі болуы 
мүмкін.
Тақтада 
L әрпімен белгіленген, кіріктірілген жарықдиодын 
пайдаланатын боламыз. Осы жарық диоды 13 цифрлық байланысқа 
қосылады. Үш сызықтан және үш нүктеден шығатын үздіксіз жүйелікті 
беретін боламыз және осыған сәйкес жарықдиоды үш ұзын және үш қысқа 
жарық жарқылын беруі қажет.Ардуино үшін бағдарлама жасау тілі С (Си 
деп айтылады) жеңілдетілген тілді құрайды. Кез келген Arduino 
бағдарламасы негізгі екі қызметті setup () және loop () мазмұндауы қажет.
Қызметтер атауы мен дөңгелек жақшалардан кейін, ішінде бағдарлама 
коды немесе қызмет денесі орналасқан, фигуралы жақшалар келеді. Setup 
() қызметі қуат көзіне әр қосылғаннан кейін немесе Arduino тақтасынан 
түсірілгеннен кейін бір рет іске қосылады. Осы қызметтің денесінде 
айнымалыларды инициализациялауға, цифрлық порттардың жұмыс 
тәртібін белгілеуге және т.б. арналған код жазылады. Loop () қызметі
шексіз циклде жүйелі түрде бірінен кейін бірі оның денесінде сипатталған 
команданы орындайды, яғни қызмет аяқталғаннан кейін тағы да оны 
шақырту өтеді. Setup () және loop () қызметтері алдында void негізгі сөзі 
жазылады. Бұл сөз оларды шақыру кезінде ешқандай мәнді қайтармайтын 


197 
қызметті жариялау кезінде пайдаланылады (бірқатар бағдарлама жасау 
тілдерінде мұндай қызметтер рәсімдер деп аталады). Басқа сөзбен 
айтқанда, сыртқы бағдарлама кіші бағдарламалар ретіндегі void негізгі 
сөзі қызметін пайдаланады. Бағдарламадағы ашылатын және жабылатын 
фигуралы жақшалар саны бірдей болуы қажет, олай болмаған жағдайда 
қате берілетін болады.
Жолдар бойынша жүйелі мысалды зерттейік. Бағдарламаны зерттеу 
ыңғайлы болу үшін, жолдарды нөмірлейік.
#define LED_PIN 13 //13 цифрлық байланысты белгілейік 
// жұмыс байланысы ретінде
int i = 5; // i бүтін ұзындық сияқты белгілейік және оған 5 мәнін берейік 
void setup () 

pinMode (LED_PIN, OUTPUT); 

void loop() 

for(i=1; i<=3; i=i+1) // "сызықша " үшін цикл операторы // 

digitalWrite(LED_PIN, HIGH); 
delay(1000); 
digitalWrite(LED_PIN, LOW); 
delay(500); 

for(int j= 1; j<=3; j=j + 1) //"нүкте " үшін цикл операторы //

digitalWrite(LED_PIN, HIGH); 
delay(500); 
digitalWrite(LED_PIN, LOW); 
delay(500); 


1-ші жолда макроанықтама деп аталатын, #define құрастырылымы 
пайдаланылады. Ол құрастырушыға LED_PIN атына белгіленген 13
байланысы туралы айтады және әрдайым бағдарламада LED_PIN аты 
кездесетін болса, бұл біз 13 байланысқа жүгінетінімізді білдіреді. Санның 
орнына #define макроанықтамадағы түсінікті аттарды пайдалану, бұл 
жағдайда 13 санының орнына LED_PIN аты, бағдарлама кодын мейлінше 
түсінікті және бағдарламаның болашақтағы өзгерістері үшін мейлінше
қарапайым етеді. Бұл қалай жасалатынын түсіндірейік. 
Біз 13 байланысқа бірнеше рет жүгіне отырып, бағдарлама жаздық 
делік. Егер бағдарлама үлкен болса, онда осы жүгінулер де бірнеше 
ондықтар болуы мүмкін. Мейлі, 13 байланыстың орнына басқа 


198 
байланысты, мысалы 12 пайдалану қажет болды делік. Онда бүкіл 
бағдарлама бойы «жорғалап», барлық жерде 13 цифрын 12 ауыстыру 
керек.
Мұндай жағдайда, әлдеқайда осы 13 цифрын өткізіп жіберіп, қатеге 
оңай жол беруге болады. Алайда,егер біз бағдарлама басындағы байланыс 
атын LED_PIN 13 сияқты, көрсететін болсақ, онда енді 13 цифрын12 
ауыстыру жеткілікті, яғни LED_PIN 12 жазу және барлық жерде 
бағдарламада LED_PIN атынан 12 байланысы пайдаланылатын болады.
Осылайша, жеңіл әрі оңай түрде барлық бағдарламаға өзгерту енгізуге 
болады.
Енді келесі сәтке көңіл аударайық. #define макроанықтама жолының 
соңында, үтірлі нүкте жоқ, сол кезде басқа сөйлемдердің соңында сияқты, 
үтірлі нүкте қою қажет. «;» таңбасы бойынша құрастырушы бір сөйлемнің 
аяқталып, екіншісінің басталатынын түсінеді. Бірнеше сөйлемді бір жолға
үтірлі нүктемен бөле отырып, жазуға болады, бірақ әдетте олай 
жасалмайды, себебі бұл бағдарлама оқуды қиындатады. Сондықтан әр 
сөйлем жеке жолға жазылады. 
Атауларды бас (басқы) әріптермен де, сондай-ақ аралық жеріндегі 
төменгі сызық таңбасымен кіші әріптермен де жазуға болады. Arduino 
тілі, көптеген басқалары сияқты, кіші және бас әріптер әртүрлі деп 
есептеледі, сондықтан егер LED_PIN атына led_pin ретінде жүгінуге 
тырыссақ, онда құрастырушының led_pin атын білмейтіні туралы қате 
берілетін болады. Бағдарлама кодының жазбасына қойылған бұрынғы 
талаптар Arduino тілінің қағидасын түзеді. Бағдарлама кодын және тіл 
құрастырылымын жазу қағидасы тіл синтаксисі деп аталады.Arduino 
тілінің синтаксисі, әрине, тізбектелген қағидалармен шектелмейді.
Arduino тілінің синтаксисін, сондай-ақ мүмкін болатын операторлар мен 
қызметтер тізбесін зерттеуді бағдарламалардың нақты үлгілеріне біртіндеп 
зерттеу бойынша жүргізетін боламыз.
Бағдарламаның 1- ші және 2 –ші жолдарында //екі қисық сызықпен
бөлінген мәтін бар. Осы мәтін түсіндірме деп аталады. Оны құрастырушы
қабылдамайды, себебі // белгісімен орналасқан. «Екі қисық сызық» 
белгісінің әрекет ету аймағы –жолдың соңына дейін, сондықтан біздің 
мысалда екінші жолдағы түсіндірменің басына тағы да екі қисық сызық 
қою керек. Түсіндірме бағдарлама кодын түсіндіреді және біріншіден, 
егер біз ұзақ уақыттан кейін оған қайта айналып келсек, бағдарламаны 
еске түсіруге, екіншіден басқа бағдарламашылар жазған, бөгде 
бағдарламаларды зерттеуді жеңілдетуге көмектеседі. Екі қисық сызықты 
тек түсіндірме үшін емес, сондай-ақ біз оны құрастырушы 
қабылдамайтын, бағдарлама мәтінінің бір бөлігін бұғаттауды қалаған 
кезде де пайдалануымызға болады. Мұндай әдіс бағдарламаны дұрыстау 
кезінде жиі пайдаланылады.
Бағдарламаның 3-ші жолында айнымалы енгіземіз және оның алдына
ол жататын деректер түрін көрсетеміз. Біздің жағдайымызда, бұл int, 


199 
«бүтін санды» дегенді білдіреді (int integer қысқартқанда — бүтін 
сандық). Бағдарламада деректердің басқа да түрлері кездесуі мүмкін. 
Солардың бірнешеуін атап шығайық.
Деректердің логикалық (бульдік) түрі — boolean. true немесе false екі 
мәнінің біреуін қабылдай алады, boolean жадыда бір байтты алады.
Деректердің unsigned int түрі — белгісіз бүтін сан, яғни оң сан. int 
(белгілік) түрі сияқты, жадыда 2 байтты алады. Бірақ, nt - unsigned int
айырмашылығы 0 бастап, 65535 дейінгі диапазондағы бүтін сандарды 
сақтай алады.
long деректер түрі 2147483648 бастап, 2147483647 дейінгі кеңейтілген 
диапазондағы бүтін сандарды сақтау үшін пайдаланылады. Long жадыда 4 
байтты алады. 
Unsigned long түрі 0 бастап, 4294967295 дейінгі диапазондағы бүтін оң 
сандарды сақтау үшін пайдаланылады және жадыда 32 битті (4 байтты) 
алады. float деректер түрі айнымалы нүкте санын сақтау үшін қызмет 
етеді (ресей терминологиясында — құбылмалы үтір). Осы түрі ұқсас 
кірулермен есептелетін деректер операциялары үшін жиі пайдаланылады. 
Мәндер диапазоны — (-3.4028235E+38)бастап, (+3.4028235E+38) дейін.
float айнымалы түрі жадыда 32 битті(4 байтты) алады. float түрінде алты-
жеті белгі дәл болады (тек мантисса ғана емес, бүкіл белгілер болады 
деген сөз). Әдетте, дәлдікті ұлғайту үшін басқа — double түрі 
пайдаланылады, бірақ Arduino, double және float платформасында бірдей 
дәлдікте болады. float айнымалы түрі нәтиженің абсалюттік дәл мәнін, 
бірқатар шағын ауытқушылықтармен көрсетуі мүмкін екенін ескерген 
жөн. Мысалы,6.0/3.0 әрекетінің нәтижесі 2.0 тең дәлдікпен емес, керісінше 
2.0000001 болуы мүмкін. Айнымалы нүктемен екі санын салыстырғанда, 
дәл емес теңдігін емес, осы сандардың арасындағы айырмашылықты:оның 
алдында берілген аз саннан қаншалықты кіші болатынын тексеру қажет.
Сонымен бірге, арифметикалық операциялардың айнымалы үтір санымен
бүтін сандарға қарағанда, мәнді түрде баяу орындалатынын ескерген жөн.
Ауқымдық деректер түрі . Әрі қарай ауқымдар дұрыс жазбаларының 
бірнеше нұсқасы келтірілген: 
int Ints[6]; 
int Pins[] = {2, 4, 
8, 
3, 
6}; 
int Leds[6] = 
{2, 
4, 
-8, 
3, 
2}; 
Ардуинотілінде тек бір өлшемдік ауқымдар пайдаланылуы мүмкін. 
Әрқашан ауқымның атынан кейін, біздің алдымызда қарапайым 
болмайтын айнымалы, керісінше ауқым элементін көрсететін, квадратты 
жақшалар жүруі қажет. Ауқым индексациясы (1- ден емес) 0 басталады. 
Бұл дегеніміз, 10 элементті ауқым үшін 9 индексі соңғы болады дегенді 
білдіреді. Мысалы: мынадай ауқымды қарастырайық 
intVals[10] = {9,3,2,4,3,2,7,8,9,11}: 
мұндағы // Vals[0] — ауқымның бірінші элементі 9 тең;


200 
// Vals[9] — ауқымның соңғы элементі 11 тең;
// Vals[10] — бұл дұрыс емес, ауқымда мұндай элемент болмайды.
Ауқым элементтері сандық мәндер немесе айнымалы мәндер болуы 
мүмкін, мысалы, 
Vals[0] = 10; Vals[4] = x; және керісінше, айнымалыға ауқым элементінің 
мәнін беруге болады 
x = Vals[4]. 
Иелену операторының көмегімен бірге құбылмалыларды « = « бір түрден 
екіншісіне түрлендіруге болады.Мысалы, бағдарламада кез келген х 
түрінің айнымалысы пайдаланылды делік Оператор х = int(x) айнымалы 
бүтін түрді х түрлендіреді, ал оператор х = long(x) оны long түріне әкеледі 
Өз бағдарламамызға қайтып келейік. Бағдарламаның 4-жолында setup()
қызметі жарияланады.
5-ші және 7-ші жолдарға setup () қызметінің денесін шектейтін, фигуралы 
жақшаларды қоямыз. Біздің жағдайымыздағы тело функции setup()
қызметінің денесі алтыншы жолды алады.
6 шы жолда pin Mode жаңа қызметі кездеседі (LED_PIN, OUTPUT) . Бізге
Arduino цифрлық байланыстарының кіру сияқты да, шығу сияқты да 
жұмыс істей алатыны мәлім. Егер біз бір нәрсені басқаруды, мысалы, 
сигнал беруді қалайтын болсақ, бізге байланысты «шығу» күйіне келтіру 
қажет болады. Біздің мысалымызда, біз 13 байланысқа арналған 
жарықдиодты басқарамыз, сондықтан 13 байланысты пайдалану алдында 
шығуды жасау керек. Бұл үшін pinMode () атындағы қызметті 
шақырамыз. Ол байланыс нөмірі бойынша берілгенді қажетті режимді; 
кіруді немесе шығуды орнатады. Қандай байланыс және қандай режим 
туралы айтылатыны, қызмет атынан кейін бірден үтір арқылы дөңгелек 
жақшалармен көрсетіледі. Біздің жағдайымызда біз 13- байланыс OUTPUT
шығу ретінде жұмыс істегенін қалаймыз. 13 және OUTPUT сияқты, 
нақтылаушы мәндер қызмет аргументтері деп аталады. Барлық қызметте
екі аргументтен болуы, мүлдем міндетті емес. Қызметте қанша аргумент 
болатыны- қызмет түріне байланысты. Қызметтер бір аргументпен, үш, 
жиырма немесе мүлдем аргументсіз де болуы мүмкін. 
Аргументсіз қызметтер үшін дөңгелек жақшалары ашылады да және сол 
жерден жабылады.
8-ші жолда бағдарламаның негізгі циклы болып табылатын, loop() 
қызметі шақырылады.
9-шы және 24-ші жолдарға loop() қызметін шектейтін, фигуралы 
жақшаларды қоямыз.
10-шы жолға цикл операторы енгізіледі. Цикла операторы фигуралы 
жақшаларға жасалған, операторлар блогын қайта-қайта (циклдік) 
орындауға арналған. Цикл операторының денесін шектейтіндер, бұл 11-ші 
және 16-шы жолдар. Цикл операторының құрастырылымы for сөзінен 
басталады. For сөзінен кейін, цикл операторының тақырыбы-дөңгелек 
жақшаларға жасалған, мәтін бөлігі келеді. Цикл тақырыбы үш бөліктен 


201 
тұрады:
i = 1 — і құбылмалының бірінші мәнін иелену; 
i< = 3 — шартын тексеру i< = 3. Егер шарт орындалатын болса, онда цикл 
жалғастырылады. Егер шарт орындалмаса, цикл аяқталады; 
i = i + 1 — і айнымалының бірлікке ұлғаюы. Бірлікке ұлғаюын 
і++өрнегімен, бірлікке кемуін і—өргенімен жазуға болады.
Біздің жағдайымызда, фигуралы жақшалармен қамтылған цикл денесіндегі 
операторлар i = 1, 2, 3. мәндері кезінде, үш есе орындалатын болады.
12-ші жолда digitalWrite LED_PIN, HIGH) кіріктірілген қызметі 
шақырылады. Қызметте екі аргумент болады және логикалық бірлікте ( 
логикалық бірлікті беру, 13 байланыста кернеу 5В берілетінін білдіреді) 
берілуіне байланысты (біздің жағдайда, 13- байланыс) беруге арналған.
Осылайша, біз 13-байланыстағы жарықдиодын жағамыз. 
13-ші жолда delay(1000) қызметі шақырылады. delay () қызметі үзілісті 
белгіленген уақытқа береді. Ол небәрі бір ғана аргумент-үзіліс ұзындығы 
миллисекундпен беріледі. Біздің жағдайымызда, бұл 1 000 мс, яғни 1 с. 
Үзілісте тұрғанда, бәрі солай қалады, жарықдоиоды жанып тұра береді. 1 
000 мс өтісімен, процессор сол жерде келесі операторды орындауға 
көшеді.
14-ші жолда digital Write (LED_PIN, LOW) қызметі шақырылады. Бұл 
жолы 13-байланыс логикалық 0 беріледі, яғни 0 13-байланысқа береміз де 
жарық диодын сөндіреміз.
15-ші жолда delay(500) қызметі шақырылады. Бұл ұзақтығы 500 мс 
үзіліс. Осы уақыт бойы диод сөніп тұрады. Үзіліс аяқталысымен,i = 1 
кезіндегі цикл операторының бірінші айналымы аяқталады және 
бағдарлама i = 2 кезіндегі цикл операторының екінші айналымына көшеді. 
Екінші айналымнан кейін, i = 3 кезіндегі үшінші айналым орындалады. 
Осылайша, цикл операторының көмегімен біз ұзақтығы 1 000 мс 
әрқайсының арасындағы интервал 500 мс үш жарық импульстерін беруді 
жүзеге асырдық. Біз жарық диодының көмегімен үш сызықшаны бердік 
деп есептейік және енді бізге үш нүктені беру қажет. Бұл үшін екінші цикл 
ұйымдастырылады.
17-ші жолда і айнымалы сияқты, j айнымалы бойынша екінші цикл 
шақырылады, j = 1, 2, 3 мәнді қабылдайды. Бұл циклде тағы да і 
айнымалыны пайдалануға болатын еді. Біз айнымалы түрін көрсету үшінj
айнымалыны алдық, бұл жағдайда int, тікелей цикл ішінде иеленуге 
болатын еді. Бұл жарамды, себебі айнымалы түрін бағдарламада олар 
алғашқы кездескен жерде анықтауға болады. Екінші цикл бағдарламаның 
17-ші жолынан бастап, 23-ші жолға дейін алады және іс жүзінде бізбен 
қарастырылған бірінші циклді қайталайды. Барлық айырмашылық
жарықдиодының жарқырау ұзақтығының бұл циклде 500 мс тең 
болатындығында (алдыңғы циклдегідей 1 000 емес), яғни бұл цикл SOS 
сигналындағы үш нүктені имитациялайды. Жарқылдаулар арасындағы 


202 
үзілісті 500 мс тең қылып, қалдырамыз. 
24-ші жолда loop () операторын жабатын фигуралы жақша көрсетілген.
Сонымен, біз Ардуино интерфейс терезесінде бағдарлама жаздық. Тексеру 
батырмасын басамыз. Егер қате болатын болса, оларды түзетеміз, егер қате 
болмаса, Жүктеу батырмасын басамыз. Жүктеуден кейін дереу 
бағдарламаны орындау басталады және тақтадан жарықдиодының үш 
қысқа, үш ұзын жарқылдауын көруге болады.
Бағдарламаның тағы бір мысалын қарастырайық. Алдыңғы мысалдағыдай, 
бағдарламаны зерттеу ыңғайлығы мақсат ында, жолдарды нөмірлейміз.
#define LED1 13 
#define LED2 12 
int var = 1; 
4.int i = 0; 
void setup() 

7. Serial.begin(9600); // 9600бит/сек арналған// сериялық портты орнату 
pinMode(LED1, OUTPUT); //13-ші портты
// деректерді шығару 
орнату 
pinMode(LED2, OUTPUT); // 12-ші портты 
// деректерді шығары 

void loop() // бағдарлама денесі 

switch (var) // var айнымалысы 1 немесе 2 мәнін қабылдайды 

case 1: // осыоператор var = 1 кезінде орындалады 
i=i+1; // циклдердің тікелей есебі 
digitalWrite(LED1, HIGH); // 13 порттағы 1 жазбасы 
digitalWrite(LED2, LOW); // 12 порттағы 0 жазбасы
Serial.println("LED1"); // мониторға арналған // хабарлама "LED1" 
delay(1000); 
if (i = = 5) 
var = 2; 
break; 
case 2: // бұлоператор var = 2 кезінде орындалады 
i=i-1; // циклдердің кері есебі 
digitalWrite(LED2, HIGH); // 12 порттағы 1 жазба 
digitalWrite(LED1, LOW); // 13 портағы 0 жазбасы
Serial.println("LED2"); //мониторға арналған "LED2"хабарламасын шығару 
delay(1000); 
if (i = = 0) 
var = 1; 
break; 


203 


Осы мысалда бағдарлама орындау барысын қалай бақылауды және 
компьютер мониторының экранындағы бағдарлама жұмысының нәтижесін 
бақылай отырып, бағдарламаны реттеу қалай жеңілдетуге болатынын 
көрсетеміз. Мысалдың түйіні мынада. 12-ші және 13-ші байланыстарда 
орналасқан 
жарықдиодтары 
кезек-кезек 
жарқылдайтын, 
әрі 
жарықдиодтарынан шығатын әр жарқылдаудың саны беске тең 
болатындай (қағида түрінде емес) бағдарлама құрастыру қажет. Бізде 
Ардуино тақтасына қосылған екі жарықдиодпен бірге жиналған электр 
сызбанұсқасы жоқ, тек бір кіріктірілген жарықдиодпен бірге Ардуино 
UNO тақтасы бар делік. Сондықтан жарықдиодтықжарқылдау бойынша 
бағдарлама жұмысының дұрыстығын анықтауға физикалық мүмкіндігі 
жоқ. Сондықтан келесідей бейнеде жасаймыз. Компьютер мониторына 
HIGH деңгейі 13-байланысқа берілген кезде LED1 сөзін және және HIGH 
деңгейі 13-байланысқа берілген кезде LED2 сөзін беретін боламыз. 
Осылайша, бағдарламаның дұрыс жұмысы кезінде біз монитор экранынан 
LED1 сөзін кезектеп бес рет және LED1 сөзін бес рет көруіміз қажет, бұл 
13 және 12 байланысқа кернеуді беруге(немесе, егер олар 13,12 
байланыстарға қосылған болса, жарықдиодтарының жануына) сәйкес 
келетін болады.
Осы бағдарламада алдыңғысымен салыстырғанда не жаңа? Біріншіден, 
жарықдиодтар арасындағыларды ауыстыру үшін, бұрын бізге кездеспеген
Switch...case операторы пайдаланылады. Осы оператордың Синтаксисі 
мынадай бейнеде болады: 
switch (var) 

case varl: 
// операторлар, егер
var=varl; 
break; 
case var2:болса орындалады 
// операторлар, егер 
var=var2; break; 
} болса орындалады.
switch. case операторы сол немесе өзге бағдарлама тармағын таңдай 
отырып, бағдарлама орындау процесін басқарады. Ол var айнымалы мәнін 
case операторының мәнімен салыстырады: мысалы, var айнымалы мәнін 
case varl операторындағы var1 санымен салыстырады. Егер var және var1 
мәндері сәйкес келетін болса, онда нақты осы case varl операторымен 
анықталатын бағдарлама тармағы таңдалады. Вreak негізгі сөзі case 
операторынан шығу командасы болып табылады. Вreak операторынсыз
switch операторы қайдағы бір break немесе switch операторының соңына 


204 
жеткенге дейін, сөйлемді есептеуді жалғастыратын болады. switch 
операторының соңы — бұл switch операторының ішіндегі барлық 
сөйлемдерді біріктіретін фигуралы жақшалар. Біздің бағдарламада switch 
операторы 13...33 жолдарын алады. var = 1 айнымалы мәні кезінде case 1 
бағдарлама тармағы орындалады, var = 2 мәні кезінде case 2 тармағы 
орындалады. Әр тармақта і циклінің есептеуіші болады. Бастапқыда case 1 
белгісіндегі тармақты орындауды бастайды. Әр циклдегі есептеуіш 
бірлікке ұлғаяды (16-шы жол) және i = 5 мәнін қабылдаған сәттен бастап, 
if шартты оператор мәні іске қосылады (21 –ші жол), сонымен бірге var 
айнымалы 2 тең мәнді иеленеді (22-ші жол) және бағдарлама case 2 
белгісіндегі тармақты орындауға көшеді. Осы тармақта ұлғаю емес, і 
айнымалы азаяды (25-ші жол) және ол нөлге дейін азайғанша дейін, var 
айнымалысы 1 мәнін иеленетін болады (31-ші жол). Сонымен бірге 
бағдарламаның басқа тармағына кезекті ауыстыру өтеді. Бағдарламаның 
сипатталған жұмыс алгоритмі блок-сызбанұсқасында ұсынылады(7.7-
сурет). 
Осы бағдарламада мониторға деректерді шығару қалай өтетінін 
қарастырайық. Ардуино тақтасының Arduino құрылғылары арасындағы 
байланыс үшін де, Ардуино тақтасының компьютермен байланысы үшін 
де пайдаланылуы мүмкін деректерді жүйелі беруге арналған кіріктірілген 
бақылаушысы болады. Байланыс 0 және 1 тақталарының цифрлық 
порттары бойынша өтеді, сондықтан егер деректерді жүйелі берудің 
қызметі берілсе, оларды цифрлық енгізу-шығару үшін пайдалануға 
болмайды.



205 
Бағдарламаның 7-ші жолына Serial. begin (9600) қызметі енгізіледі. Қызмет 
жүйелі порт арқылы 9600 бит/с деректерін берудің жылдамдығын 
белгілейді. Деректерді мониторға шығару үшін, LED1 сөзін шығаратын 
Serial. println(LEDl) қызметі (19-шы жол) және LED2 сөзін шығаратын 
Serial. println("LED2") қызметі (28-ші жол) қызметі пайдаланылады. Осы 
сөздерді экраннан көру үшін, интерфейстің терезенің оң жоғарғы 
бұрышында орналасқан порт Мониторындағы батырманы басу керек (7.5-
суретті қараңыз). Порт мониторының терезесі ашылады және біз осы 
терезеден LED1 және LED2 сөздерінің жүйелі түрде 5 рет шыққанын 
көреміз. Бұл бағдарламаның дұрыс жұмыс істеп тұрғанын білдіреді. Әр 
сөз жаңа жолдан шығады. Егер Serial.println(LEDl), Serial.println(LED2)
қызметтерінің орнына Serial.print ("LED1") және Serial.print ("LED2") 
қызметтерін берсе, онда нәтижелері бағанамен емес, жолдармен шығатын 
болады.
21-ші және 30-шы жолдарда қос тең белгісі кездеседі (= = ). Иемдену 
операторы болып табылатын ( = )жалғыз тең белгісінен айырмашылығы, 
қос тең белігісісалыстыру операторы болып табылады. 21-ші жолдағы if(i 
= = 5) сөйлемі «егер i 5-ке тең болса» дегенді білдіреді. if операторында 
қарапайым тең белгісін,мысалы if (i = 5)пайдалануға болмайды. 
Қарапайым тең белгісі 5-ке тең (i) айнымалы мәнін иеленеді. Ардуино 
тілінде қос тең белгісінен басқа келесідей түрлері бар салыстыру 
операторлары пайдаланылады: 
(= =) тең; 
(! 
=) тең емес; 
(<) аз; 
(>) көп; 
(< =) аз немесе тең; 
(> =) көп немесе тең. 
Қарастырылған мысалдар Ардуиноға арналған бағдарламалар құрылымы 
және бағдарлама кодын жазу қағидасы, сондай-ақ бағдарлама жасау 
тілінде пайдаланылатын бірқатар операторлар туралы түсінік береді. Әрі 
қарай бағдарлама жасау тілін зерттеу практикалық мысалдарда 


206 
жалғастырылатын болады.
Бағдарлама жазу кезінде, әсіресе тілді зерттеу енді ғана басталғанда, 
бағдарлама жасау қателері болмай қалмайды. Қателер тіпті ең тәжірибелі 
бағдарламашыларда да орын алады.Бағдарламаны бірден дұрыс жұмыс 
істейтіндей етіп, жазу іс жүзінде мүмкін емес. Бағдарлама жазылғаннан 
кейін, оны ретке келтіру процесі басталады. Тіпті, егер формалды 
көзқараспен алғанның өзінде, жазылғанның барлығы дұрыс болса, тіл 
синтаксисі сақталса, бағдарлама компиляцияланады және іске қосылады, 
сонымен қатар ол одан күткен нәтижені нақты бермеуі мүмкін. Мұндай 
жағдайда, бізбен қарастырылғанқатені анықтауға болатын, монитор 
экранына арналған аралықтық нәтижелерді беру көмектесуі мүмкін. Бара-
бара әр бағдарламашының практикалық жұмыс процесінде оған 
бағдарламаны дұрыс жазуға көмектесетін, өз тәсілдерін қалыптастырады. 
Жаңа бастап жүрген бағдарламашыларға бағдарламаны ретке келтіру 
процесін жеделдетуге көмектесетін екі қағиданы ұсынуға болады. 
1-қағида. Көп қабатты үлкен үй жекелеген кірпіштерден салынатыны 
сияқты, үлкен және күрделі бағдарламаны жекелеген қарапайым 
фрагменттерден құрастыру керек. Әр фрагмент — бұл оқыстан ештеңе 
алып келе алмайтын, логикамен әзірленген бағдарламаның кішкене 
бөлектелген бөлігі, жеке кірпіш. 
2 -қағида. Бағдарламаны ретке келтіру кезінде, тек бір өзгертуді бір рет 
қана енгізу қажет. Егер бірнеше өзгертулерді бағдарламаға бірден 
енгізсеңіз, одан кейін олардың қайсысы шешуші әсер көрсеткенін түсінуге 
тырыссаңыз, онда шатасуыңыз мүмкін және ақырында ештеңе түсіне 
алмайсыз. 
Микробақылаушы құрылғылардан макет жасау үлгілері 
Құрылғы макетін жасау үшін Arduino UNO микробақылаушы тақтасын 
пайдалану үлгілерін қарастырамыз.
Қозғалыстың инфрақызыл тетігін қосу. Инфрақызыл (пироэлектрлік) тетігі 
(сенсор) жылы объектілердің: адамдар мен жануарлардың қозғалысын 
белгілеуге мүмкіндік береді. Осындай тетіктер мысалы, адам 
жақындағанда автоматты түрде ашылатын жылжымалы есіктерде 
пайдаланылады.
Тетік сипаттамасы: 
қуат беру кернеуі — 3...5 В; 
тұтынылатын тоқ — 50 мкА; 
бақылау бұрышы — 110°; 
бақылау арақашықтығы — 7 м дейін; 
ауқымды өлшемі — 28 х 36 мм; 
салмағы — 25 г. 
Тетік екі деңгейлі қарапайым цифрлық сигнал береді: қозғалыс болмай 
тұрып, сигналдық байланыс логикалық 0 (LOW) орнатылады. Қозғалыс 
белгіленісімен, сигналдық байланыс шағын уақыт аралығына арналған 
логикалық 1 (HIGH) орнатылады. Мұндай хаттама бинарлы деп аталады. 


207 
Сондай-ақ, нақты физикалық ұзындық градациясының көптігін өлшейтін 
цифрлық сигнал сенсоры болады, мысалы арақашықтық немесе 
температура.Мұндай деректерді беру үшін қолданылатын сенсорға 
арналған құжаттамада сипатталатын басқа, неғұрлым күрделі хаттамалар 
болады.
Тетік басқарушы электроникаға үш сым арқылы қосылады: 
қуат көзі (Vcc) — қызыл сым. Оған сенсорға арналған құжаттамада 
көрсетілген кернеу берілуі қажет. Көбінесе жиі 5 В — бұл норма; 
жер (GND) — қара сым. Микробақылаушының жерімен қосылуы қажет; 
сигналдық. Одан сенсор көрсеткіші есептеледі. Цифрлық сигнал сенсоры 
үшін жасыл түс (D), ұқсас сигнал сенсоры үшін көк түс (S)болады.
Инфрақызыл тетігінің жұмысын көзбен шолып, қадағалау үшін, қозғалыс 
кезінде жанатын жарықдиодын сызбанұсқаға қосамыз және қосымша бір 
тоналдық дыбыс сигналының қозғалысы пайда болған кезде берілетін пье-
зоэлектрлік спикерді (зуммер) қосамыз. Электрондық бөліктерін қосу 
сызбанұсқасы 7.8-суретте ұсынылған (сызбанұсқаны бейнелеу үшін 
Fritzing 
бағдарламасы 
пайдаланылады). 
Қосу 
сызбанұсқасында 
инфрақызыл тетік(infrared sensor), пьезоэлектрлік спикер (Piezo Speaker), 
екі кедергі , жарықдиоды, Arduino UNO тақтасы ұсынылған. Жарық 
диодының катоды «жер» байланысына, ал анод1 кОм кедергісі арқылы- 10 
цифрлық байланысқа қосылады. Спикерді шығару «жер» байланысына 
және 1 кОм кедергісі арқылы 8 цифрлық байланысқа қосылады.
Инфрақызыл тетікті шығару келесідей бейнеде қосылады: қара — «жер» 
байланысына, қызыл — +5 В байланысына, жасыл — 6 цифрлық 
байланысқа. Сызбанұсқасының жұмысы туралы ақпарат қосымша порт 
мониторына шығарылады.
Сызбанұсқасының жұмысын басқаратын скетч келесідей түрде болады: 
#define LED_PIN 10 // Жарықдиоды 10 байланысқа орнатылады// 
#define SENSOR 8 //ИК сенсор 8 int value; void setup () байланысқа 
орнатылады 

pinMode(LED_PIN, OUTPUT); 


208 
7.8-сурет. Микробақылаушының қозғалыстың инфрақызыл тетігіне 
қосылуы. Қосу сызбанұсқасы.
pinMode(SENSOR, INPUT); 
Serial.begin(9600); 
digitalWrite(SENSOR, LOW); //сенсорды калибрлеуді кідіртуді береміз// 
delay(15000); // Serial.println("Calibration done") сенсорды 15 сек 
калибрлеуге арналған кідірту; 

void loop() 

value = digitalRead 8; //8 байланысының жағдайын есептеу // және сақтау 
//оның value if (value = = HIGH)айнымалыдағы мәні 

digitalWrite(LED_PIN, HIGH); //Егер қозғалыс боластын болса, 
// онда жарықдиодының жануы Serial.println("Motion is detected"); for (int= 
1; i<=7; i++) //спикерге арналған үзілмелі сигналды беру // tone(6,777); // 
777 Гц жиіліктегі 6 байланыстағы дыбыстық сигнал //delay(500); 
noTone(6); delay(500); 


else 

digitalWrite(LED_PIN, LOW); // Жарықдиодынөшіру } 


209 

Инфрақызыл тетігі қосылғаннан кейін бірнеше секундтар бойы тетіктің 
қоршаған жағдайға автоматты бейімделуі және тетікті калибрлеу өтеді. 
Тетікті калибрлеу void setup() ішкі бағдарламасында жүргізіледі. Тетіктің 
кіруіне арналған LOW сигналы беріледі, және 15 с өтпейінше бұл сигнал 
тетіктің кіру жерінде ықтиярсыз тұрып қалады. Осы уақыт аралығы бойы 
тетік қозғалысты елемейді. Тетіктің калибрленуі аяқталғаннан кейін, порт 
мониторына Calibration done хабарламасы шығады және әр пайдал болған 
қозғалыс кезінде Motion is detected хабарламасы шығып отырады. void loop 
() негізгі әшкі бағдарламада 8 байланыстан сигналды есептеу өтеді.Егер 
қозғалыс болатын болса, осы байланыста HIGH деңгейі пайда болады және 
бұдан әрі жарықдиодының қосылуын әрі үзілмелі зуммер сигналын 
қамтамасыз етуші бағдарлама фрагменті орындалады. Зуммерді қосуға 
арналған команданың түрі: tone (6, 777); 
мұндағы 6 — зуммер қосылатын байланыс нөмірі, 777 — дыбыстық сигнал 
жиілігі (бұл жиілік кез келген адам құлағының естуі шегінде болуы 
мүмкін, яғни 20 бастап, 20 000 Гц дейін). 
Зуммерді қосу командасының түрі: noTone (6); 
мұндағы 6 — сол байланыс нөмірі. 
Бұрынғы белгіленгендей, бағдарлама мәтіні әріп көрсеткішіне сезімтал 
болып келеді, егер зуммерді қосу командасын notone (6) түрінде жазатын 
болсақ, онда бұл қате болады. 
Құрылғының макеттік үлгісі 7.9-суретте ұсынылған. Макет үлгісін 
жинастыру үшін Arduino UNO тақтасы, макеттік тақта (6.2 бөлімде 
сипатталған), жарық диоды, ИК датчигі пайдаланылды. 
7.9- сурет. Микробақылаушыға қозғалыстың инфрақызыл тетігін қосу. 


210 
Құрылғы макеті 
қозғалыс, пьезоэлектрлік зуммер, 1 кОм кедергі — 2 дана, монтаждау 
өткізгіштері. 
Микробақылаушыға күш қуатын қосу . К выходным контактам Ардуино 
шығу байланыстарына 20 мАдейін тоқ тұтынатын құрылғыны қосуға 
болады. Бұл үшін жарықдиоды жеткілікті, бірақ, егер тіпті шағын қуаты 
төмен моторды қосатын болсақ, микробақылаушының істен шығу қаупі 
пайда болады, себебі мұндай жағдайда электр тізбегінде ампермен 
өлшенетін үлкен тоқ болады. Үлкен тоқты құрылғыларын (қозғалтқыш, 
қыздыру шамы және т.б.) басқару үшін осындай құрылғыны қосуға және 
ажыратуға қабілетті және сондай-ақ, Ардуино көмегімен басқарылатын, 
қандай да бір сыртқы бөлік қажет болады. Мұндай құрылғылар реле, 
транзистор және т.б. болуы мүмкін. 7.10, а-суретте компьютер 
желдеткішін Ардуино тақтасына қосу сызбанұсқасы ұсынылған. Мұндай 
жағдайда күш қуаты желдеткіштің электр қозғалтқышы болып табылады.
Ардуино тақтасына арналған қуат жалғағышы арқылы 12 В тұрақты 
кернеу беріледі, нақты осы кернеу желдеткіш жқмысы үшін қажет. Қуат 
көзінің қадауышты жалғағыштық орталық байланысы қалыпты болуы 
қажет. Желдеткіштің қызыл сымы Ардуино тақтасындағы VIN
байланысына қосылады. Микробақылаушыны күш қуатынан қорғау үшін, 


211 

7.10.-сурет. Күш қуатын 
микробақылаушыға қосу: 
а — қосу сызбанұсқасы; б 
— IRF530N өрістік 
транзисторды шығару 
DRAI

GAT

DRA
IN 
SOUR
CE 
IRF5
30N 
Go

желдеткішмикробақылаушыға IRF530N маркалы өрістік транзистор 
арқылы қосылады. Өрістік транзисторда 7.10, б.-суретте көрсетілгендей, 
үш шығу болады: GATE (бекітпе), DRAIN (ағынды), SOURСE (бастау). 
Желдеткіштің қара сымы DRAIN шығаруға қосылады. Танзистордың 
бекітпесі 1 кОм кедергісі арқылы Ардуино тақтасының 9 цифрлық 
байланысына қосылады. Кедергі микробақылаушыны мүмкін болатын 
қуат жарқылынан қорғау үшін қойылады. Осы мақсатпен, электр 
қозғалтқышының жұмысы кезінде шудың әсерін және қуат жарқылын 
болдырмау үшін, электр қозғалтқышының байланыстарына қатарлас 
сыйымдылығы 1мкФ конденсатор және 1N4007 маркалы түзеткіш диод 
орнатылады. Диод катоды қуат көзінің плюсіне бағытталады. Ардуино 
тақтасының 11 байланысына 1кОм кедергісі арқылы желдеткіштің 
айналым жылдамдығын көзбен шолу үшін пайдаланылатын жарық диоды 
қосылады.
Сызбанұсқа жұмысын басқаратын скетч келесідей түрде болады: 
#define motorPIN 9 #define LedPIN 11 void setup ()



212 
Serial.begin(9600); pinMode(motorPIN, OUTPUT); pinMode(LedPIN, 
OUTPUT); 

void loop() 

for (int i = 0; i< = 255; i++) 

analogWrite(motorPIN, i); analogWrite(LedPIN, i); delay(20); 

Serialprintln("speed max"); for (int i = 255; i> = 0; i--) 

analogWrite(motorPIN, i); analogWrite(LedPIN, i); delay(20); 

Serialprintln("speed min"); delay(500); 

Скетч желдеткіштің 9 байланысқа, ал жарықдиодының -11 байланысқа 
орнатылғанын нұсқайтын операторлардан басталады. Екі байланыс та 9 
және 11 Ардуино тақтасында (~) мәт таңбасымен бегіленген. Бұл осы 
байланыстарға ШИМ сигналы беріледі дегенді білдіреді. void setup() ішкі 
бағдарламаға 9 және 11-байланыстар (OUTPUT) шығуда жұмыс істейтіні 
белгіленеді. void loop () негізгі бағдарламада екі цикл операторы 
пайдаланылады. 9 және 11 байланыстарға арналған осы цикл 
операторларында analogWrite() қызметінің көмегімен әртүрлі ұзақтықтағы 
ШИМ сигналы беріледі.Сигнал ұзақтығы өз мәнін өзгертетін, і 
айнымалымен анықталады. Бірінші цикл операторында і айнымалы 1-ге 
тең қадаммен 0 бастап 255 дейін ұлғаяды. Бұл ретте, желдеткіштің айналу 
жылдамдығы және жарық диодының жарқылдау қарқыны артады. Екінші 
цикл операторында і айнымалы 255 бастап 0 дейін азаяды. Бұл ретте, 
желдеткіштің айналу жылдамдығы және жарықдиодының жарқылдау 
қарқыны кемиді. Бұдан басқа, желдеткіш максималды және минималды 
жылдамдыққа жеткен кезде, порт мониторында speed max және speed min 
хабарламасы беріледі. 


213 
7.11.-сурет. Күш қуатынмикробақылаушыға қосу. Құрылғы макеті 
Құрылғының макеттік үлгісі 7.11. –суретте ұсынылған. Макеттік үлгіні 
жинау үшін Arduino UNO тақтасы,макеттік тақта, жарықдиоды, 12 V DC 
компьютер желдеткіші, IRF530N маркалы өрістік транзистор, 1кОм 
кедергісі- 2 дана, сыйымдылығы 1 мкФ конденсаторы, 1N4007 маркалы 
түзеткіш диоды, қуат беру блогы, монтаждау өткізгіштері пайдаланылды.
Сұйық кристалды дисплейді қосу. Ардуино тақтасына сұйық кристалды 
дисплейді қосу процесін wttp://wiki.amperka.ru сайтында көрсетілген 
түрінде қарастырамыз. Екі жолды мәтіндік экранды МЭЛТ 
компаниясының MT-16S2H дисплейін алайық (http://www.melt.com.ru). Әр 
жолы 16 дейінгі таңбаларды мазмұндауы мүмкін. MT-16S2H дисплейі 
БИС басқару бақылаушысынан және сұйық кристалды (СК) панельден 
тұрады. Таңбалар матрицада 5 х 8 нүктемен бейнеленеді. Таңбалар 
арасында ені бір бейнеленетін нүкте болатын интервалдар болады. Сұйық 
кристалды индикаторда (СКИ) бейнеленетін әр таңбаға индикатордың 
ОЗУ ұяшығындағы оның коды сәйкес келеді. Индикаторда жадының екі 
түрі болады:бейнеленетін таңбалар және пайдаланушылық белгі 
генераторының кодтары, сондай-ақ СК панельді басқару логикасы болады. 
СК-дисплейін қосудың сызбанұсқасы 7.12.-суретте ұсынылған. 
Жүйелі қосуды қарастырайық.
+5В және GNDАрдуино тақтасының байланыстарына макеттік тақта 
қуатының көлденең шиналарын қосу. 


214 
7.12.-сурет. Микробақылаушыға сұйық кристалды дисплейді қосу. Қосу 
сызбанұсқасы.
Дисплейдің фондық көмескі жарығын қосамыз. Дисплейдің фондық 
көмескі жарығы — бұл қалғандарына қатысы жоқ, жеке пішін. Көмескі 
жарықты диплейдің 15-байланысына +5В бере отырып және 16-
байланысты жерге қоса отырып, қосуға болады. Осы екі байланысты тиісті 
қуат шиналарына қоса отырып, Arduino қосуға болады және дисплейдің 
жанғанын көруге болады. Дисплейдегі байланыстарды таңдай отырып, 
байланыстардың жанына қойылған нөмірлерге назар аудару қажет, себебі 
байланыстар рет- ретімен келмеуі мүмкін.
Дисплейдегі таңбалардың бейнеленуіне жауап беретін тізбекті 
қосамыз. Алдын ала Ардуиноны қуатын ажыратамыз. Таңбалардың 
бейнеленуі үшін, дисплейдегі 1,2 және 3-байланыстар жауап береді.
Бірінші — бұл жер. Оны жер шинасымен қосамыз. Екіншісі — қуат. Оны 
+5В шинасымен қосамыз. Үшіншісі — кереғарлық. Максималды 
кереғарлық бейне алу үшін, оны жер шинасымен қосамыз. Осы 
байланысқа 0 бастап, 5В дейінгі ерікті кернеуді беруге болады; ол 
неғұрлым төмен болса, бейне соғұрлым күңгірт болады, бірақ осымен 
бірге электр тұтыну төмендейді. Осы мақсатпен, үшінші байланысты 
потенциометрге қосуға болады. Егер енді Ардуиноны қоссақ, онда тік 
бұрышты таңбалы орындарды көруге болады. Мәтін және көмескі жарық 
түстерінің қисындаусына байланысты, олар немесе айқынырақ, немесе 
солғын көрінуі мүмкін. 


215 
Arduinoны және дисплейді коммуникациялық желілермен қосу.
Arduino және экран арасындағы коммуникация үшін өзара іс-қимылдың 
бірнеше желілерін пайдалану қажет: дисплей басқару үшін екі немесе үш, 
деректерді беру (таңбалар кодтары мен командалар) үшін төрт немесе 
сегіз. Осылайша, екі құрылғыдан 6 бастап, 11-байланысқа дейін бос 
болмай шығады. Көптеген жағдайларда, басқару командасы үшін екі 
желіні және деректерді беру үшін төрт желіні –барлығы алты желіні іске 
қосса, жеткілікті. Нақты осы жағдайды қарастырайық. Сонымен, біз 
дисплейдегі ақпаратты есептемейміз, оған тек жазатын боламыз. 
Сондықтан, есептеуіш-жазбаның жер шинасын таңдауы үшін жауап 
беретін, дисплейдің 5-байланысын қосамыз. Бұл «әрқашан жазуды» 
білдіреді. Arduino арналып, қандай нақты байланыстардың коммуникация 
желілері үшін таңдалатыны маңызды емес, біз оларды бағдарламаға 
міндеттейміз, бірақ үлгі үшін мынадай кескінді таңдауымызға болады: 
 
дисплейдің 4-ші байланысы— Arduino –ның 4-ші байланысы. Бұл 
A0, немесе RS ретінде белгілі, атаулы сигнал желісі. Ол мейлі 0 
немесе 1 болсын, дисплей, біз желіге берілген команданы 
меңзерді немесе бейнелеуге арналған таңба кодын жылжытып ала 
аламыз ба дегенді түсінеді; 
 
дисплейдің 6-шы байланысы —Arduinoның 5-ші байланысы. Бұл 
деректерге қолжеткізуге рұқсат ету желісі. Е немесе Enable 
ретінде белгілі.Қай кезде осы желі бірлік болса, дисплей 
команданы орындайды немесе деректер желісінен таңбаларды 
шығарады; 
 
дисплейдің 11, 12, 13, 14-ші байланыстары — 1сәйкесінше 
Arduino-ның 0, 11, 12, 13-ші байланыстары. Бұл DB4, DB5, DB6, 
DB7 ретінде белгілі деректер желісі. 
Arduino-дан мәтін шығару үшін, кіріктірілген Liquid Crystal стандарттық 
кітапхананы пайдалану неғұрлым қолайлырақ. Құптауды шығару үшін 
мынадай кодтарды пайдалануға болады: 
#include // Кіріктірілген кітапхананы қосамыз //
LiquidCrystal LiquidCrystal lcd(4, 5, 10, 11, 12, 13); //Экранды 
инициализациялап, іске қосылғандарды мына тәртіпте Arduinoға арналған 
байланыстарды қосу үшін береміз//: 
// RS, E, DB4, DB5, DB6, DB7 void setup() 

lcd. begin(16, 2); //экранның бағандары мен жолдары санын орнатамыз// 
lcd. print("Helloworld!"); //бірінші жолды басып шығарамыз. 


216 
7.13-сурет. Микробақылаушыға сұйық кристалды дисплейді қосу. 
Құырлығы макеті 
lcd. setCursor(0, 1); //меңзерді 0 бағаны 1-ші жолға орнатамыз// 
// Негізінде бұл екінші жол, себебі нөмірлеу нөлден басталады// 
lcd.print("Hello Russia!"); //екінші жолды басып шығарамыз } 
void loop () {} 
Ардуино тақтасына USB-порт арқылы қуат беру кезінде, дисплейдегі мәтін 
бұлдырлау болады. Бұл ретте, потенциометрді орнату проблеманы 
шешпейді, себебі ол тек мәтін кереғарлығын азайта алады, бірақ 
ұлғайтпады. Сондықтан, қуат кернеуін 6В дейін арттырамыз және тақтаға 
қуат жалғағышы арқылы беретін боламыз. Макеттік тақтаның қуат 
шинасын (+5 В) байланысымен емес, VIN тақта байланысымен қосамыз. 
Осылайша, қуат шинасындағы кернеу (+6В) болады. Нәтижесінде 
дисплейдегі мәтін кереғарлығы ұлғаяды және мәтін 7.13-суретте 
көрсетілгендей жеңіл оқылатын болады.
БАҚЫЛАУ СҰРАҚТАРЫ 
1. Микропроцессор жүйесі қандай түйіндерден тұрады? 


2. Микропроцессор қандай түйіндерден тұрады? 
3. Микробақылаушықандай түйіндерден тұрады? 
4. Микропроцессорлар мен микробақылаушыларда жадының қандай 
түрлері пайдаланылады? 
5. Жүйе интерфейсі дегеніміз не? 
6. Деректермен алмасу хаттамасы дегеніміз не? 
7. Тактілік импульс генераторы не үшін микропроцессорлар мен 
микробақылаушыларға тағайындалады?
8. Микропроцессордың разрядтылығы дегеніміз не? 
9. Микропроцессордың сәулетін қалай түсінеміз? 
10. Микробақылаушы негізінде құрылғы құру үшін, қандай жұмыстар 
кешенін орындау қажет? 
11. Ардуино платформасы қандай құрамдас бөліктерден тұрады? 
12. Ардуино (Arduino IDE) интегралдық ортасы қандай міндеттерді 
орындайды? 
13. Цифрлық байланыс қандай мәндерді қабылдауы мүмкін? 
14. Микробақылаушы үшін бағдарлама жазуға қандай бағдарлама 
жасау тілі пайдаланылады, олар несімен өзгеше? 


II 
бөлім
ЛЕКТРОНИКА ЖӘНЕ 
МИКРОПРОЦЕССОРЛЫҚ ТЕХНИКА
ЖӨНІНДЕГІ ЖАТТЫҚТЫРУ САБАҒЫ
8- тарау MULTISIM БАҒДАРЛАМАЛАРЫ КӨМЕГІМЕН 
ЭЛЕКТР СЫЗБАНҰСҚАЛАРЫН КОМПЬЮТЕРЛІК 
ҮЛГІЛЕУ 
9- тарау ЛАБОРАТОРИЯЛЫҚ ЖҚҰМЫСТАР 


219 


Достарыңызбен бөлісу:
1   ...   123   124   125   126   127   128   129   130   ...   159




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет