Robototexnikadan boshlang’ich bilimlar. O’quv qo’llanma. Boxodir Xoshimovich Karimov. Читать онлайн. Newlib. NEWLIB.NET

Автор: Boxodir Xoshimovich Karimov
Издательство: Издательские решения
Серия:
Жанр произведения:
Год издания: 0
isbn: 9785006401464
Скачать книгу
qiymat = analogRead (A0); // A0 portidan ma`lumotlarni o`qish

      Serial.print («Potensiometr qiymati ->»);

      Serial.println (qiymat);

      }

      Arduinoda analog kirishlar

      Arduinoning Atmega mikrokontrolleri olti kanalli analog-raqamli konvertorni (ADC) o`z ichiga oladi. Konvertorning ruxsati 10 bit bo`lib, 0 dan 1023 gacha qiymatlarni olish imkonini beradi. Arduino analog kirishlari vasifasi (Arduino UNOda (A0-A5) analog sensorlardan asosiy foydalanish qiymatlarni o`qish. Potansiyometrdan ko`rsatkichlarni olish uchun analog kirishdan foydalaniladi.

      O`lchov bo`linmasining kichik qiymati deyarli har qanday miqdorning qiymatlarini katta aniqlik bilan olish imkonini beradi. Analog kiritishni o`qish uchun analogRead funksiyasidan foydalaning. Analog portlar digitalRead buyrug`i yordamida amalga oshirilishi mumkin, bu buyruq tugmachadan ma`lumotlarni o`qish uchun ishlatiladi. digitalWrite buyrug`i bilan esa LEDni boshqarishingiz mumkin.

      3.5. Arduinoda analog signal va LED

      int LED = 0; //LEDning dastlabki yorqinligi

      int fade = 5; //LED yorqinligini o`zgartirish bosqichi

      void setup () {

      pinMode (9, OUTPUT); // chiqish ishlashi uchun Pin 9 dan foydalaning

      }

      void loop () {

      //LED yorqinligini Pin 9ga o`rnating

      analogWrite (9, LED); //har bir siklda berilgan so`ng miqdorini qo`shish orqali yorqinlikni o`zgartiring;

      LED = LED + fade; //minimal va maksimal yorqinlikda o`chirish tartibini o`zgartiring;

      if (LED == 0 || LED == 255) {

      fade=-fade;

      }

      delay (20); //effektni pauza qilish

      }

      Tushuntirish:

      1.AnalogWrite funksiyasi (pin, qiymat), bu yerda pin – signal qo`llaniladigan chiqish porti, qiymat-0 (to`liq o`chirilgan) va 255 (to`liq yoqilgan) orasidagi qiymat, LEDning yorqinligini yoki tezligini impuls kengligi modulyatsiyasi (PWM) yordamida boshqariladi.

      2.LED o`zgaruvchi sikli har gal bajarilganda «0» boshlang`ich qiymatiga ega bo`ladi, fade ning berilgan qiymati LED qiymatiga qo`shiladi (bu dasturda fade =5).

      LED o`zgaruvchisi maksimal qiymati 255 ga yetganda, fade -5 manfiy qiymatni oladi. Endi, har safar sikl bajarilganda, LED qiymatiga -5 qo`shiladi, ya`ni, har safar fade LEDdan ayriladi.

      Arduinoda LEDning yorqinligini o`zgartirish

      Ushbu bo’limda LEDning yorqinligini o`zgartiriladigan qurilmaning elektr sxemasini yig`amiz. Potensiometr yordamida 9-pinga ulangan LEDning yorqinligini o`zgartirishimiz mumkin. Potensiometrning ikki tarafdagi oyoqlari 5V va GND portlariga ulanadi, kuchlanish qiymati o`rta oyoqdan olinadi va Arduinoning A0 analog kirishiga ulanadi.

      Elektr zanjirini ko`rsatilganidek yig`ing. Potensiometrning o`rta oyog`i kuchlanish ko`rsatkichlarini olish uchun A0 analog portiga ulanadi. Arduinoning 5V va GND portlariga ulash uchun, potensiometrni ikki tarafidagi oyoqlarini qay biriga ulanishi muhim emas. LEDning yorqinligini oshirish uchun faqat htugmachasining aylanish yo`nalishi o`zgartiriladi. Sxema tayyor bo`lgandan so`ng, Arduinoni kompyuterga ulab va dasturni yuklang.

      3.4-rasm. Arduinoga led va potensiyometr ulash sxemasi

      Arduinoda led va potensiyometr uchun dastur

      #define LED_PIN 9 // LED bilan pinga nom bering

      #define POT_PIN A0 // Potensiometr piniga nom bering

      void setup () {

      // LED pin chiqish

      pinMode (LED_PIN, OUTPUT);

      //potensiometrli pin kirish bo`ladi

      pinMode (POT_PIN, INPUT);

      // Serial port monitorini ishga tushiring

      Serial.begin (9600);

      }

      void loop () {

      //2 ta o`zgaruvchidan foydalanishimizni e`lon qilamiz – aylanish va yorqinlik

      //o`zgaruvchilarda faqat butun sonlarni saqlaymiz (ing. «integer»)

      int aylanish, yorqinlik;

      //aylanish 0 dan 1023 gacha bo`lgan potentsiometr qiymatlariga teng

      aylanish = analogRead (POT_PIN);

      // o`zgaruvchan brightness 4 ga bo`lingan aylanishga teng bo`ladi

      //yorqinlik faqat butun son bo`lishi mumkin, kasr qismi o`chiriladi

      //natijada yorqinlik o`zgaruvchisi 0 dan 255 gacha bo`lgan oraliqda bo`ladi

      yorqinlik = aylanish / 4;

      //yorqinlik=aylanish/4 formulasi bo`yicha hisoblangan kuchlanish

      analogWrite (LED_PIN, yorqinlik);

      //aylanish qiymatini ketma-ket monitor portga yuboring

      Serial.println (yorqinlik);

      delay (500);

      }

      Tushuntirish: #define direktivasidan foydalanib, 9-pin raqamini LED_PIN nomi bilan almashtirdik, A0 analog kirishiga POT_PIN nomini berdik. Mahalliy o`zgaruvchi“aylanish“ kuchlanishga mutanosib va 0 dan 1023 gacha (ADC ning minimal va maksimal qiymatlari) oralig`ida bo`ladi. „yorqinlik“ o`zgaruvchisi esa 4 ga bo`lingan „aylanish”ga teng ya`ni 0 dan 255 gacha (analog kirishning minimal va maksimal qiymati).

      4-bob. DASTURLASHNING TARKIBI

      Arduinoda AVR mikrokontrollerlar uchun maxsus C/C++ dasturidan foydalaniladi.

      4.1. setup () va loop () funksiyasi

      Arduino dasturining bazaviy tarkibi ikkita majburiy qism setup () va loop () funksiyasidan iborat. setup () funksiyasidan o’zgaruvchi va kutubhonani ulash e`lon qilinadi. setup () funksiyasi bir marta ishga tushiriladi. U o’zgaruvchilarni inisializasiya qilishda, portlarni ishlash rejimini o`rnatishda va dasturning asosiy siklini tayyorlashda qo’llaniladi. U biror amalni bajarmasa ham dasturga bo`lishi kerak. loop () funksiyasi Arduinoda yozilgan buyruqni cheksiz ketma ketlikda bajaradi. Bu funksiya asosiy ishni siklik ravishda bajaradi.

      Quyida sodda yozilgan dastur keltirilgan.

      void setup ()

      {

      Serial.begin (9600);

      }

      void loop ()

      {

      Serial.println (millis ());

      delay (1000);

      }

      4.2. Boshqaruvchi operatorlar

      4.2.1. If shart operatori

      Bugungi darsda If shart operatori bilan tanishamiz. Arduinoda har bir dasturlash tilida muntazam ishlatiladigan operatorlardan biri – if hisoblanadi. Aynan bu operatorsiz, biror bir mukammal dastur tuzishning umuman iloji yo`q. Shart operatori biror bir qo`yilgan shartni tekshirib, uning rost yoki yolg`onligidan kelib chiqqan holda biror bir amal yoki funksiyani bajarishiga yordam beruvchi vosita hisoblanadi.

      Shart operatorining ikki xil ko`rinishi ya`ni, umumiy ko`rinishi va qisqa ko`rinishi mavjud.

      Shart operatorining qisqa ko`rinishi:

      if (shart) {bajariladigan operatsiya;}

      Bu yerda if – agar, (shart) – tekshirilishi kerak bo`lgan yoki jarayon ishga tushishi uchun bajarilishi shart bo`lgan jarayon,