PDA

View Full Version : مشکل در تشخیص ورودی Arduino



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

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

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

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

ATULICUS
دوشنبه 24 آبان 1395, 13:27 عصر
سلام




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


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


http://barnamenevis.org/showthread.php?531726-تشخیص-وجود-مصرف-کننده-با-آردوینو

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



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

m2_farzan
دوشنبه 22 آذر 1395, 09:51 صبح
همونطور که گفتن اگه درباره مقاومت های pull up و pull down مطالعه بکنید علت مشکلتون رو متوجه میشید. (چیز پیچیده ای نیست).
بعد از این کار میتونید با خوندن مستندات آردوئینو بطور خاص روی مدار خودتون تمرکز کنید.

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

midel2
شنبه 28 بهمن 1396, 22:36 عصر
من هم دقیقا همین مشکل رو دارم مقاومت های
pull up و pull down اندازه شون فک کنم درست نیست ممنون میشم راهنمایی کنید

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