Laboratoriya ishi №13. Pezonurlatgich. Buzer moduli orqali musiqa nota kodlarini tashkillash Laboratoriya ishining maqsadi


Download 0.95 Mb.
Pdf ko'rish
bet10/10
Sana18.06.2023
Hajmi0.95 Mb.
#1571258
1   2   3   4   5   6   7   8   9   10
Bog'liq
3-DETLINE(2)

Servo motor Ichida: SG90 ( bu yerda ma'lumotlar varag'i ) 9 grammlik servo 
motor bo'lib, u taxminan 0,3 soniya (0,1 s/60 daraja) tezlikda 0 - 180 daraja 
(taxminan) aylana oladi. SG90 arzon loyihalarda, odatda motorli transport vositalari 
va robot qo'llari bilan qo'llaniladi. SG90 ta'lim va prototip yaratish uchun ajoyib 
vositadir - chunki u arzon va ishlatish uchun qulay. SG90 Arduino dasturiy ta'minoti 
bilan ham mos keladi, bu qo'llanmada servoni aylantirish uchun foydalaniladi, bu 
vosita bilan ilovalarda ishlatiladigan kichik shahar dvigatelining uzatmasidan 
kattaroq va sekinroq uzatmaga qanday qisqarishini ko'rish uchun. To'liq Arduino 
simlari va kod ko'rsatmalari uchun keyingi bo'limga qarang. 
Quyida odatiy SG90 servo motoridagi turli komponentlar tasvirlangan bir 
qator fotosuratlar keltirilgan: 
Arduino bilan servo simlarni ulash va kodlash asoslari 
MG90S yana bir kichik servo motor bo'lib, u SG90 ga o'xshash, ammo 
og'irligi biroz ko'proq (14 g) va plastmassa o'rniga metall uzatmalarga ega. MG90S 
ham SG90 ga qaraganda bir oz tezroq, bu bu erda nima uchun ishlatilishini yana bir 
oqlashdir. MG90S ham, SG90 ham bir xil simga ulangan va o'xshash koddan 
foydalanadi. MG90S servolari o'rnatilgan servo kutubxonasi asosida servoni oldinga 
va orqaga aylantiradigan Arduino "Servo" kodi bilan ishlaydi. Arduino kutubxonasi 
boshlash uchun ajoyib joy, chunki u haqiqatan ham bir necha qator kodni talab 
qiladi. Birinchidan, servo Arduino platasiga ulangan bo'lishi kerak. Arduino Uno 
taxtasi quyida qo'llaniladi. MG90S texnik jihatdan 4,8V - 6,0V kuchlanishli kirish 
diapazoniga ega, shuning uchun har qanday 5,0V Arduino impuls kengligi 
modulyatsiyasi (PWM) imkoniyatlariga ega bo'lsa, ishlashi kerak. 


19 
Oldingi bo'limda .gifni takrorlash uchun oddiy kod quyida keltirilgan. Jarayon 
quyidagi tartibni amalga oshiradi: 
Birinchidan, dvigatelning boshlang'ich nuqtasini aniqlash uchun 0 darajaga 
aylantiring 
Cheksiz tsikl: 

Taxminan 3 soniya ichida 90 darajaga aylantiring, 5 soniya kuting 

3 soniyada 180 darajaga aylantiring, 5 soniya kuting 

3 soniyada 90 darajaga qayting, 5 soniya kuting 

3 soniyada 0 darajaga qayting, 5 soniya kuting 
#include
Servo servo_1; // servo kontroller (bir nechta mavjud bo'lishi mumkin)
int servo_pin = 3 ; // Servo boshqaruv uchun PWM pin
int pos = 0 ; // servo boshlang'ich pozitsiyasi
bekor o'rnatish () {
servo_1.attach (servo_pin); // servo boshqaruvni ishga tushirish
}
void loop () {
for (pos = 0 ; pos <= 180 ; pos += 1 ) { // 0 darajadan 180 gradusgacha boradi 
// 1 darajali bosqichlarda
servo_1.write(pos); // servoga 'pos'
delay ( 15 ) o'zgaruvchisidagi pozitsiyaga o'tishni ayting; // agar (pos == 90 ){ 
kechikish ( 5000 ) bo'lsa, servoning kerakli holatga kelishiga ruxsat berish uchun 
kechikish
; //90 gradusda bir marta 5 soniya kuting } } kechikish ( 5000 ); // 180 gradusga 
yetgandan keyin 5 soniya kuting (pos = 180 ; pos >= 0 ; pos -= 1 ) { // 180 darajadan 
0 darajaga o'tadi
servo_1.write(pos); // servoga 'pos'
delay ( 15 ) o'zgaruvchisidagi pozitsiyaga o'tishni ayting;
agar (pos == 90 ) {
kechikish ( 5000 ); // 90 darajaga o'rnatilgandan keyin 5 soniya kuting
}
}
kechikish ( 5000 ); // 0 darajaga qaytgandan keyin 5 soniya kuting

Servoni ketma-ket monitordan boshqarish 
Endi servo simlarni ulash va kodlash asoslari kiritilgandan so'ng, servolardan 
foydalanish va boshqarish bo'yicha yanada ilg'or mavzularni o'rganish mumkin. 
Ushbu bo'limda asosiy e'tibor seriyali port yordamida servoni boshqarishga 
qaratiladi. Muxtasar qilib aytganda, ketma-ket portga kiritilgan burchak (gradusda) 


20 
Arduino-ga servoni berilgan holatga aylantirishni aytadi. Ushbu turdagi boshqaruv 
robot qo'llari, kamera boshqaruvi yoki burchak ma'lum bo'lgan va 
foydalanuvchining bevosita kiritishiga ko'ra o'zgartirilishi kerak bo'lgan har qanday 
vaziyat uchun foydali bo'lishi mumkin. 
Bu erda qo'llanilgan ba'zi ilovalar avvalgi qo'llanmada ham qo'llanilgan, bu 
erda RGB LED Arduino-dagi ketma-ket port yordamida boshqariladi. Ushbu 
qo'llanmani bu erda topish mumkin, u erda Arduino pinlarini boshqarish batafsil 
o'rganiladi. Bu erda asosiy e'tibor puls kengligi modulyatsiyasi yordamida servo 
motorning burchagini o'zgartirish uchun bitta Arduino pinini boshqarishga 
qaratilgan. 
#include
Servo servo_1; // servo kontroller (bir nechta mavjud bo'lishi mumkin)
int servo_pin = 3 ; // Servo boshqaruv uchun PWM pin
int pos = 0 ; // servo boshlang'ich pozitsiyasi
bekor o'rnatish () {
servo_1.attach (servo_pin); // servo boshqaruvni ishga tushirish
Serial.begin( 9600 ); // seriyali monitorni ishga tushirish
servo_1.write(pos); // servoni 0 darajaga
o'tkazing Serial.println( "0 darajaga joylashtirilgan" );
Serial.println( "Istalgan burchakni kiriting va Enter tugmasini bosing" );

void loop () {
while (Serial.available()){
String in_char = Serial.readStringUntil( '\n' ); // yangi qatorgacha o'qing
Serial.print( "Ko'chirish: " );
Serial.print(in_char);
Serial.println( "Darajalar" );
servo_1.write(in_char.toInt()); // burchakni o'zgartiring va servo
kechikishini yozing (in_char.toFloat() * ( 10.0 / 6.0 )); // maksimal tezlik uchun 
kechikish


21 

Download 0.95 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling