به نام خدا : تو این مطلب میخوام پروژه راه اندازی موس رو با هم ببینیم، که میکروکنترلر LPC1768 در نقش موس به PC وصل میشه و … عکس زیر تزئینی هستش، تو این پروژه من از چند تا button استفاده کردم برا ساخت موس، که در فیلم همه چیز واضح هستش…
تبدیل میکروکنترلر LPC1768 به موس
کلاس مورد استفاده : HID
مطالب دیگه :
امکانات این پروژه : پروژه این مطلب موارد زیر رو دارا هستش :
- کلید فشاری چپ موس
- کلید فشاری راست موس
- کلید فشاری وسط موس
- کلید چرخشی وسط موس
- حرکت موس در محور X
- حرکت موس در محور Y
Descriptor یک موس واقعی ( Real Mouse ) و موس این پروژه ( Fake Mouse ) :
کد پروژه : این کد فایل main هستش، بقیه کدا رو میخواید ببینید به فایل ته مطلب برید ( هر واحد پروژه، کتابخونه خودشو داره ) …
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include "public_library.h" #include "clock.h" CLOCK clock; #include "usbMouseDevice.h" USB_MOUSE_DEVICE USBmd; #include "gpio.h" int main() { clock.init(); gpio.pinFunction(P0_10,FUNCTION0); gpio.pinMode(P0_10,INPUT); // leftBTN gpio.pinFunction(P0_11,FUNCTION0); gpio.pinMode(P0_11,INPUT); // rightBTN gpio.pinFunction(P0_15,FUNCTION0); gpio.pinMode(P0_15,INPUT); // middleBTN gpio.pinFunction(P0_16,FUNCTION0); gpio.pinMode(P0_16,INPUT); // Xchange+ gpio.pinFunction(P0_17,FUNCTION0); gpio.pinMode(P0_17,INPUT); // Xchange- gpio.pinFunction(P0_18,FUNCTION0); gpio.pinMode(P0_18,INPUT); // Ychange+ gpio.pinFunction(P0_19,FUNCTION0); gpio.pinMode(P0_19,INPUT); // Ychange- gpio.pinFunction(P0_19,FUNCTION0); gpio.pinMode(P0_20,INPUT); // Wheelchange+ gpio.pinFunction(P0_19,FUNCTION0); gpio.pinMode(P0_21,INPUT); // Wheelchange- USBmd.init(); while(1) { // Write USBmd.leftBTN = gpio.digitalRead(P0_10); USBmd.rightBTN = gpio.digitalRead(P0_11); USBmd.middleBTN = gpio.digitalRead(P0_15); USBmd.Xchange = gpio.digitalRead(P0_16) - gpio.digitalRead(P0_17); USBmd.Ychange = gpio.digitalRead(P0_19) - gpio.digitalRead(P0_18); USBmd.Wheelchange = gpio.digitalRead(P0_21) - gpio.digitalRead(P0_20); } } |
کد Report Descriptor :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
uint8_t ReportDescriptor[] = { /******************************** Report Descriptor *********************************/ LE_WORD(0x0105), // Usage Page (Generic Desktop) LE_WORD(0x0209), // Usage (Mouse) LE_WORD(0x01A1), // Collection (Application) LE_WORD(0x0109), // Usage (Pointer) LE_WORD(0x00A1), // Collection (Physical) LE_WORD(0x0905), // Usage Page (Buttons) //--- LE_WORD(0x0119), // Usage Minimum (01) LE_WORD(0x0329), // Usage Maximun (03) LE_WORD(0x0015), // Logical Minimum (0) LE_WORD(0x0125), // Logical Maximum (1) LE_WORD(0x0395), // Report Count (3) LE_WORD(0x0175), // Report Size (1) LE_WORD(0x0281), // Input (Data, Variable, Absolute) ;3 button bits //--- LE_WORD(0x0195), // Report Count (1) LE_WORD(0x0575), // Report Size (5) LE_WORD(0x0181), // Input (Constant) ;5 bit padding LE_WORD(0x0105), // Usage Page (Generic Desktop) //--- LE_WORD(0x3009), // Usage (X) LE_WORD(0x3109), // Usage (Y) LE_WORD(0x8115), // Logical Minimum (-127) LE_WORD(0x7F25), // Logical Maximum (+127) LE_WORD(0x0295), // Report Count (2) LE_WORD(0x0875), // Report Size (8) LE_WORD(0x0681), // Input (Data, Variable, Relative) ;2 position bytes (X & Y) LE_WORD(0x3809), // Usage (Wheel) LE_WORD(0x8115), // Logical Minimum (-127) LE_WORD(0x7F25), // Logical Maximum (+127) LE_WORD(0x0195), // Report Count (1) LE_WORD(0x0875), // Report Size (8) LE_WORD(0x0681), // Input (Data,Var,Rel,NWrp,Lin,Pref,NNul,Bit) 0xC0, // End Collection 0xC0 // End Collection }; |
توجه : من حواسم نبود قابلیت Wheel رو به پروژه اضافه کنم، فلذا فیلمی که میبینید توش از این قابلیت استفاده نکردم، ولی خب بعدا متوجه شدم و اضافه کردم و تست هم کردم و مشکلی نداشته.
فیلم پروژه :
امیدوارم این پروژه مفید باشه براتون، فعلا یا علی.
مهمان
مهندس جان لطفا تجربیاتتون رو در زمینه ساخت منو در lcd2*16 با lpc1768 نیز در اختیارمون بدارید.شما واقعا تو این زمینه زحمت زیادی کشیدید و متاسفانه اگه انجمن های eca و iranmicro رو ببینید دیگه کم کم تو زمینه lpc1768 مطلب جدیدی گذاشته نمیشه و سایت شما واسه خود من داره تبدیل به رفرنس میشه.
اگه در زمینه کار با کتابخونه های lcd های رنگی سریال شرکت adafruit هم اگه کتابخونه و تجربه ای دارید لطفا به اشترک بذارید(برا lpc)
در زمینه کار با وب سرور هم به همین صورت.
با نهایت تشکر.