Boxodir Xoshimovich Karimov

Robototexnikadan boshlang’ich bilimlar. O’quv qo’llanma


Скачать книгу

(10,OUTPUT);

      4.4.2.digitalWrite () va analogWrite () funksiyalari

      Raqamli pin digitalWrite () buyrug`i yordamida raqamli chiqish signal hosil qilishi mumkin. Raqamli signal ikkita qiymatga ega bo`ladi; – 0 yoki 1 (0 volt yoki 5 volt).

      void setup () {

      pinMode (11, OUTPUT);

      digitalWrite (11, HIGH); delay (500);

      digitalWrite (11, LOW); delay (500);}

      40 mA dan ortiq quvvat sarflaydigan qurilmalarni Arduino pinlariga ulash mumkin emas, chunki mikrokontrollerning asosiy maqsadi mantiqiy signallar yordamida boshqa qurilmalarni boshqarishdir. Agar qurilmani belgilangan qiymatdan ko`proq iste`mol qiladigan pinga ulasangiz, u holda pinga zarar etishi mumkin. Bu holda relelardan foudalaniladi.

      4.5.VAQT BILAN ISHLASH

      4.5.1.Arduino kechikishi: delay ()

      Arduinoda delay () funksiyasi muhim rol o`ynaydi va bu buyruq aksariyat dasturni yozish deyarli mumkin emas. Arduino dasturlashda vaqtni kechiktirishning delay () buyrug`ining maqsadi va ishlatilishini quyida ko`rib chiqamiz. Hozir biz faqat delay kechiktirish funksiyasining asosiy xususiyatlarini ko`rib chiqamiz va kichik dasturlar shaklida foydalanish misolini keltiramiz. Ishlash uchun sizga faqat Arduino platasining o`zi kerak bo`ladi.

      Arduinoda delay ()

      delay buyrug`i belgilangan millisekundlar (1 soniyada 1000 millisekund) uchun dasturning bajarilishini to`xtatadi. delay () funksiyasidan foydalangan holda dasturning kechikishi paytida plataga ulangan sensorlarni o`qib bo`lmaydi yoki boshqa operatsiyalarni bajarish mumkin emas.

      Dastur:

      // Svetodiodni miltillashi uchun delay () dan foydalanish misoli

      void setup () {

      pinMode (13, OUTPUT);

      }

      void loop () {

      digitalWrite (13, HIGH);//chiqishga YUQORI signal yuboring

      delay (100); // 100 millisekundga kechikish vaqti

      digitalWrite (13, LOW);//chiqishga PAST signalni yuboring

      delay (100);} //100 millisekundga kechikish vaqti

      4.6.MATEMATIK FUNKSIYALAR

      4.6.1.Arduinoda map () funksiyasi

      Arduinodagi map funksiyasi qiymatni joriy diapazondan parametrlar bilan ko`rsatilgan qiymatlarning yangi diapazoniga o`tkazadi – map qiymat, fromLow (pastdan), fromHigh (yuqoridan), toLow (pastga), toHigh (yuqoriga). map () buyrug`i faqat butun sonlarda ishlaydi. Raqamning kasr qismi proportsional uzatishda matematika qoidalariga ko`ra yaxlitlanmaydi, balki shunchaki o`chiriladi. Arduino IDE-da map funksiyasidan misollar bilan foydalanishni ko`rib chiqamiz.

      Arduino IDE-da map funktsiyasi

      map (qiymat, fromLow, fromHigh, toLow, toHigh)

      *qiymat: belgilangan qiymat

      *fromLow: joriy diapazonning pastki chegarasi

      *fromHigh: joriy diapazonning yuqori chegarasi

      *toLow: yangi diapazonning pastki chegarasi

      *toHigh: yangi diapazonning yuqori chegarasi

      Arduinoda map funksiyasiga misol:

      void setup () {

      pinMode (A1, INPUT); // analog sensorni ulang

      pinMode (10, OUTPUT); //LEDni ulang

      }

      void loop () {

      // «qiymat» o`zgaruvchisi 0 dan 1023 gacha

      int qiymat = analogRead (A1);

      //analog qiymatni 8 bitli raqamga o`zgartiring (0 dan 255 gacha)

      qiymat = map (qiymat, 0, 1023, 0, 255);

      //yangi «qiymat» qiymati bilan svetodiodni yoqing

      analogWrite (10, qiymat);

      }

      map funktsiyasi diapazonni o`zgartirishi mumkinligini unutmang, ya`ni «pastki chegara» «yuqori chegara» dan kattaroq bo`lishi ham mumkin. Misol:

      qiymat = map (qiymat, 0, 1023, 255, 0);

      Eslatib o`tamiz, map () funksiyasi yordamida o`zgartirilganda raqamning kasr qismi yaxlitlanmaydi, balki o`chiriladi (hisobga olinmaydi). Arduino dasturlash tilida float ma`lumotlar turi bilan ishlashda bu faktni hisobga olish kerak.

      4.7.TASODIFIY KATTALIKLAR GENERATORI

      4.7.1.Arduinoda random va random Seed funksiyasi

      Arduino rondom funksiyasi psevdo-tasodifiy raqamni qaytaradi, ya`ni tasodifiy sonlarni yaratish ketma-ketligi hali ham oldindan aytib bo`ladi. Random Seed funksiyasi ko`proq tasodifiy qiymatlarni yaratish uchun tasodifiy funksiyaga o`zgaruvchi yoki doimiyni qo`yish imkonini beradi. Arduino IDE dasturlash tilida ma’lum bir diapazondagi tasodifiy sonni qanday qilib to`g`ri belgilashni aniqlaymiz.

      random – Arduinoda tasodifiy sonlar yaratish

      Random (min, max) funksiyasi min va maksimal qiymatlar bilan belgilangan diapazonda psevdo-tasodifiy raqamni qaytarish imkonini beradi. Keling, turli xil ma`lumotlar turlariga ega misollarni ko`rib chiqaylik.

      Taqdim etilgan misolda 0 dan 250 gacha bo`lgan oraliqda butun sonlarni saqlaydigan byte ma`lumotlar turi tanlanadi. Boshqa ma`lumotlar turlaridan foydalanish mumkin: int, long, unsigned long, unsigned int va boshqalar. Shunga ko`ra, kerakli diapazon (min, max) o`rnatiladi.

      byte malumotlar;

      void setup () {

      Serial.begin (9600);

      }

      void loop () {

      malumotlar = random (100, 200); //diapazondagi arduino tasodifiy soni Serial.println (malumotlar);

      delay (250);

      }

      4.7.2.Arduinoda random float

      Mikrokontroller faqat butun sonlarni yaratishi mumkin. Shuning uchun, ikkita kasrli float ma`lumotlar turini olish uchun alohida butun son hosil qilishingiz va unga o`nli kasrlar qo`shishingiz kerak. Bunday dasturga misol:

      float malumotlar;

      float malumotlar1;

      float malumotlar2;

      void setup () {

      Serial.begin (9600);

      }

      void loop () {

      malumotlar1=random (10); //butun sonlarni yarating malumotlar1=random (100); //kasrdan keyin raqamlar hosil qilish

      malumotlar=malumotlar1 + malumotlar2/100;// qiymatlarni qo`shing

      Serial.println (malumotlar);

      delay (250);

      }

      4.7.3.Arduinoda random bool

      Agar sizga tasodifiy boolen o`zgaruvchi kerak bo`lsa, u faqat ikkita rost (true) yoki yolg`on (false) qiymatni qabul qilishi mumkin. Keyin berilgan ehtimollik bilan tasodifiy rost/yolg`on hosil qilishingiz mumkin. Shunchaki tasodifiy funksiya natijasini bool o`zgaruvchisiga belgilaymiz, bunda yolg`on bo`lish ehtimolining o`zaro nisbatini ko`rsatamiz. Misol:

      bool malumotlar;

      void setup () {

      Serial.begin (9600);

      }

      void loop () {

      //o`zgaruvchan ma`lumotlar 1/5 ehtimollik