سلام وقتتون بخیر
اگر چندتا ورودی داشته باشیم و برای هرکدام از آنها شرط های مختلفی بنویسیم. چجوری باید کد بنویسیم که اگر 2تا از ورودی ها 1 شدن فقط شرط ورودی مدنظر ما اجرا شود.
من یه ربات تعقیب خط دارم که با سنسورهای ir مسیر رو طی میکنه اگه مسیر، انشعاب T داشته باشه، سنسورهای برای چرخش به چپ و راست باهم 1 میشن. توی برنامه چجور باید این مسأله رو لحاظ کنم که یکی از ورودی ها رو درنظر نگیره؟
برنامه هم با cube و keil نوشتم میکرو هم stm32f103 هست.
ممنون از راهنماییتون.
سلام دوست عزیز، البته که معمولا همیشه یکی از ورودی ها زودتر از اونیکی ۱ میشه و مثلا می تونید با استفاده از interrupt روی یکی از ورودی ها، اون رو با اهمیت تر از ورودی دوم بکنید.
اما قبل از همه این موارد بهتون پیشنهاد میکنم که روی کاغذ flowchart این منطق رو بکشید. خودتون رو درگیر کشیدن صحیح flowchat و قوانینش نکنید. صرفا روی کاغذ مرحله مرحله بگید که میکرو چطوری باید تصمیم بگیره. مثلا اگر هردو ورودی ۱ شد چیکار کنه؟ یکیش رو انتخاب کنه؟ همیشه یک ورودی خاص رو انتخاب کنه یا اینکه این انتخاب به شرایط خاصی ربط داره؟ و بعد اون منطق رو کد بزنید. مثلا اگر input1 مهمتر هست، داخل کد فرضا ورودی های شما input1 و input2 هستن که مقادیرشون true یا false هست. پس شما اول چک کنید که if(input1) و اگر input1 بود، کار مربوط رو انجام بدید، چونکه input2 اصلا مهم نیست و بعد داخل else حالا input2 رو چک کنید. اینطوری اگر هر دو true باشن، فقط اولی اجرا میشه. میشه برای شفافیت کد، در else بگید که input2 && !input1 که نشون بدید که فقط درحالتی که input1 نبود و input2 بود باید انجام بشه.