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