نحوه استفاده از Switch Case در آردوینو – کنترل LED ها با عبارت Switch
شما می توانید از دستور switch case
برای اجرای بلوک های مختلف کد بر اساس مقدار یک متغیر استفاده کنید. این یک رویکرد مستقیم تر و تمیزتر برای رسیدگی به شرایط مختلف ارائه می دهد.
در این مقاله، نحوه کنترل LED ها را با استفاده از عبارت switch case
در آردوینو خواهید آموخت. همچنین میتوانید عبارت switch case
را در زبانهای برنامهنویسی دیگر بیابید، پس این میتواند به عنوان یک مثال عملی از نحوه عملکرد آنها باشد.
در اینجا یک نسخه ی نمایشی از آنچه خواهید ساخت وجود دارد:
نسخه ویدیویی این مقاله را می توانید در اینجا مشاهده کنید:
قطعات سخت افزاری
در اینجا مولفه هایی وجود دارد که باید آنها را دنبال کنید:
برد آردوینو (Uno).
پتانسیومتر.
تخته نان.
سه ال ای دی.
مقاومت برای ال ای دی ها
سیم های جامپر.
نحوه استفاده از عبارت Switch Case
در آردوینو
در اینجا نحو/ساختار دستور switch
آمده است:
switch (variable) { case value1: // code to be executed if variable == value1 break ; case value2: // code to be executed if variable == value2 break ; default : // code to be executed if variable doesn't match any case break ; }
بیایید آن را تجزیه کنیم:
variable
: این نشان دهنده متغیر مورد ارزیابی است. مقدار متغیر تعیین می کند که بلوک های کد چگونه اجرا شوند.
case
: هر case
نشان دهنده مقداری است که ممکن است با متغیر مورد ارزیابی مطابقت داشته باشد. اگر مقدار variable
و case
یکسان باشد، کد مربوط به آن Case اجرا خواهد شد. شما می توانید هر تعداد مورد که بخواهید داشته باشید.
break
: پس از اجرای یک بلوک کد در یک case
، کلمه کلیدی break
کد را خاتمه می دهد. یعنی از انتقال کد به موارد دیگر جلوگیری می کند زیرا قبلاً یک مطابقت پیدا شده است.
default
: در شرایطی که هیچ یک از موارد با variable
مطابقت نداشته باشد، کد موجود در بلوک default
اجرا می شود.
در مرحله بعد، از دستور switch
برای کنترل LED ها استفاده می کنیم.
Switch Case
در آردوینو مثال
نمودار مدار
در اینجا نحوه اتصال اجزای خود آورده شده است:
به برد آردوینو Uno R3" class="image--center mx-auto" width="1920" height="814" loading="lazy">
هدف در اینجا این است که بر اساس مقدار یک متغیر تصمیم بگیرید که کدام LED (یا ترکیبی از LED ها) روی آن می آید.
اتصال پتانسیومتر
ترمینال سمت چپ پتانسیومتر را به 5 ولت وصل کنید.
ترمینال سمت راست را به GND وصل کنید.
ترمینال میانی را به A0 وصل کنید.
اتصال LED
برای هر LED، پایه کوتاهتر را به GND وصل کنید.
هر پایه بلندتر را به یک پین دیجیتال وصل کنید. توصیه می کنم از پایه 8 (برای LED سبز)، 9 (برای LED زرد)، و 10 (برای LED قرمز) استفاده کنید تا با آنچه در نمودار مدار داریم مطابقت داشته باشد. ما همچنین از این مقادیر در کد استفاده خواهیم کرد.
در اینجا کد کامل پروژه آمده است:
int greenLED = 8 ; int yellowLED = 9 ; int redLED = 10 ; int potPin = A0; int potValue; int mappedPotValue; void setup () { pinMode(greenLED, OUTPUT); pinMode(yellowLED, OUTPUT); pinMode(redLED, OUTPUT); Serial.begin( 9600 ); } void loop () { potValue = analogRead(potPin); mappedPotValue = map (potValue, 0 , 1023 , 0 , 5 ); switch (mappedPotValue) { case 0 : digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); Serial.println(mappedPotValue); break ; case 1 : digitalWrite(greenLED, HIGH); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); Serial.println(mappedPotValue); break ; case 2 : digitalWrite(greenLED, LOW); digitalWrite(yellowLED, HIGH); digitalWrite(redLED, LOW); Serial.println(mappedPotValue); break ; case 3 : digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, HIGH); Serial.println(mappedPotValue); break ; case 4 : digitalWrite(greenLED, HIGH); digitalWrite(yellowLED, HIGH); digitalWrite(redLED, HIGH); Serial.println(mappedPotValue); delay( 500 ); digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); Serial.println(mappedPotValue); delay( 500 ); break ; } }
بیایید کد را تجزیه کنیم.
مقداردهی اولیه متغیر
int greenLED = 8 ; int yellowLED = 9 ; int redLED = 10 ; int potPin = A0; int potValue; int mappedPotValue;
ما با مقداردهی اولیه متغیرها برای مطابقت با اتصالات سخت افزاری شروع کردیم.
greenLED
، yellowLED
و redLED
به ترتیب دارای مقادیر 8، 9 و 10 هستند. این با پین هایی که در برد آردوینو به آن ها وصل شده اند مطابقت دارد. به طور مشابه، potPin
که متغیر پتانسیومتر است، مقدار A0 دارد.
شما از متغیر potValue
برای ذخیره مقدار فعلی پتانسیومتر استفاده خواهید کرد. ما همچنین یک متغیر mappedPotValue
ایجاد کردیم تا محدوده مقادیر مورد نیاز برای LED ها را در یک دقیقه ذخیره کند.
pinMode و سریال مانیتور
void setup () { pinMode(greenLED, OUTPUT); pinMode(yellowLED, OUTPUT); pinMode(redLED, OUTPUT); Serial.begin( 9600 ); }
در تابع setup()
LED ها را به عنوان پایه های خروجی تنظیم کرده و مانیتور سریال را مقدار دهی اولیه کردیم.
منطق بیانیه switch case
ابتدا مقدار پتانسیومتر را با استفاده از تابع analogRead()
می خوانیم و آن را در متغیر potValue
ذخیره می کنیم:
potValue = analogRead(potPin);
سپس با استفاده از تابع map
مقادیر را از پتانسیومتر به محدوده 0 تا 4 تبدیل کرده و در متغیر mappedPotValue
ذخیره کردیم:
mappedPotValue = map (potValue, 0 , 1023 , 0 , 5 );
در مرحله بعد، یک دستور switch
ایجاد کردیم—مقدار مورد ارزیابی mappedPotValue
است. به یاد بیاورید که این متغیری است که مقادیر پتانسیومتر را در آن ذخیره کرده ایم. پس هر زمان که پتانسیومتر را بچرخانید، مقدار تغییر می کند و به طور بالقوه با یک case
مطابقت دارد:
switch (mappedPotValue) { case 0 : digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); Serial.println(mappedPotValue); break ; case 1 : digitalWrite(greenLED, HIGH); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); Serial.println(mappedPotValue); break ; case 2 : digitalWrite(greenLED, LOW); digitalWrite(yellowLED, HIGH); digitalWrite(redLED, LOW); Serial.println(mappedPotValue); break ; case 3 : digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, HIGH); Serial.println(mappedPotValue); break ; case 4 : digitalWrite(greenLED, HIGH); digitalWrite(yellowLED, HIGH); digitalWrite(redLED, HIGH); Serial.println(mappedPotValue); delay( 500 ); digitalWrite(greenLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(redLED, LOW); Serial.println(mappedPotValue); delay( 500 ); break ; }
ما mappedPotValue
بهعنوان پارامتری برای switch
ارسال کردیم، زیرا متغیری است که با موارد مختلف مقایسه میشود: switch (mappedPotValue)
.
در case 0
، تمام LED ها خاموش خواهند شد.
برای case 1
، فقط LED سبز روشن می شود.
در case 2
، فقط LED زرد روشن می شود.
در case 3
، فقط LED قرمز روشن می شود.
در case 4
، هر سه LED به طور مداوم چشمک خواهند زد.
با استفاده از دستور switch
، رفتار LED ها را بر اساس مقدار پتانسیومتر با موفقیت کنترل کرده اید!
نتیجه گیری
در این مقاله نحوه استفاده از دستور switch case
در آردوینو را با استفاده از یک مثال عملی یاد گرفتید.
شما یاد گرفتید که چگونه LED های مختلف را بر اساس مقدار پتانسیومتر کنترل کنید. شما با استفاده از موارد مختلف در یک دستور switch
برای مطابقت با مقدار فعلی پتانسیومتر و اجرای کد مربوطه به این امر دست یافتید.
عبارات switch
را می توان به روش های مختلفی برای پویایی بیشتر پروژه مورد استفاده قرار داد. برخی از موارد استفاده در آردوینو عبارتند از:
مدیریت و تفسیر مقادیر، حالتها و حالتهای مختلف یک جزء یا حسگر.
انجام اقدامات بر اساس دستورات خاص. به عنوان مثال، چرخش یک بازوی رباتیک به یک زاویه/جهت خاص.
دکمه نقشه برداری به ورودی کاربر و غیره فشار می آورد.
نسخه ویدیویی این پروژه را می توانید از اینجا مشاهده کنید. کد کامل پروژه در GitHub موجود است.
وبلاگ من را برای مقالاتی در مورد سیستم های جاسازی شده، اینترنت اشیا و توسعه وب تحلیل کنید.
کد نویسی مبارک!
ارسال نظر