به نام خدا : راه اندازی ماژول جوی استیک دو محوره با AVR : والا راه اندازی این ماژول کار خاصی نداره و ساده هستش….ولی به دلیل این که من دانشجو هستم و دانشجو جماعت هم بیکار هستش کلا و ما هم همین طور….لذا برای این که بیکار نمونیم گفتیم این ماژ<ل رو راه اندازی کنیم و آموزش+پروژه کار باهاش رو تو سایت بزارم تا شاید بدرد کسی بخوره….
کاربرد این ماژول: از این ماژول میشه تو ساخت دسته کنترل استفاده کرد.(خودم که برا همین کار اینو خریدم و الان و انشاالله بعدا باهاش کار میکنم….برا رباتم ^_^ ) ، بقیه کاربرد هاش رو هم خودتون میدونید لذا من نمیگم دیگه o_O
نحوه کار ماژول : والا غیر از پایه های VCC و GND که به 5 ولت و زمین وصل میشن 3 تا پایه دیگه داریم که S-X و S-Y و S-K هستن که اولی برا محور X و دومی برا محور Y سومی برا فشار دادی جوی استیک هستش(به سمت پایین فشار دادن).
و از طریق ADC (مبدل آنالوگ به دیجیتال) میفهمبم که جوی استیک در چه مکانی قرار دارد.
S-K : در حالت عادی 5 ولت میدهد و اگه جوی استیک رو به سمت پایین فشار بدی 0 ولت میشه.
S-Y : در حالت عادی حدودا 2.5 ولت هستش و در بالا ترین نقطه 5 ولت و در پایین ترین نقطه 0 ولت میشود.
S-X : در حالت عادی حدودا 2.5 ولت هستش و در چپترین نقطه 5 ولت و در راست ترین نقطه 0 ولت میشود.
که ما از طریق ADC این ولتاژ ها رو محاسبه میکنیم و میفهمیم که جوی استیک در چه وضعیتی قرار دارد.
اگه در مورد ADC چیزی نمیدونید مطلب زیر رو بخونید : آموزش جامع میکروکنترلر AVR جلسه۲
پروژه AVR راه اندازی ماژول جوی استیک دو محوره
این از مدار پروژه
اینم از کد های پروژه
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#include <mega16.h> #include <delay.h> #include <stdlib.h> #include <lcd.h> #asm .equ __lcd_port=0x18 ;PORTB #endasm #define ADC_VREF_TYPE 0x00 // Read the AD conversion result float read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; ADCW=((ADCW*5)/1023)*100; return ADCW; } void main(void) { float LeftRigt=0,UpDouwn=0,Push=0; char str[20]; // ADC initialization // ADC Clock frequency: 500.000 kHz // ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: None ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x84; //up & douwn = read_adc(2); //left & right = read_adc(1); //push = read_adc(0); lcd_init(20); lcd_gotoxy(0,0);lcd_puts(" DMF313.IR");delay_ms(1000);lcd_clear(); while(1) { Push=read_adc(0); itoa(Push,str); lcd_gotoxy(0,0);lcd_puts("PUSH=");lcd_puts(str);lcd_putsf(" "); LeftRigt=read_adc(1); itoa(LeftRigt,str); lcd_gotoxy(0,1);lcd_puts("LeftRigt=");lcd_puts(str);lcd_putsf(" "); UpDouwn=read_adc(2); itoa(UpDouwn,str); lcd_gotoxy(0,2);lcd_puts("UpDouwn=");lcd_puts(str);lcd_putsf(" "); if(Push>=300){lcd_gotoxy(0,3);lcd_puts("Push-of");} else {lcd_gotoxy(0,3);lcd_puts("Push-on");} if(LeftRigt>=480 && LeftRigt<=530){lcd_gotoxy(8,3);lcd_puts("****");} else if(LeftRigt>530){lcd_gotoxy(8,3);lcd_puts("Left");} else {lcd_gotoxy(8,3);lcd_puts("Rigt");} if(UpDouwn>=480 && UpDouwn<=530){lcd_gotoxy(15,3);lcd_puts("*****");} else if(UpDouwn>530){lcd_gotoxy(15,3);lcd_puts("Up ");} else {lcd_gotoxy(15,3);lcd_puts("Douwn");} }; } |
دانلود پروژه راه اندازی ماژول جوی استیک دو محوره با AVR
اینم از فیم پروژه :
مهمان
سلام. من تازه با الکترونیک و سایتتون اشنا شدم تقریبا. میخوام جوی استیک رو توی پروتئوس شبیه سازی کنم، ولی نتونستم توی لیست قطعات پیداش کنم. گفتم شاید توی دیتابیس پروتئوس شاید نباشه اصلا. اگه این طوره میشه کمک کنید. فک کنم اگه خودش این ماژول رو نداشته باشه باید یه فایلی رو که مربوط به این ماژول هس رو از نت دانلود کنم بعد باید به برنامه اضافه کنم. نه همچین فایلی پیدا کردم و نه بلدم که به پروتئوس اضافه کنم. اصلا شاید تو قطعاتش باشه و من نمیتونم پیداش کنم. لدفن کمکم کنیید

مهمان
سلام خسته نباشی ببخشید میشه این با سرو موتور انجام داد
مهمان
سلام وقتتون بخیر من واسه اجرای این پروژه تو پروتئوس مشگل دارم
وقتی ولتاژ 5 ولت رو بهش میدم شروع میکنه ستاره نشون بده و ولتاژ های پایین تر از 2.5 هم فقط مینویسه down
ممنون میشم راهنمایی کنید
مهمان
شما گفتیدباید به پایه های PA1 و PA2 ولتاژ DC متغیر از 0 تا 5 ولت داد
من این کارو کردم ولی با تغییر ولتاژ از 0 تا 5 ولت توی پروتئوس اعداد از 0 تا 400 تغییر میکنن و با رسیدن به 5 ولت ستاره نشون میده
مهمان
سلام اقا مهدی ببخشید چطور میشه با جوی استیک رله رو کنترل کرد
نویسنده این مطلب
سلام-بعضی جوی استیک ها کلید فشاری هم دارن – ولی خب اگه میخوای با خود جوی استیک این کارو کنی – مثلا بالا پایین رفتن جوی استیک.
شما با adc جوی استیک رو میخونی – مقدار بین 0 تا 1023 – مقدار وسط چیزی حدود 512 میشه که جوی استیک رو هنوز حرکت ندادیم – شما میای یه محدوده تغییر میکنی – مثلا از 600 بیشتر شد مقداری که میخونی رله روشن بشه – و از 400 کمتر شد – رله رو خاموش کنه – یه چی تو این مایه ها – حالا باز بستگی به نیازت داره – وگرنه سوالت خیلی کلی بود.
مهمان
سلام
اقا من یک ماژول جوی استیک دارم،میخوام حرکت چرخشی به سمت چپ و راستو باهاش تشخیص بدم در عین حالی که از چپ و راست و بالا پایینشم استفاده میکنم.
میخواستم بدونم به نظرت باید چیکار کنم که میکروی باونه تشخیص بده این حرکت چرخشیو؟! مرسی
نویسنده این مطلب
سلام
تو مطلب پس چیرو من راه انداختم!؟!
مهمان
سلام اول از همه ممنون که جوابمو دادین.
دوم اینکه یکم روی اخلاقت کار کن توی فروم های دیگه هم دیدم که با بقیه هم بد صحبت میکنی، کسی که پیرو خط امام هستش باید اخلاقیاتشم مثل امام (ره) باشه.
منظورم منو اگه متوجه نشدین قشنگ بگو متوجه حرفت نشدم نه اینکه تیکه بندازی،منظور من اینه که میخوام دَوَران جوی استیک رو در جهت حرکت عقربه های ساعت و در جهت پاد ساعتگرد تشخیص بدم.
یعنی هم میخوام در جهت محور X ها و هم در جهت محور Y ها و هم چرخش جوی استیک رو در جهت عقربه های ساعت و در جهت عکس عقربه های ساعت تشخیص بدم.
میخوام به صورت ولوم کار کار کنه چرخش جوی استیک.
ممنون میشم کمک کنید.
مهمان
سلام برادر خسته نباشی
جوی استیک حالت عادی ۱۳۸ هست اگر فشار بدم به سمت چپ ۲۵۵ میشه و به سمت راست فشار بدم عدد صفر نشون میده
چه طوری میتونم به تایمر ocr1a متغیر تعریف کنم؟؟؟
مثلا وقتی به سمت راست فشار دادم دور موتور به سمت راست سرعت از صفر به صد بشه یعنی بتونم سرعت دور موتور کم و زیاد کنم؟
نویسنده این مطلب
سلام
خب مقدار جوی استیکو میدی به موتور دیگه – در حالت عادی که جوی استیک در وسط هستش – موتور با سرعت عادی میچرخه و به راست فشار بدی موتور وایمیسته و به چپ فشار بدی با سرعت تمام میچرخه – شما مقدار جوی استیکو فقط باید بدی به موتور – حالا موتور چطور میچرخه؟ با pwm – حالا اگه pwm ات ۸ بیتی بود که مقدار جوی استیکو مستقیما میدی بهش وگرنه مثلا مقدار جوی استیک بین ۰-۲۵۵ هستش ولی مقدار pwm بین ۰-۱۰۲۳ هستش که با یه ضرب و تقسیم مقدار جوی استیک رو به محدوده ۰-۱۰۲۳ میبری و بعد میدی به pwm – حالا راه اندازی pwm چطوریه؟ مثال و پروژش تو نت هستش
مهمان
سلام.
من یک پرو زه با میکروplcو یک ال سی دی گرافیکی یک بازی در ست کردم.
چجوری بفرستم.
نویسنده این مطلب
سلام – شماره موبایت رو بده بهت بگم
مهمان
سلام. خدا قوت
ببخشید میخواستم بپرسم که شماتیک ماژول جوی استیک توی کتابخانه های نرم افزار التیوم دیزاینر هم وجود ندارد؟ خودمون باید طراحیش کنیم؟
نویسنده این مطلب
سلام – نمیدونم باید بگردین – طبیعتا اگه پیدا نشد باید خودتون طراحی کنید دیگه.
مهمان
سلام داداش
احیانا پروژه مسیریاب با کدویژن دارید برامون بفرستید///////
هرچی توی نت سرچ کردم چیزی پیدا نشد/////
فدای تو
نویسنده این مطلب
سلام
نه
ولی میتونم کدش رو بنویسم – مشکل اعظم! من ساخت بندش هستش
کسی باشه مشکل بدنه رو برام حل کنه، کدش رو براش مینویسم.
اگه تهرانی بیا با هم درستش کنیم – بدنه از تو – کد از من.
مهمان
سلام آقا مهدی دمت گرم
چطوری میشه دسته بازی کامپیوتر رو هک کرد مخصوصا جوی استیکاشو؟؟؟دسته PS و بلدم ولی مال من USB هست
نویسنده این مطلب
سلام
از لاجیک آنالیزر استفاده کن ببین دیتای خروجی اون وسیله به چه صورته – تو نت هم بگردی باید پیدا بشه
مهمان
در واقع می خوام کلیدا و جوی استیکا رو با میکرو تشخیص بدم مثلا وقتی L1 زدم میکرو یه کاری رو انجام بده یا مثلا وقتی جوی استیک و بالا دادم به همون اندازه که بالا رفت میکرو اونو تشخیص بده
نویسنده این مطلب
میدونم – راهش اونی بود که گفتم – ساده ترش اینه که تو نت بسرچی
مهمان
سسگلام،من این پروژه رو به یه شکلی دیگه راه انداختم تقریبا کار میکنه ،لینک ویدعوش و کدش رو میفرستم ،اما یه مشکل عجیب خوردم و اونم اینه که ،زمانی که من پایه gnd رو وصل میکنم ،کلا مدار کار میکنه (تو فیلم اخراش که سیم سفیده رو وصل میکنم میتونی ببینیش)ایده ای ندارین که چرا این جوری میشه؟
http://s1.picofile.com/file/8264572968/joystick.mp4.html
میدونم که دقیق نیست روشن شدن ال ای دی هام
اونا رو به قولی باید کانفیگ کنم بعدا
http://s2.picofile.com/file/8264573442/joystick.txt.html
ممنون
نویسنده این مطلب
سلام
دقیقا متوجه نشدم – هیچی
یه موردی – پایه Push رو لازم نیس با Adc ّخونی – با پایه i/o هم بخونی کافیه
مهمان
سلام.
شما پایه۳۰رو به + نزنید فقط ۱۰+۱۱———————-چون از کار میفته مدارت برا من خیلی این اتفاق افتاده.
و انگار تو مدارت از اداپتور استفاده کرده بودی?همیشه یه اداپتور ۱۲ ولت۲امپری با رگولاتور استفاده کن.
۳۰+۳۱-منبعت اتصال =میکرو=^-^=جوی استیک=^———————^ پر!
مهمان
سلام
دوست عزیز ماژول را خریدم
طوری برنامه ریختم که میکرو کل تغییرات را بین ۰ تا ۲۰۰۰ نشان دهد
موقعی که به محور دست نمی زنیم میکرو ADC را باید عدد هزار بخواند و وقتی اهرم را به سمت چپ فشار می دهیم
باید عدد نزدیک به صفر نشان دهد و در جهت خلاف آن تکان دهیم عدد نزدیک ۲۰۰۰ نشان بدهد
اما مال من در یک جهت چپ عدد نزدیک ۲ نشام می دهد و در حالتی که به محور دست نمی زنیم عدد ۱۹۵۰ نشان می دهد
و در جهت راست عدد ۲۰۰۰ نشان می دهد
فهمیدی داد اش؟
مشکل چیه؟
ماژول خرابه؟؟
مهمان
من ماژول را خریدم
تو حالت عادی ۲٫۵ ولت نیست نزدیک ۴٫۵ ولت نشون میده چرا؟
خاهشا کمکم کن
نویسنده این مطلب
متوجه نشدم
مهمان
دمت گرم دستت طلا
مهمان
سلام و خسته نباشید
یه سوال داشتم …
{{{***
اگه چند تا کلید داشته باشیم میتونیم یه سر همه کلید ها رو به هم وصل کنیم و به زمین یا منفی منبع وصل کنیم و سر دیگر کلید ها رو برای قطع و وصل به بار وصل کنیم. مثل عکس پایین
http://www.uplooder.net/img/image/44/5d92cb76b6b4ca089aff2fdf636853f9/1.jpg
***}}}}
یه چیز رو من اینجا نفهمیدم…؟؟؟ اونم اینکه چطور میشه از این جو استیک برای بالا و پایین یا چپ و راست استفاده کرد
یعنی اگه ما سر منفی همه رو به هم وصل کنیم باید یک سر از کلید باقی بمونه و دوسر هم برای بالا و پایین (یک سر برای بالا و یک سر برای پایین) و دو سر هم برای چپ و راست (یک سر برای چپ و یک سر برای راست) اما اینجا یه سر میمونه از هر کدوم چطور عمل بالا و پایین با یکسر و چپ و راست با یکسر دیگه انجام میشود ؟؟؟؟؟؟؟؟
در عکس پایین دو سر میمونه ولی با مولتی متر حالت اتصال کوتاه چک کردم جواب نگرفتم
http://www.uplooder.net/img/image/51/6661300fbca5895bcadf693b8f0bd085/2.jpg
راستی رشته من برق قدرت هست علاقه زیادی به الکترونیک دارم و همچنین سوال های زیادی!!!
ممنون میشم جواب سوالم رو بدین
نویسنده این مطلب
سلام
سوال اولت>>>میشه فقط مقاومت پول آپ(پول دان)فراموش نشه
سوال دوم>>>نحوه کار جوی استیک این طوره که از ۲ تا پتانسیومتر و یه باتن(کلید) تشکلیل شده…..که با تغییر ولتاژ چپ و راست بودن رو میفهمیم..
سوال سوم >>> یه سوال : این جوی استیک این دسته هه چند تا پایه داره؟؟؟؟۳ تا یا ۹ تا؟؟؟؟
مهمان
خب من فکر کردم راهی هست که این ماژول رو به کتابخونه پروتئوس معرفی کنیم که من نمیدونم!!!
مهمان
ورژن 7.10 رو دارم، فکر میکنم با ماژول جوستیک مشکل داره
نویسنده این مطلب
وایییییییییی خدا…..
من فک کردم تو میگی…
.
.
.
.
بابا این فالش تو پرتئوس اجرا نمیشه و من “ماژول جوستیک” رو درست کردم تو پروتئوس تا ملت مدار پروژه رو ببینن…..مدار که پلی (اجرا ) نمیشه که….
چون پروتئوس این ماژ<ل رو شبیه سازی نکرده و تو کتابخونش نداره من مجبور شدم یه قطعه جدیدی بسازم تا ملت مدار پروژه رو ببینم.....
مهمان
سلام، ممنون از سایت خوبتون، فایل پروتئوسش رو نمیتونم پلی کنم، ارور میده، دلیلش چیه؟
نویسنده این مطلب
سلام
احتمالا مشکل از ورژن پروتئوس هستش…..رو ورژن ۷ تست کن
مهمان
ولی با یکم طراحی سخت افزاری میشه بدون ADC هم راش انداخت.