Қазақстан республикасы білім және ғылым министірлігі



Pdf көрінісі
бет11/23
Дата05.09.2020
өлшемі1,57 Mb.
#77431
1   ...   7   8   9   10   11   12   13   14   ...   23
Байланысты:
Робот техникасы негіздері

Сур.6. Батырмамен жұмыстын қосылу сызбасы 

 

Ескерту.  Сызбада  кӛрсетілгендей,  батырманы  бір  аяғын  жерге  кӛк 

сыммен макетті платаның шеткі ұзын кӛк рельсіне таратып, сол ұзын жолдың 

кез  келген  бойынан  жерге  қосылатын  пинге  жалғадық.  Былай  етіп  жалғау, 

макетті платамен жұмыс жасағанда басқа да сыдбалар бойынша жерге жалғау 

керек болғанда, ыңғайлы болады. 

Кӛбінесе, тактілі батырмалар, әр жағынан екі байланысқа ие. Бұған қоса, 

батырманың пішіні шаршыға ұқсас. Қосу кезінде қандай байланыстар бір-біріне 

жалғанған,  ал  қайсылары  батырманы  басқан  кезде  тұйықталатынын 

шатастырып алмау маңызды.  

Батырманы,  керісінше,  тартушы  кедергі  арқылы  қуатқа  және  батырма 

арқылы  жерге  де  қосуға  болады.  Онда,  кірістен  HIGH,  ал  батырманы  басқан 

кезде LOW оқылатын болады. 

Егер,  кірісті  қоспай  тастап  кетсек,  онда  кірісте  кездейсоқ  түрде  HIGH 

немесе  LOW  оқылатын  болады.  Сол  себептен,  батырма  басылмаған  жағдайда 

мәнін беру үшін тартушы кедергіні пайдаланамыз. 

Скетч 


/*  Жарықдиодты батырманы басу арқылы жағып, сӛндіреміз.*/ 

// константтар береміз 

const int buttonPin = 3;     // батырмаға қосылған кіріс нӛмірі 

сonst int ledPin =  13;      // жарықдиод шығысының нӛмірі 

// айнымалылар 

int buttonState = 0;         // батырма күйін сақтайтын айнымалы 

  

void setup() { 



  // жарықдиодқа шығыс болып қосылған пинді жүктейміз 

  pinMode(ledPin, OUTPUT);      

  // батырмаға кіріс болып қосылған пинді жүктейміз 

  pinMode(buttonPin, INPUT);    

  

void loop(){ 



  // батырмаға берілген мәндерді оқимыз 

  buttonState = digitalRead(buttonPin); 

  

  // батырма басулы тұрғанын тексереміз 




 

 

25 



 

  // егер басылып тұрса, онда buttonState HIGH болады: 

  if (buttonState == HIGH) {    

    // жарық диодын қосамыз    

    digitalWrite(ledPin, HIGH);  

  } 


  else { 

    // жарық диодын ӛшіреміз 

    digitalWrite(ledPin, LOW); 

  } 


 

Өз бетінше орындауға арналған тапсырмалар: 

1. Сызбаға тағы бір батырма қосып  скетч кодын жарық диоды екі батырма да 

басылған кезде ғана жанып тұратын етіп ӛзгертіңіз. 

 

 

Үзілістер 



 

Әдетте,  микроконтроллерде  жобалармен  жұмыс  кезінде  фондық 

функцияны бірдей аралықтағы уақыт сайын іске қосып тұру қажет. Бұл кӛбіне 

аппараттық таймерді құру арқылы үзілістер жасау үшін жүзеге асырылады. Бұл 

үзіліс  кезеңдік  үзілістерді  басқару  үшін  үзілістерді  ӛңдеу  бағдарламасын 

(Interrupt Service Routine, ISR) іске қосады.  

Arduino  микроконтроллерінде  бірнеше  кіріс-шығыс  жүйелері  бар,  бұл 

жүйелер  Arduino  қолданушысының  әрбіреуіне  қол  жетімді,  себебі  Arduino 

кітапханасы  олардың  қолданылуын  жеңілдетеді.  Мысалы,  сандық  кіріс-

шығыстар, ЕИМ, аналогтық-сандық кірістер және жүйелік порт. ATMega168-де 

үш ішкі аппараттық таймер бар. Алайда, Arduino кітапханасы таймердің кейбір 

қасиеттерін қолдануға мүмкіндік бергенімен, кезеңдік үзілістерді шығару үшін 

таймерлерді тікелей қолдануға болмайды. 

Атауынан белгілі болып отырғандай, үзілістер – бағдарламаның қалыпты 

ағымын  тоқтатын  дабылдар.  Үзілістер,  әдетте,  жағдайлардың  пайда  болуына 

байланысты  жылдам  әсер  етуді  талап  ететін  аппараттық  құрылғылар  үшін 

қолданылады.  Мысалы,  жүйелі  порт  немесе  UART  (асинхронды  әмбебап 

қабылдау  таратқышы)  микроконтроллері  жүйесі  жаңа  белгі  алғанда  қызмет 

кӛрсетілуі тиіс. Егер мұны жылдам жасамаса, жаңа белгі жоғалып кетуі мүмкін. 

Жаңа  белгі  түскен  кезде  UART  үзілістерді  ендіреді.  Микроконтроллер 

негізгі  бағдарламаның  орындалуын  тоқтатады  (сіздің  қосымшаңыздың)  және 

сол үзілістерге арналған (ISR) үзілістерді ӛңдеу бағдарламасына секіріп кетеді. 

Осы  жағдайда  бұл  –  түскен  белгі  бойынша  үзіліс.  Бұл  ISR  UART-тан  жаңа 

белгіні алып қалады, оны  буферге орналастырады, кейін  үзілістерді тазартады 

және  қайтуды  жүзеге  асырады.  ISR  қайтаруды  жүзеге  асырған  кезде 

микроконтроллер  негізгі  бағдарламаға  қайтадан  оралады  және  оны  шақыру 

нүктесінен  жалғастырады.  Осының  барлығы  фондық  режимде  орындалады 

және сіздің қосымшаңыздың негізгі кодына тікелей әсер етпейді. 




 

 

26 



 

Егер бағдарламада үзілістер кӛп болса немесе үзілістер тез әрекет ететін 

таймерді  ӛңдесе,  негізгі  бағдарлама  айтарлықтай  баяу  жұмыс  істейді,  себебі 

микроконтроллердің  машиналық  уақыты  негізгі  бағдарлама  және  үзілістерді 

ӛңдеудің барлық функциялары арасында бӛлінеді. 

Үзілістердің қаншалықты маңызды екенін кӛруге мысалды қарастырамыз. 

Сізде,  деректерді  9600  бод  жылдамдықпен  жібере  алатын  жүйелі  порты  бар 

делік. Бұл, символдың әрбір биты 9600 Гц немесе шамамен 10 кГц жиілігімен 

жіберіледі дегенді білдіреді. Әрбір битке 100 мкс кетеді. Бір  символды жіберу 

үшін шамамен 10 бит қажет болады, сондықтан біз бір толық  символды әрбір 

миллисекундта  немесе  шамамен  сондай  уақыт  ішінде  аламыз.  Егер  біздің 

UARТ  буферленген  болса,  келесі  символды  қабылдап  болғанша,  біз  соңғы 

символды  алып  тастауымыз  керек,  барлық  жұмыстың  орындалуына  1  мс 

беріледі.  Егер  біздің  UART  буферленбеген  болса,  біз  1  бит  немесе  1  мкс 

болатын символдан арылуымыз қажет.  

 

 



Қозғалтқыштарды басқару 



Достарыңызбен бөлісу:
1   ...   7   8   9   10   11   12   13   14   ...   23




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

    Басты бет