# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > آردوئینو (Arduino) >  مشکل در تشخیص ورودی Arduino

## bax998

سلام و خسته نباشید.
من یک برد آردوئینو تهیه کردم . تا جایی که متوجه شدم برای تشخیص ورودی ها با digitalRead میتونم تشخیص بدم که ورودی 0 هست یا 1 (باید وقتی +‌ وصل میشه به ورودی ۱ بشه) اما وقتی یک سیم که سمت دیگش به  هیچ جا وصل نیست رو به پایه ورودی وصل میکنم ، آردوئینو ۱ تشخیص میده این ورودی رو !
دلیل یا نکته ی خاصی داره ؟
یا برد مشکل پیدا کرده ؟
ممنون میشم راهنمایی کنید
با سپاس

----------


## نیما عطایی

سلام
شما وقتی pinmode رو روی input قرار میدید تمام ورودی ها از طریق یک ثبات داخلی با مقاومت های 1k به vcc وصل میشند 
یعنی خواندن پینی که pinmode = input باشه و به هیچ جایی وصل نباشه مقدار HIGH رو نشون میده
و برعکس هر پینی که به عنوان خروجی معرفی بشه بصورت پیش فرض مقدارش LOW میباشد.
موفق باشید.

----------


## bax998

تشکر از پاسخ شما
یعنی باید به صورت دیفالت وردی ها رو به gnd وصل کنیم؟
یا برعکس منطق برنامه رو طوری درنظر بگیریم که وقتی ورودی low  شد عملیات رو انجام بده؟

----------


## نیما عطایی

نه نیازی به وصل کردن به gnd یا برعکس نیست
هر نوع مدار با خروجی دیجیتال باید در حالت غیر فعال یا با مقاومت به vcc وصل شده باشه (PULLUP) یا برعکس (PULLDOWN) تو سنسور ها این عمل خود به خود انجام شده ولی درباره بعضی از سنسور ها یا کلید ها باید خودت اینکارو انجام بدی
ولی اگه مثلا ورودی رو خودت pullup نکردی خود میکرو این کارو انجام داده و با وصل کردن به gnd میتونی تحریک کلید رو دریافت کنی ولی اگه نیاز به تحریک مثبت داشتی میتونی از یه مقاومت pulldown استفاده کنی و مقدار خروجی پایه میکرو رو خودت down کنی تا با کلید و اتصال ب vcc بتونی تحریکش کنی.

----------


## ATULICUS

سلام






> پینی که pinmode = input باشه و به هیچ جایی وصل نباشه مقدار HIGH رو نشون میده
>  و برعکس هر پینی که به عنوان خروجی معرفی بشه بصورت پیش فرض مقدارش LOW میباشد.



من این موضوع رو برای پیدا کردن جواب این سوال :




> https://barnamenevis.org/showthread.p...آردوینو


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



البته شاید من اشتباه میکنم و جواب سوال من نباشه این موضوع .

----------


## m2_farzan

همونطور که گفتن اگه درباره مقاومت های pull up و pull down مطالعه بکنید علت مشکلتون رو متوجه میشید. (چیز پیچیده ای نیست).
بعد از این کار میتونید با خوندن مستندات آردوئینو بطور خاص روی مدار خودتون تمرکز کنید.

با همین کلید واژه ها در گوگل و یوتوب یا کتابهای مدار منطقی جستجو کنید. مثلا http://www.seattlerobotics.org/encod...97/basics.html

----------


## midel2

من هم دقیقا همین مشکل رو دارم مقاومت های pull up و pull down اندازه شون فک کنم درست نیست ممنون میشم راهنمایی کنید

----------


## amyrpwrhsyny77

سلام من همین مشکلو هم تو دیجیتال هم تو آنالوگ دارم همینطوری از خودش چرت و  پرت عدد میده وقتی هم ماژول بهش وصل می کنم بازم عدد چرت و پرت میده مثلا  همین ماژول فراصوت srf05 یا ماژول تشخیص حرکت hcsr501  تو همه اینا ورودی  اشتباه میده به من همه کارم کردم ولی درست نشد  :افسرده:  :گریه:   کد امم درسته هم خودم نوشتم چند بار از اینترنت کداشون گرفتم ولی خروجی  بردم آردینو uno درسته اگه میشه یه راهنمایی کنید ممنون میشم

----------

