PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : راهنمایی برای انتخاب و برنامه نویسی ماژول شتاب



mode
02-04-2014, 13:51
بنام خدا !

دوستان و اساتید عزیز بنده به تازگی با الکترونیک و سایتتون آشنا شدم و برنامه نویسی مقدماتی رو یاد گرفتم !

بنده به دنبال ساخت مداری هستم که هنگامی که دستمون یه لحظه به شتاب مثلا 5g (در سه محور) رسید مدار ، خروجی (مثلا یه ای ای دی) رو 1 کنه ! یعنی یه مدار درون دست و یه مدار روی میز بوده و این دومدار با همدیگه بدون سیم در ارتباط باشن !

در این مورد چند سوال داشتم !

1- چه ماژول 3محوره ای برای انجام این کار خوبه !؟ برنامه نویسیش برای انجام چنین کاری پیچیدس ؟

2-چطور میتونم اطلاعات رو از یه میکرو (مدار درون دست) به میکرو دیگه (مدار خروجی) بدون سیم منتقل کنم ؟

3-از چه ماژولی میشه برای ارسال پیامک با متن فارسی به شماره ی دلخواه (یکطرفه) ارسال کرد ؟ برنامش پیچیدس ؟

ببخشید در همین ابتدا اینقدر سوال دارم :)

Doloop
02-04-2014, 14:32
سلام

1 ) شتاب سنج من ADXL345 و ADXL330 رو گرفتم ولی فرصت نکردم باهاشون کار کنم

2 ) برای ارتباط بیسیم هم NRF24L01 رو پیشنهاد میکنم که توی همین سایت هم جستجو کنید طریقه راه اندازیش توضیح داده شده (لینک های زیر رو کامل مطالعه کنید)

You can see links before reply

You can see links before reply

You can see links before reply

You can see links before reply

3 ) برای این هم ماژول SIM900 هست که درمورد ارسال پیامک فارسیش توی یکی از انجمن ها بحث شده بود :wink:

You can see links before reply

موفق باشید ...

mode
02-04-2014, 21:27
ممنون بابت راهنماییتون !

چند سوال :
1- منظور از راه انداز در ماژول چیه ؟ منظور برنامه ایه که به میکروی متصل به ماژور داده میشه ؟

2- راه انداز همیشه یه برنامه ی ثابت هستش ؟

ممنون

1nafar
02-04-2014, 23:18
1- منظور از راه انداز در ماژول چیه ؟ منظور برنامه ایه که به میکروی متصل به ماژور داده میشه ؟

سلام
منظور برنامه ی نوشته شده برای میکروکنترلر هست .
معمولا ماژول ها به صورت استاندارد داده های اندازه گیری شده رو به صورت ولتاژ ، پالس و... یا از طریق یکی از پروتکل های ارتباطی نظیر uart یا spi یا ... به خروجی تحویل میدن .
برای اندازه گیری این پارامتر ها شما باید از یک میکروکنترلر استفاده کنید و با توجه به خروجی ماژول برای میکروکنترلر برنامه بنویسید ( اطلاعات بیشتر در مورد نحوه ی نوشتن برنامه در دیتاشیت ماژول یا سنسور وجود داره .


2- راه انداز همیشه یه برنامه ی ثابت هستش ؟

اره .

mode
02-04-2014, 23:29
سلام
منظور برنامه ی نوشته شده برای میکروکنترلر هست .
معمولا ماژول ها به صورت استاندارد داده های اندازه گیری شده رو به صورت ولتاژ ، پالس و... یا از طریق یکی از پروتکل های ارتباطی نظیر uart یا spi یا ... به خروجی تحویل میدن .
برای اندازه گیری این پارامتر ها شما باید از یک میکروکنترلر استفاده کنید و با توجه به خروجی ماژول برای میکروکنترلر برنامه بنویسید ( اطلاعات بیشتر در مورد نحوه ی نوشتن برنامه در دیتاشیت ماژول یا سنسور وجود داره .

اره .

ممنون بابت پاسختون !

1-راه انداز ماژول که به میکرو داده میشه برای زاویه هست یا شتاب ؟ بنده میخوام وقتی به شتاب خاصی در هر محور رسید یه خروجی رو بده !
بنده برای این کار باید کل راه اندازو به میکرو بدم یا قسمتی از اون رو ؟

ممنون

sadeghbakhshi
03-04-2014, 00:05
سلام
راه انداز یک برنامه هست
ممکنه این برنامه با استفاده از کتابخانه ای که توسط کامپایلر ارائه شده
نوشته بشه یا این که یک کتابخانه نوشته شده باشه و در اینترنت منتشر بشه
مثل کتابخانه ی ff.h
در غیر این صورت شما باید توسط اطلاعات یوزمنوال یا دیتاشیت اون
دیوایس برنامه ی راه اندازی به اون شکلی رو که می خواهید بنویسید
کتابخانه های اماده هم از روی اطلاعات یوزرمنوال و دیتاشیت نوشته شدن

arvin2009
03-04-2014, 00:28
برنامه نوشتن برای یک ماژول تنها طریقه دریافت و چگونه دریافت کردن نیست.ماژولها هم دارای رجستر هستند که با صفر و یک کردنشون باید مژول رو اونجور که میخوای تنظیم کنی. این اطلاعات در یوزر منوال هر ماژول دقیق توضیح داده شده که باید اونارو به کد تعریف کرد و در فایلی به اسم کتابخانه یا هدر دخیر کرد.بعد وقتی میخوای کار کنی این فایل و مثلا کتابخانه i2c رو به پروزه اضافه میکنی و اطلاعات مازول را با i2c میگیری.
adxl345 گذینه خوبی هست و کتابخانه هاش موجوده.راحت تر بخوای میتونی از نوع انالوگش استفاده کنی

mode
03-04-2014, 01:47
ببخشید بعضی از اصطلاحات برام نامفهمونه !

میشه یه نمونه ساده از برنامه یا یه پروژه بسیار ساده رو بهم معرفی کنید چون بنده راه انداز330adxl به زبان بیسیک رو دانلود کردم و برام نامفهمومه !

نمیدونم قسمتی رو که بنده باهاش کار دارم کجاش پیدا کنم !

ممنون میشم مثالی ساده برام بیارید !

Doloop
03-04-2014, 02:44
سلام

هنوز شما نگفتید با چه میکرویی میخواهید کار کنید ؟؟ با چه کامپایلری ؟؟ یا چه زبونی ؟؟؟
ولی پیشنهاد من این هست که نمونه کد به زبان سی پیدا کنید :0013:

اما در مورد برنامه نویسیش باید عرض کنم اون فایل یا هدر راه انداز در اصل برای هر قطعه مثلا ADXL345 به طور مجزا نوشته میشه که شامل تمام قابلیت های اون قطعه هست وشما قرار نیست بیای قسمتی از کد رو کپی کنید توی برنامتون و الباقی رو حذف کنید بلکه تمام کد های فایل راه انداز سر جاشه اما ما فقط قسمت هایی از اون کد هارو که مورد استفادمونه رو با استفاده از دستورات ، فراخوانی میکنیم ... در غیر این صورت باید یک کتابخونه مجزا و متناسب با نیازتون برای اون قطعه بسازید
یه مثال ساده میزنیم :
مثلا توی کتابخونه راه انداز microsd هم دستوراتی برای نوشتن داخل رم هست هم دستوراتی برای خوندن از رم فرض کنید من فقط قصد خوندن از رم رو دارم و به نوشتن توی رم اصلا نیازی ندارم حالا دلیل نمیشه بیام دستورات مربوط به نوشتن توی رم رو از کتابخونه راه انداز حذف کنم ، اونا هم توی کتابخونه باقی میمونن اما من ازشون استفاده نمیکنم :wink:
امیدوارم مفهوم رو درک کرده باشید ...

اگر شما یکم بیشتر از میزان آشناییتون تو زمینه برنامه نویسی و کنترلرها و... رو بفرمائید بهتر میتونیم کمکتون کنیم :0013:

mode
03-04-2014, 03:12
سلام

هنوز شما نگفتید با چه میکرویی میخواهید کار کنید ؟؟ با چه کامپایلری ؟؟ یا چه زبونی ؟؟؟
ولی پیشنهاد من این هست که نمونه کد به زبان سی پیدا کنید :0013:

اما در مورد برنامه نویسیش باید عرض کنم اون فایل یا هدر راه انداز در اصل برای هر قطعه مثلا ADXL345 به طور مجزا نوشته میشه که شامل تمام قابلیت های اون قطعه هست وشما قرار نیست بیای قسمتی از کد رو کپی کنید توی برنامتون و الباقی رو حذف کنید بلکه تمام کد های فایل راه انداز سر جاشه اما ما فقط قسمت هایی از اون کد هارو که مورد استفادمونه رو با استفاده از دستورات ، فراخوانی میکنیم ... در غیر این صورت باید یک کتابخونه مجزا و متناسب با نیازتون برای اون قطعه بسازید
یه مثال ساده میزنیم :
مثلا توی کتابخونه راه انداز microsd هم دستوراتی برای نوشتن داخل رم هست هم دستوراتی برای خوندن از رم فرض کنید من فقط قصد خوندن از رم رو دارم و به نوشتن توی رم اصلا نیازی ندارم حالا دلیل نمیشه بیام دستورات مربوط به نوشتن توی رم رو از کتابخونه راه انداز حذف کنم ، اونا هم توی کتابخونه باقی میمونن اما من ازشون استفاده نمیکنم :wink:
امیدوارم مفهوم رو درک کرده باشید ...

اگر شما یکم بیشتر از میزان آشناییتون تو زمینه برنامه نویسی و کنترلرها و... رو بفرمائید بهتر میتونیم کمکتون کنیم :0013:

واقعا ممنونم بابت راهنماییتون خیلی از سوالاتم رو پاسخ دادید ! اجرتون با حضرت فاطمه (ع) !:0013:

والا بنده تحصیلاتی در این زمینه ندارم و هنوز محصل دوره ی دبیرستانم (ریاضی3) ولی از بچگی کتب الکترونیک رو میخوندم و تقریبا با قطعات آشنایی دارم و در بستن مدارهای ساده و تحلیل این مدارات با میکرو مشکلی ندارم! میکرویی که بنده باهاش آشنایی دارم و کار کردم atmega8 هستش و از زبان بیسیک وبسکام استفاده میکنم !
برنامه نویسی رو هم به تازگی حدودا یکی دو ماهی میشه شروع کردم و تو این مدت دستورات ابتدایی رو تقریبا یاد گرفتم (if و دستور دادن به ال سی دی و انتخاب متغییر و ...) !!!
از اونجایی که بنده در زمینه ی هوافضا فعالیت میکنم خواستم با یادگیری مفاهیم کلی برنامه نویسی آشنا بشم و از اون در این زمینه بهره ببرم !

هدفی که الآن دارم رو هم در پست 1 مطرح کردم ولی پاسخ ها برام نسبتا سنگین بود !

اگه بتونید من رو در رسیدن به هدفم کمک کنید واقعا ممنونتون میشم !

sadeghbakhshi
03-04-2014, 04:00
سلام :hi:
اول از همه پیشنهاد میکنم روی زبان سی سرمایه گذاری کنید تا بیسیک
با کامپایلرهایی مثل اتمل استادیو یا کدویژن و . . .
یا استفاده از سخت افزار و نرم افزار اردونیو که خیلی سریع راه میوفتید
در مورد سوالتون هم
فرض کنید شما وارد یه کتابخانه میشید که مال شما هست
توی اون کتابخانه شما از یکسری کتاب مورد نیازتون استفاده میکنید
حالا چون ممکنه به بقیه ی کتب نیازی نداشته باشید آیا اون کتبی که نیاز ندارید رو دور میریزید؟
در برنامه نویسی هم اون کتب مثال بالا نقش توابع رو دارند
شما یک فایل رو هنگام برنامه نویسی به پروژه اضافه میکنید( همون کتابخانه ی که توی پست ها قبل من و بقیه ی بروبچ توضیح دادند)
توی این فایل مثلا 10 تا تابع داره
که شما 5 تا از توابع رو استفاده می کنید
حالا این 5 توابع که استفاده نشده رو نه پاک میکنید و نه اون 5 تا دیگه رو در جایی کپی میکنید
در مورد ماژول هم شما باید یکسری اقدامات انجام بدید
تا این ماژول اون طوری که شما می خواهید کار کنه و اطلاعات خروجی جوری باشه که به کار شما بخورد
که در اصطلاح میگن کانفیگ کردن یعنی پیکربندی کردیم
شما باید از طریق اطلاعات دیتاشیت (برگه ی اطلاعاتی که از طرف تولید کننده منتشر میشه )
از جزئیات کار مطلع بشید که چطوری باید اون ماژول یا دستگاه مورد نظرتون رو پیکربندی کنید
حالا دقیقا کجای کار رو متوجه نمیشی؟
راستی شما با پروتکلهای ارتباطی کار کردید؟(پروتکل میشه یه چیزی مثل ارتباط شبکه -usb -. . . )
برای استفاده از این ماژول باید حداقل با پروتکلهایی مثل spi یا i2c کار کرده باشید
اگرر این طور نیست پیشنهاد میکنم برای شروع از adxl 330 استفاده کنید که خروجی اون انالوگ هست

mode
03-04-2014, 07:08
توضیحاتتون بسیار مفید بود !
نه بنده با پروتکل ها کار نکردم و اطلاعات خاصی هم در این باره ندارم !
چشم حتما از این ماژول استفاده میکنم !

ببخشید یه سوال دیگه برام پیش اومد !
اگه بنده بخوام از ماژول sim900 یا nrf24l01 هم استفاده کنم باید کار با چنین پروتکل هایی رو بلد باشم ؟؟؟

sobhan537
03-04-2014, 13:32
ببخشید یه سوال دیگه برام پیش اومد !
اگه بنده بخوام از ماژول sim900 یا nrf24l01 هم استفاده کنم باید کار با چنین پروتکل هایی رو بلد باشم ؟؟؟
آره دیگه، هر ماژول یا قطعه جانبی یک پروتکلی داره... مثلا پروتکل sim900 پروتکل usart هستش.

Doloop
03-04-2014, 14:23
سلام

مهندس قصد دلسرد کردنتون رو ندارم ولی این پروژه ای که شما دست گرفتید براتون سنگین هست ولی از اونجایی که رشتتون برق یا الکترونیک و غیره نیست و چنین علاقه ای داشتید که تا اینجا پیش رفتید مطمئنن میتونید انجامش بدید
ولی نیازه که یکسری پیش زمینه هایی رو بدست آورده باشید ... :0013: مثل آشنایی با پروتکل هایی چون SPI و USART و ...

به قول معروف جلوی ضرر رو هر وقت بگیری منفعته ... :wink: نمیدونم الان شما زمان این رو داری که زبان برنامه نویسیتون رو به سی تغیر بدید یا نه ولی بنده به شما قول میدم این راه پشیمونی نخواهد داشت :wink:
خود بنده هم با بیسیک شروع کردم و بعد به سی ختم کردم :mrgreen: ناراحت نیستم که بیسیک رو هم یاد گرفتم اما زمانی رو که برای یادگیری بیسیک گذاشتم رو برای سی میزاشتم خیلی بهتر بود ...

حالا هم دیر نیست و زبان سی هم زیاد سخت نیست (لااقل برای شمایی که بیسیک رو بلدی سخت نخواهد بود)
به نظر من حتی اگر این پروژه براتون منفعت مالی هم داره فعلا بزاریدش کنار و بعد از طی مراحل پائین انجامش بدید ...
بنده پیشنهاد میکنم :

1) برید دنبال یادگیری زبان سی
2) کامپایلرتون رو هم تغیر بدید و یکی از این هارو انتخاب کنید ( اتمل استادیو یا کدویژن )
3) بعد با چندتا پروتکل بخصوص با SPI و USART و I2C کار کنید تا با خم و چم کارشون آشنا بشید
4) با سایر امکانات کنترلرتون هم آشنا بشید مثل ( ADC و Timer و DAC و ... )
4) حالا میتونید نه تنها همین پروژه ارسال پیامک فارسی با sim900 و ارتباط بیسیم با NRF24L01 و راه اندازی شتاب سنج بلکه هر پروژه دیگه ای باشه رو انجام بدید اونم با خیال راحت :0013:

حالا به نظر من شما خیلی راحت تر از قبل میتونید برای میکرو کنترلر های با هسته ARM هم برنامه نویسی کنید :0013:

اینها فقط عرض کردم که بگم اگر منی که تمام این راه ها رو رفتم الان جای شما بودم همین مسیر رو میرفتم

زمان یادگیری اینها هم زیاد نیست برای شما که بیسیک رو بلدین دو هفته میتونید با مفاهیم کلی زبان سی آشنا بشید
کامپایلر هم که هم توی نت آموزش براش زیاده هم یادگیریه کلیاتش زیاد سخت نیست ، خیلی زمان بخواد یک هفته (برای حداقل نیاز , نوشتن برنامه و کامپایل کردن و پروگرم کردن)
در مورد آشنایی با پروتکل ها هم با وجود این همه منابع توی سطح نت خیلی بگیم برای هر پروتکل به شرط یادگیری کامل یک هفته زمان نیازه

در کل عرض کنم این همون یک شبه ره صد ساله رفتن هست شک نکن ، شما خودت مقایسه کن بنده تمام این مراحل رو توی سه یا چهار سال طی کردم حالا شمایی که میتونید توی حداکثر 6 ماه همه این مراحل رو یاد بگیرید آیا همون نمیشه :wink:

هر مشکلی هم داشته باشی میتونی رو کمک ما حساب باز کنی :0013:
باز تصمیم نهایی با خودتون هست و ما برات آرزوی موفقیت میکنیم ...

mode
03-04-2014, 14:34
آره دیگه، هر ماژول یا قطعه جانبی یک پروتکلی داره... مثلا پروتکل sim900 پروتکل usart هستش.
من یه مقاله در این رابطه دانلود کردم ولی خیلی برام سنگین و نامفهومه ! میشه مختصرا و به صورت قابل فهم اندکی توضیح بدید یا آدرس منبعی رو قرار بدید ؟
یعنی در واقع نمیفهمم پروتکل مثل راه انداز و برنامس که به میکرو داده میشه ؟ یا ...

ممنون

sobhan537
03-04-2014, 14:50
من یه مقاله در این رابطه دانلود کردم ولی خیلی برام سنگین و نامفهومه ! میشه مختصرا و به صورت قابل فهم اندکی توضیح بدید یا آدرس منبعی رو قرار بدید ؟
یعنی در واقع نمیفهمم پروتکل مثل راه انداز و برنامس که به میکرو داده میشه ؟ یا ...

ممنون
پروتکل یعنی نحوه ارتباط اون قطعه با قطعات دیگه. چندنوع پروتکل داریم؛ usart, spi, i2c, usb, ethernet, can, ... . شما میتونی با هر ماژول یا قطعه ای از طریق یکی از اینا ارتباط برقرار کنی.

مثال: شما پروتکل ها رو راه ارتباطی فرض کن. مثلا جاده دوطرفه، جاده یک طرفه، اتوبان، جاده خاکی و ... . شما بخوای بری به یک شهر باید از طریق یکی از این جاده ها بری. مثلا بین دو شهر جاده دوطرفه هست و شما مجبوری حتما از اون جاده بری، یعنی مجبوری از اون پروتکل استفاده کنی. و قوانین مربوط به اون جاده رو رعایت کنی. پروتکل هم دقیقا مثل همینه...

mode
03-04-2014, 14:59
سلام

مهندس قصد دلسرد کردنتون رو ندارم ولی این پروژه ای که شما دست گرفتید براتون سنگین هست ولی از اونجایی که رشتتون برق یا الکترونیک و غیره نیست و چنین علاقه ای داشتید که تا اینجا پیش رفتید مطمئنن میتونید انجامش بدید
ولی نیازه که یکسری پیش زمینه هایی رو بدست آورده باشید ... :0013: مثل آشنایی با پروتکل هایی چون SPI و USART و ...

به قول معروف جلوی ضرر رو هر وقت بگیری منفعته ... :wink: نمیدونم الان شما زمان این رو داری که زبان برنامه نویسیتون رو به سی تغیر بدید یا نه ولی بنده به شما قول میدم این راه پشیمونی نخواهد داشت :wink:
خود بنده هم با بیسیک شروع کردم و بعد به سی ختم کردم :mrgreen: ناراحت نیستم که بیسیک رو هم یاد گرفتم اما زمانی رو که برای یادگیری بیسیک گذاشتم رو برای سی میزاشتم خیلی بهتر بود ...

حالا هم دیر نیست و زبان سی هم زیاد سخت نیست (لااقل برای شمایی که بیسیک رو بلدی سخت نخواهد بود)
به نظر من حتی اگر این پروژه براتون منفعت مالی هم داره فعلا بزاریدش کنار و بعد از طی مراحل پائین انجامش بدید ...
بنده پیشنهاد میکنم :

1) برید دنبال یادگیری زبان سی
2) کامپایلرتون رو هم تغیر بدید و یکی از این هارو انتخاب کنید ( اتمل استادیو یا کدویژن )
3) بعد با چندتا پروتکل بخصوص با SPI و USART و I2C کار کنید تا با خم و چم کارشون آشنا بشید
4) با سایر امکانات کنترلرتون هم آشنا بشید مثل ( ADC و Timer و DAC و ... )
4) حالا میتونید نه تنها همین پروژه ارسال پیامک فارسی با sim900 و ارتباط بیسیم با NRF24L01 و راه اندازی شتاب سنج بلکه هر پروژه دیگه ای باشه رو انجام بدید اونم با خیال راحت :0013:

حالا به نظر من شما خیلی راحت تر از قبل میتونید برای میکرو کنترلر های با هسته ARM هم برنامه نویسی کنید :0013:

اینها فقط عرض کردم که بگم اگر منی که تمام این راه ها رو رفتم الان جای شما بودم همین مسیر رو میرفتم

زمان یادگیری اینها هم زیاد نیست برای شما که بیسیک رو بلدین دو هفته میتونید با مفاهیم کلی زبان سی آشنا بشید
کامپایلر هم که هم توی نت آموزش براش زیاده هم یادگیریه کلیاتش زیاد سخت نیست ، خیلی زمان بخواد یک هفته (برای حداقل نیاز , نوشتن برنامه و کامپایل کردن و پروگرم کردن)
در مورد آشنایی با پروتکل ها هم با وجود این همه منابع توی سطح نت خیلی بگیم برای هر پروتکل به شرط یادگیری کامل یک هفته زمان نیازه

در کل عرض کنم این همون یک شبه ره صد ساله رفتن هست شک نکن ، شما خودت مقایسه کن بنده تمام این مراحل رو توی سه یا چهار سال طی کردم حالا شمایی که میتونید توی حداکثر 6 ماه همه این مراحل رو یاد بگیرید آیا همون نمیشه :wink:

هر مشکلی هم داشته باشی میتونی رو کمک ما حساب باز کنی :0013:
باز تصمیم نهایی با خودتون هست و ما برات آرزوی موفقیت میکنیم ...

والا اگه ما مهندس باشیم شما چی هستید ؟؟؟

چشم بنده از همین الآن یادگیری زبان سی رو شروع کردم !

بعد از کدویژن استفاده کنم یا نرم افزار دیگه ای ؟؟؟

میشه یه منبع خوب و ساده برای یادگیری و کار با پروتکل معرفی کنید ؟

ممنون

1nafar
03-04-2014, 21:52
سلام
کدویژن کامپایلر خوبی هست .
بعد از شروع کار برنامه نویسی و کار با کامپایلر کد ویژن به تدریج با نحوه ی کار با پروتکل ها آشنا میشید .

1nafar
03-04-2014, 21:52
سلام
کدویژن کامپایلر خوبی هست .
بعد از شروع کار برنامه نویسی و کار با کامپایلر کد ویژن به تدریج با نحوه ی کار با پروتکل ها آشنا میشید .

mode
04-04-2014, 01:19
ببخشید در این راه انداز متعلقه به adxl 330 و همونطور که گفته شد خروجیش آنالوگه !
میشه راهنماییم کنید کدوم قسمت مربوطه به مقدار دهی سرعت و شتاب ؟؟؟

ممنون
'=====================================
$regfile = "m8def.dat"
$crystal = 4000000
'external crystal
'===================================

$hwstack = 30 '200 ' default use 32 for the hardware stack
$swstack = 90 '250 ' default use 10 for the SW stack
$framesize = 90
'==========================================
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Pinb.6 , E = Pind.4 , Db4 = Pind.3 , Db5 = Pind.2 , Db6 = Pind.1 , Db7 = Pind.0
Cursor Off
Cls

'============================================
Config Adc = Single , Prescaler = Auto , Reference = Aref 'Internal_2.56
Start Adc
'============================================
Config Pinc.2 = Output
_st Alias Portc.2

Config Pinc.0 = Output
Led Alias Portc.0

Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Input
Config Pind.7 = Input

Key_x Alias Pind.7
Key_y Alias Pinb.0
Key_z Alias Pinb.1

Key_reset Alias Pinb.2
'==============================================
Dim X(5) As Long
Dim Y(5) As Long
Dim Z(5) As Long


Dim A As Byte
Dim Longg As Long


Dim Singlee As Single
Dim Stringg As String * 10

Dim X_manfi As Long
Dim Y_manfi As Long
Dim Z_manfi As Long

'============================================
Enable Interrupts



X_manfi = 0
Y_manfi = 0
Z_manfi = 0

'============================================
Locate 1 , 6
Lcd "Hello"
Cls

_st = 0

Main:
If Key_reset = 0 Then
Cls
Lcd "RESET X,Y,Z"
X_manfi = 0
Y_manfi = 0
Z_manfi = 0
Do : Loop Until Key_reset = 1
End If
'=====================================
Longg = 0

'------------------------------
For A = 1 To 100
X(1) = Getadc(5)
Waitus 100
Longg = Longg + X(1)
Next

X(1) = Longg / 100
'-----------------------------
Longg = 0
For A = 1 To 100
X(2) = Getadc(5)
Waitus 100
Longg = Longg + X(2)
Next

X(2) = Longg / 100
'-----------------------------
Longg = 0
For A = 1 To 100
X(3) = Getadc(5)
Waitus 100
Longg = Longg + X(3)
Next

X(3) = Longg / 100
'-------------------------------
Longg = 0
For A = 1 To 100
X(4) = Getadc(5)
Waitus 100
Longg = Longg + X(4)
Next

X(4) = Longg / 100
'------------------------------

X(5) = 0

X(5) = X(1)
X(5) = X(5) + X(2)
X(5) = X(5) + X(3)
X(5) = X(5) + X(4)

X(5) = X(5) / 4
X(5) = X(5) - X_manfi
X(5) = X(5) - 10

'-------------------------------
If Key_x = 0 Then
X_manfi = X(5)
Locate 1 , 1 : Lcd "X= --- "
Do : Loop Until Key_x = 1
End If


Show_x:
Locate 1 , 1
Lcd "X=" ; X(5) ; " " 'Stringg ; " "

'================================================= ==============================
'================================================= ==============================
'================================================= ==============================
'================================================= ==============================

Longg = 0
For A = 1 To 100
Y(1) = Getadc(4)
Waitus 100
Longg = Longg + Y(1)
Next

Y(1) = Longg / 100
'----------------------------
Longg = 0
For A = 1 To 100
Y(2) = Getadc(4)
Waitus 100
Longg = Longg + Y(2)
Next

Y(2) = Longg / 100
'----------------------------
Longg = 0
For A = 1 To 100
Y(3) = Getadc(4)
Waitus 100
Longg = Longg + Y(3)
Next

Y(3) = Longg / 100
'----------------------------
Longg = 0
For A = 1 To 100
Y(4) = Getadc(4)
Waitus 100
Longg = Longg + Y(4)
Next

Y(4) = Longg / 100
'----------------------------

Y(5) = 0

Y(5) = Y(1)
Y(5) = Y(5) + Y(2)
Y(5) = Y(5) + Y(3)
Y(5) = Y(5) + Y(4)

Y(5) = Y(5) / 4
Y(5) = Y(5) - Y_manfi
'-------------------------------

If Key_y = 0 Then
Y_manfi = Y(5)
Locate 2 , 1 : Lcd "Y= ---"
Do : Loop Until Key_y = 1
End If

Locate 2 , 1
Lcd "Y=" ; Y(5) ; " " 'Stringg ; " "

'===========================================
'===========================================
'===========================================
'===========================================

Longg = 0
For A = 1 To 100
Z(1) = Getadc(3)
Waitus 100
Longg = Longg + Z(1)
Next

Z(1) = Longg / 100
'-----------------------------
Longg = 0
For A = 1 To 100
Z(2) = Getadc(3)
Waitus 100
Longg = Longg + Z(2)
Next

Z(2) = Longg / 100
'-----------------------------
Longg = 0
For A = 1 To 100
Z(3) = Getadc(3)
Waitus 100
Longg = Longg + Z(3)
Next

Z(3) = Longg / 100
'-----------------------------
Longg = 0
For A = 1 To 100
Z(4) = Getadc(3)
Waitus 100
Longg = Longg + Z(4)
Next

Z(4) = Longg / 100
'-----------------------------

Z(5) = 0

Z(5) = Z(1)
Z(5) = Z(5) + Z(2)
Z(5) = Z(5) + Z(3)
Z(5) = Z(5) + Z(4)

Z(5) = Z(5) / 4
Z(5) = Z(5) - Z_manfi
'-------------------------------

If Key_z = 0 Then
Z_manfi = Z(5)
Locate 1 , 10 : Lcd "Z= ---"
Do : Loop Until Key_z = 1
End If


Locate 1 , 10
Lcd "Z=" ; Z(5) ; " " 'Stringg ; " "

'===========================================


Waitms 350
Toggle Led

Goto Main


'===========================================

Doloop
04-04-2014, 03:27
سلام

بعنوان مثال این قسمت از برنامه مربوط به تبدیل مقدار محور z هست که 400 بار مقدار آنالوگ رو به دیجیتال تبدیل کرده بعدش یه میانگین گرفته
برای محور های x و y هم دقیقا همین کارو کرده :0013:




longg = 0
for a = 1 to 100
z(1) = getadc(3)
waitus 100
longg = longg + z(1)
next

z(1) = longg / 100
'-----------------------------
longg = 0
for a = 1 to 100
z(2) = getadc(3)
waitus 100
longg = longg + z(2)
next

z(2) = longg / 100
'-----------------------------
longg = 0
for a = 1 to 100
z(3) = getadc(3)
waitus 100
longg = longg + z(3)
next

z(3) = longg / 100
'-----------------------------
longg = 0
for a = 1 to 100
z(4) = getadc(3)
waitus 100
longg = longg + z(4)
next

z(4) = longg / 100
'-----------------------------

z(5) = 0

z(5) = z(1)
z(5) = z(5) + z(2)
z(5) = z(5) + z(3)
z(5) = z(5) + z(4)

z(5) = z(5) / 4
z(5) = z(5) - z_manfi