گاهی اوقات شما می خواهید همه چیز در برنامه متوقف شود در حالی که یک شرط معین درست است. می توانید این کار را با استفاده از حلقه while انجام دهید . این مثال نحوه استفاده از حلقه while برای کالیبره کردن مقدار سنسور آنالوگ را نشان می دهد.
در حلقه اصلی، طرح زیر مقدار یک مقاومت نوری را در پایه آنالوگ 0 می خواند و از آن برای محو کردن یک LED در پایه 9 استفاده می کند. اما در حالی که دکمه ای که به پایه دیجیتالی 2 متصل است فشار داده می شود، برنامه روشی به نام را اجرا می کند که به دنبال آن است calibrate()
. بالاترین و کمترین مقدار سنسور آنالوگ. هنگامی که دکمه را رها می کنید، طرح با حلقه اصلی ادامه می یابد.
این تکنیک به شما امکان میدهد تا زمانی که شرایط نور تغییر میکند، حداکثر و حداقل مقدار مقاومت نوری را بهروزرسانی کنید.
جریان
سنسور آنالوگ خود (مانند پتانسیومتر، سنسور نور) را در ورودی آنالوگ 2 با یک مقاومت 10K اهم به زمین وصل کنید. دکمه خود را به پین دیجیتال و دوباره با مقاومت 10K اهم به زمین وصل کنید. LED خود را با یک مقاومت سری 220 اهم به پین دیجیتال 9 وصل کنید.
تصویر با استفاده از Fritzing ایجاد شده است . برای نمونه مدارهای بیشتر، صفحه پروژه فریتزینگ را ببینید
شماتیک:
کد
/*
Conditionals – دستور while
این مثال استفاده از عبارات while() را نشان می دهد.
در حالی که دکمه فشاری فشرده می شود، طرح روال کالیبراسیون را اجرا می کند.
خوانش سنسور در طول حلقه while حداقل و حداکثر
مقادیر مورد انتظار را از مقاومت عکس تعریف می کند.
این یک تغییر در مثال کالیبره است.
مدار:
* مقاومت عکس متصل از +5 ولت به آنالوگ در پایه 0
* مقاومت 10K متصل از زمین به آنالوگ در پایه 0
* LED متصل از پایه دیجیتال 9 به زمین از طریق مقاومت 220 اهم
* دکمه فشاری متصل از پایه 2 تا + 5 ولت
* مقاومت 10K متصل از پایه 2 به زمین
ایجاد شده در 17 ژانویه 2009
اصلاح شده در 30 اوت 2011
توسط Tom Igoe
سخت افزار مورد نیاز