# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > مباحث عمومی کار با سخت افزارها، سنسورها و لوازم جانبی >  ارتباط با سنسور‍

## mehdi2004171

ما سنسور بی سیمی داریم که محاسباتی را انجام داده و داده ای را نمایش می دهد

حالا ما می خواهیم آن داده مورد نظر در نرم افزار ما نمایش داده شود و سپس ما برروی آن داده محاسبات دیگری را انجام دهیم

برای وارد کردن آن داده باید از میکرو کنترلر استفاده کرد

اما سوال من اینجاست
1 - از چه میکروکنترلی باید استفاده کرد؟
2- نرم افزار ما در C#‎ نوشته شده حالا برای ارتباط با آن میکرو کنترلر چه باید کرد؟

----------


## farzadsw

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

----------


## mehdi2004171

> خب اگه نحوه ارتباط میکرو با سنسور رو میدونید ، فقط کافیه به برنامتون یه ارتباط با com یا پورت سریال رو اضافه کنید.
> با توجه به اینکه درمورد سنسور و اینترفیسش چیزی نگفتید ، در مورد نوعمیکرو کنترلر چیزی نمیتونم بگم ولی به احتمال زیاد یه atmega8 کار شما رو راه میندازه.


ببخشید از کجا باید نحوه ارتباط میکرو با سنسور را ببینم؟

----------


## farzadsw

دیتا شیت  سنسور

----------


## hamed.rezaei

ببخشید دوست عزیز 
*farzadsw*
اگه ممکنه یک نمونه برنامه کامل برای ارتباط نرم افزاری با میکرو (atmega 16) به عنوان مثال یک دیود از طریق نرم افزاری که ما نوشتیم با یک کلیک خاموش و روشن شود .برای من این مورد یکم مبهمه  کی برای اسی برنامه نویسی میکنیم(codvision ,basscom) و کی براش نرماافزار مینویسیم (vb.net) .یک نمونه کامل که تمام مراحل و توضیح بده خیلی کمک میکنه ممنون

----------


## farzadsw

برنامه کامل دم دستم نیست و متاسفانه فرصت ندارم براتون تهیه کنم (البته اگه خودتون جستجو کنید پبدا میکنید) . اگه اینجا رو دیدید ، توضیحان زیر بیشتر کمکتون میکنه.

برای مثالی که زدید (با کلیک روی یه دکمه در طرف pc یه led روشن خاموش بشه) عملکرد *کلی* به این صورت میشه :
میکرو کنترلر (همیشه) منتظره تا کامپیوتر بهش یه فرمانی بده . ساده ترین راهی که میشه میکرو رو دائم منتظر دریافت فرمان (از کامپیوتر) گذاشت ، استفاده از یه حلقه بینهات هست که توش اطلاعات سریال رو بخونه .البته کامپایلر ها تابع آماده برای این کار دارن ، مثلا waitkey تو بسکام باعث میشه برنامه تو همون خط بمونه(حلقه بینهایت) و هر وقت یه بایت از پورت سریال دریافت کنه اونو برمیگردونه و از حلقه بینهایت در میاد (میره ادامه برنامه). همه اینا با یه کلمه ی waitkey انجام میشه. پس یعنی در کل میکرو باید طوری برنامه ریزی بشه که دائما (*مثلا* هر 1 میلی ثانیه یا هرچیز دیگه) اطلاعات رو از پورت سریال بخونه و ببینه چیز جدیدی اومده یا نه.
در کامپیوتر هم یه یرنامه درست میکنید(فرم و دکمه و کامپوننت و ..) که با کلیک روی دکمه ، یک بایت اطلاعات (یه کاراکتر دلخواه) رو از طریق کامپوننتی که برای ارتباط سریال هست، بفرسته به میکروکنترلر . خود ویژوال استودیو کامپوننت mscomm رو برای این کار داره . فقط اول باید تنظیماتش رو انجام بدید تا قابل استفاده بشه(باوود ریت و پریتی و ...) . تنظیمات زیاد مهم نیست چی باشه ولی مهم اینه که پورت سریال میکروکنترلر هم همین تنظیمان رو داشته باشه. شما 9600 رو برای باوود ریت ، دیتا بیت رو 8 ، استپ بیت رو 1 ،پریتی رو none و flow control  رو هم none در نظر بگیر. پس خلاصه هروقت دکمه فشرده بشه یک کد خاص به میکرو کنترلر فرستاده میشه.

بقیش هم واضح هست که برنامه میکرو کنترلر باید طوری باشه که با توجه به بایت(کاراکتر) دریافتی ؛ کاری که شما میخواید رو انجام بده.

برای جزییات انجام این کار ها باید مثالهای هر کدوم از این بخشها(میکرو و pc ) رو ببینید که اتفاقا تو وب به فراوانی پیدا میشه !

----------

