3-ilova.
4-ilova.
1-qadam.
Ikki g'ildirakli sxema bo'yicha qurilgan har qanday mavjud platformadan foydalanib robot-karni yarating. Elektron komponentlarning ulanish diagrammasi quyidagi rasmda ko'rsatilgan. Sizga Arduino UNO yoki mos plata, Bluetooth HC-05 (06) moduli, motor drayveri va quvvat manbai batareyasi kerak bo'ladi. Tishli dvigatellar platformaga joylashtiriladi va robot g'ildiraklarini harakatlantirishga majbur qiladi.
2-qadam.
http://remotexy.com/en/editor/ manzilidagi RemoteXY xizmati veb-saytiga o'ting va robotni boshqarish uchun grafik foydalanuvchi interfeysini yarating. Joystik uchun G-sensor yordamida boshqaruv funksiyasini o'rnating. Interfeysning namunasi quyidagi rasmda keltirilgan. "Manba kodini olish" tugmasini bosing.
3-qadam.
GUI manba kodini yuklab oling va uni Arduino IDE da oching. Kompilyatsiya qilish uchun sizga RemoteXY.h kutubxonasi kerak; kutubxonani http://remotexy.com/en/library/ havolasidan yuklab olish mumkin . Siz allaqachon Arduino-da kodni yuklashga va mobil ilovaga ulanishga harakat qilishingiz mumkin. Ammo bu faqat bo'sh kod bo'lsa-da, grafik interfeys va motor drayverini bog'laydigan kerakli funksiyalarni qo'shishingiz kerak bo'ladi.
4-qadam.
Keyin grafik interfeys yordamida manba kodiga robotni boshqarish funksiyasini qo'shishingiz kerak. Shu maqsadda maydon RemoteXY tuzilishi. RemoteXY tuzilishi barcha GUI boshqaruvlarini ko'rsatadi.
Olingan manba kodi quyida ko'rsatilgan. Siz uni kompilyatsiya qilishingiz va Arduino-ga yuklashingiz mumkin.
5-qadam.
http://remotexy.com/en/download/ saytida RemoteXY mobil ilovasini o'rnating . Ilova mobil qurilmada ishlayotgan bo'lsa, ro'yxatdagi Bluetooth ulanish tugmachasini bosing, Bluetooth modulingiz nomini tanlang, HC-05 (06) modullari uchun nom odatda INVOR yoki HC-06 bo'ladi.
/////////////////////////////////////////
// RemoteXY kutubxonani o'z ichiga oladi //
/////////////////////////////////////////
/* RemoteXY ulanish rejimini tanlang va kutubxonani o'z ichiga oladi */
#REMOTEXY_MODE__SOFTWARESERIALni aniqlang
#include
#include
/* RemoteXY ulanish sozlamalari */
#REMOTEXY_SERIAL_RX 2 ni aniqlang
#REMOTEXY_SERIAL_TX 3 ni aniqlang
#REMOTEXY_SERIAL_SPEED 9600 ni aniqlang
/* RemoteXY konfiguratsiyasi */
unsigned char RemoteXY_CONF [] =
{ 3 , 0 , 23 , 0 , 1 , 5 , 5 , 15 , 41 , 11
, 43 , 43 , 1 , 2 , 0 , 6 , 5 , 27 , 11 , 5
, 79 , 78 , 0 , 79 , 70 , 70 , 0 };
/* bu struktura boshqaruv interfeysingizning barcha o‘zgaruvchilarini belgilaydi */
tuzilma {
/* kirish o'zgaruvchisi */
imzolangan joystick_1_x ; _ /* =-100..100 x-koordinatali joystik holati */
imzolangan joystick_1_y ; _ /* =-100..100 y-koordinatali joystik holati */
unsigned char switch_1 ; /* =1, agar o'chirilgan bo'lsa va =0 bo'lsa */
/* boshqa o‘zgaruvchi */
unsigned char connect_flag ; /* =1, agar sim ulangan bo'lsa, boshqa =0 */
} RemoteXY ;
/////////////////////////////////////////
// END RemoteXY o'z ichiga oladi //
/////////////////////////////////////////
/* to'g'ri vosita boshqaruv pinlarini aniqladi */
#PIN_MOTOR_RIGHT_UP ni aniqlang 7
#PIN_MOTOR_RIGHT_DN 6-ni aniqlang
#PIN_MOTOR_RIGHT_SPEED 10 ni aniqlang
/* chap dvigatelni boshqarish pinlarini aniqladi */
#PIN_MOTOR_LEFT_UP ni aniqlang 5
#PIN_MOTOR_LEFT_DN ni aniqlang 4
#PIN_MOTOR_CHAP_TEZLIK 9 ni aniqlang
/* LED pinini aniqladi */
#PIN_LED 13 ni aniqlang
/* har bir dvigatel uchun pinlar ro'yxati bilan ikkita massiv aniqlandi */
unsigned char RightMotor [ 3 ] =
{ PIN_MOTOR_RIGHT_UP , PIN_MOTOR_RIGHT_DN , PIN_MOTOR_RIGHT_SPEED };
unsigned char LeftMotor [ 3 ] =
{ PIN_MOTOR_LEFT_UP , PIN_MOTOR_LEFT_DN , PIN_MOTOR_LEFT_SPEED };
/*
motor tezligini nazorat qilish
motor - pinlar qatoriga ko'rsatgich
v - vosita tezligi -100 dan 100 gacha o'rnatilishi mumkin
*/
void Wheel ( insigned char * motor , int v )
{
agar ( v > 100 ) v = 100 ;
agar ( v <- 100 ) v =- 100 ;
agar ( v > 0 ) {
digitalWrite ( motor [ 0 ], YUQORI );
digitalWrite ( motor [ 1 ], LOW );
analogWrite ( motor [ 2 ], v * 2.55 );
}
Aks holda ( v < 0 ) {
digitalWrite ( motor [ 0 ], LOW );
digitalWrite ( motor [ 1 ], YUQORI );
analogWrite ( motor [ 2 ], ( - v ) * 2.55 );
}
boshqa {
digitalWrite ( motor [ 0 ], LOW );
digitalWrite ( motor [ 1 ], LOW );
analogWrite ( motor [ 2 ], 0 );
}
}
bekor o'rnatish ()
{
/* ishga tushirish pinlari */
pinMode ( PIN_MOTOR_RIGHT_UP , OUTPUT );
pinMode ( PIN_MOTOR_RIGHT_DN , OUTPUT );
pinMode ( PIN_MOTOR_LEFT_UP , OUTPUT );
pinMode ( PIN_MOTOR_LEFT_DN , OUTPUT );
pinMode ( PIN_LED , OUTPUT );
/* ishga tushirish moduli RemoteXY */
RemoteXY_Init ();
}
bo'sh pastadir ()
{
/* RemoteXY hodisalarni qayta ishlash moduli */
RemoteXY_Handler ();
/* LED pinini boshqarish */
digitalWrite ( PIN_LED , ( RemoteXY . switch_1 == 0 ) ? PAST : YUQORI );
/* to'g'ri motorni boshqaring */
G'ildirak ( RightMotor , RemoteXY . joystick_1_y - RemoteXY . joystick_1_x );
/* chap motorni boshqaring */
G'ildirak ( LeftMotor , RemoteXY . joystick_1_y + RemoteXY . joystick_1_x );
}
Do'stlaringiz bilan baham: |