سلام من میخوام یه چیزی بسازم که مثلا اگر دوبار پشت سر هم یک پایه1شد یه عملیات انجام بده
و دوبار دیگه که1شد یه کار دیگه چطور میشه کدش؟
مثلا پایه 13دوبار 1شد عملیات انجام بشه
دوبار دیگه یک شد عملیات دیگه
سلام من میخوام یه چیزی بسازم که مثلا اگر دوبار پشت سر هم یک پایه1شد یه عملیات انجام بده
و دوبار دیگه که1شد یه کار دیگه چطور میشه کدش؟
مثلا پایه 13دوبار 1شد عملیات انجام بشه
دوبار دیگه یک شد عملیات دیگه
یک پین رو به عنوان ورودی تعیین کن
main:
سی پی رو نگه دار روی این پین اماده شمارش باشه با هر بار فشار
وقتی که دوبار شد شرایط اولیه انجام بده بعد دوباره
سی پی رو نگه دار روی این پین اماده شمارش باشه با هر بار فشار
حالا شرایط ثانویه اجرا کن
goto main
end
ممنون از پاسخ ولی من مبتدی هستم اگه میشه لطفا کد رو بگید
چطور یک پایه رو تشخیص بدم دوبار 1شد؟
من میخوام بار اول که دوبار 1شد یه کاری کنه
چند لحظه بعد که1شد یه کار دیگه همونجور چند تا مرحله مثل همین.
امکان پذیره اینطور؟؟!
به نظر من بهترین و مطقی ترین راه تعریف کانتر هست
به این صورت که به ازای هر بار شمارش یه دونه به این کانتر اضافه بشه .
کد:int counter = 0; void setup() { // put your setup code here, to run once: pinMode(3, INPUT); } void loop() { // put your main code here, to run repeatedly: if (digitalRead(3) == HIGH) { counter++; } if (counter == 1) {} else if (counter == 2) {} else if (counter == 3) {} else if (counter == 4) {} else {} }
در اینجا بعد از کانتر ++اوردید این به چه معناست؟
چه کاری انجام میده؟
من که دیگه نمیدونم چ کنم خاهشا ی راهنمایی کنید
شما اگه چند فصل اول یه کتاب برنامه نویسی به زبان c رو بخونید قطعا مشکلتون رو حل میکنه. با دو تا مثال آردویینو هم یاد میگیرید چطور برای آردویینو با c بنویسید.
بعد از اون، براحتی با ساده کردن مسئله تو ذهنتون و نوشتن کدش میتونید جواب مسئله تون رو بگیرید. براتون مثال میزنم
خب شما میخواین تعداد فشرده شدن یه کلید رو بشمارید. در دنیای رایانه، فشردن شدن یه کلید، یعنی 1 شدن یه بیت ، یا همون high شدن یه بیت.
در میکروکنترلرها، معمولا یه پایه ورودی خروجی تو میکرو متناظر با یه بیته
پس
در گام اول باید یه پایه انتخاب کنید، به عنوان ورودی تعریفش کنید، بعد فشار داده شدنش رو تشخیص بدید. معمولا کلید ها طوری بسته میشن، که با وصل شدن، ولتاژ + رو وصل میکنن به مقصد. اینجا مقصد، پایه ی ورودی میکروکنترلره. پس از وصل شدن مثبت به این پایه، خود میکروکنترلر بیت متناظر با اون رو 1 میکنه. پس ما میتونیم بخونیمش و بفهمیم.
خب الان ما میتونیم بفهمیم که کلید فشار داده میشه یا نه. اگه پایه مورد نظر رو با یه شرط خوندیم و میکرو به ما گفت که اون پایه 1 هست، یعنی در اون لحظه کلید فشار داده شده.
حالا باید تعداد این شمردن ها جایی ذخیره بشه. یه متغییر (محلی برای نگه داشتن داده ها) درست میکنیم، و این عدد شمردن رو توش ذخیره میکنیم. هر بار که شرط بالایی به ما گفت کلید زده شده، ما یه شماره بهش اضافه میکنیم. مثلا یک، دو ، سه و ...
حالا میخوایم بگیم اگه مثلا 5 ثانیه گذشت، و هیچ کلیدی فشار داده نشد، باید تعداد شمارش ها صفر بشه. یعنی یجوری ریست بشه. خب به راحتی میایم یه شرط میذاریم.
میگیم اگه از زمان آخرین فشرده شدن، 5 ثانیه گذشته بود، اون متغییر که شمارش ها رو توش ذخیره میکردیم، مقدارشو صفر کن.
الان میخوایم کاری کنیم که اگر مثلا 2 بار کلید فشار داده شده بود فلان کار رو انجام بده. شرط میذاریم، میگیم اگه مقدار اون متغییر که شمارش ها توشه، 2 بود، یعنی دو بار کلید فشار داده شده و هنوز 5 ثانیه هم نگذشته (چون اگه گذشته بود، تو گام قبلی صفر میشد مقدار شمارش ها)، فلان کار انجام بشه.
تموم. به همین راحتی ! شما با یه هفته وقت گذاشتن براحتی میتونی اون دو سه فصل اول c رو یاد بگیری
متغییر ها، شرط ها، حلقه ها و... همه فصل های نخست هر کتاب آموزش برنامه نویسی ای هستن
ویرایش توسط Tiranoid : 11-29-2016 در ساعت 09:23 AM
با سپاس از Tiranoid