متن خبر

نحوه استفاده از Switch Case در آردوینو – کنترل LED ها با عبارت Switch

نحوه استفاده از Switch Case در آردوینو – کنترل LED ها با عبارت Switch

شناسهٔ خبر: 777284 -




شما می توانید از دستور switch case برای اجرای بلوک های مختلف کد بر اساس مقدار یک متغیر استفاده کنید. این یک رویکرد مستقیم تر و تمیزتر برای رسیدگی به شرایط مختلف ارائه می دهد.

در این مقاله، نحوه کنترل LED ها را با استفاده از عبارت switch case در آردوینو خواهید آموخت. همچنین می‌توانید عبارت switch case را در زبان‌های برنامه‌نویسی دیگر بیابید، پس این می‌تواند به عنوان یک مثال عملی از نحوه عملکرد آنها باشد.

در اینجا یک نسخه ی نمایشی از آنچه خواهید ساخت وجود دارد:

f67ddfe7-0cf1-47ee-9732-90f3a4b1649c

نسخه ویدیویی این مقاله را می توانید در اینجا مشاهده کنید:

قطعات سخت افزاری

در اینجا مولفه هایی وجود دارد که باید آنها را دنبال کنید:

برد آردوینو (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 در آردوینو مثال

نمودار مدار

در اینجا نحوه اتصال اجزای خود آورده شده است:

نمودار مدار نشان دهنده پتانسیومتر و LED های متصل <a href= به برد آردوینو 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 موجود است.

وبلاگ من را برای مقالاتی در مورد سیستم های جاسازی شده، اینترنت اشیا و توسعه وب تحلیل کنید.

کد نویسی مبارک!

خبرکاو

ارسال نظر




تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است