مدار دکمه تاکت. اتصال دکمه به آردوینو تغییر حالت ها با یک دکمه

دکمه - یک وسیله مکانیکی شناخته شده است که می تواند بسته و باز شود مدار الکتریکیبه درخواست شخص انواع مختلفی از دکمه ها وجود دارد که طبق قوانین مختلف کار می کنند. به عنوان مثال، دکمه فشاری استفاده شده در این آموزش، مدار را فقط در زمانی که انگشت روی آن فشار می دهد، می بندد. برعکس، دکمه باز کردن، با فشار دادن مدار را می شکند.

دکمه هایی با گروهی از کنتاکت ها وجود دارد که برخی از آنها با فشار دادن مدار را قطع می کنند، در حالی که برخی دیگر در این زمان بسته می شوند. نسخه های کوچکتر چنین دکمه هایی اغلب به عنوان میکروسوئیچ شناخته می شوند.

دکمه های تاکت را تقریباً در هر کدام می توان یافت دستگاه الکترونیکی: در صفحه کلید کامپیوتر، در گوشی، در کنترل از راه دور تلویزیون و غیره.

دکمه های قفلی وجود دارد که مانند یک دکمه روی یک قلم توپ کار می کنند: یک بار فشار داده شده - مدار بسته است، بار دوم - شکسته می شود. عکس زیر تنها یکی از این موارد است. استفاده از دکمه های قفل برای تغییر حالت عملکرد دستگاه راحت است. به عنوان مثال، می توانید منبع تغذیه را تغییر دهید: باتری یا منبع تغذیه.

یا گزینه دیگری - دکمه های بزرگ برای توقف اضطراری تجهیزات. آنها با رنگ های روشن رنگ آمیزی می شوند تا توجه افراد را به خود جلب کنند. در واقع آنها دکمه های معمولی برای باز شدن یا دکمه های ثابت هستند.

اینها تنها بخشی از گزینه ها هستند. علاوه بر دکمه ها، مکانیسم های دیگری نیز در دنیای برق وجود دارد، مانند کلیدهای ضامن و سوئیچ های چاقو. همه آنها برای کنترل مکانیکی جریان در مدار طراحی شده اند.

اتصال دکمه

بنابراین، ما با ساده ترین دکمه درایت کار خواهیم کرد که سعی می کنیم به آن متصل شویم آردوینو اونو. معمولاً هنگام کار با تخته های نان بدون لحیم، از یک دکمه با پین های لحیم کاری استفاده می شود. عکس ابتدای درس نشان می دهد که چنین دکمه ای دارای چهار پین کمی خمیده است. دکمه هایی با دو لید مستقیم وجود دارد، آنها همچنین برای کلاس های ما مناسب هستند.

در نمودارهای الکتریکیدکمه شبیه این است:

اگر به داخل دکمه چهار زمانه نگاه کنید، می توانید این نمودار را ببینید:

به عنوان یک قاعده، پین های دکمه تاکت به صورت جفت در طرف مقابل کیس قرار می گیرند. یعنی می توانیم از یک جفت کنتاکت در یک طرف یا یک جفت در طرف دیگر استفاده کنیم.

و مدار یک دکمه دو پین اینگونه به نظر می رسد.

اشتباه گرفتن با این دکمه سخت است: دو مخاطب که با فشار دادن دکمه به هم متصل می شوند.

بر روی تخته نان، هر دو نوع دکمه تاک معمولاً به صورت زیر قرار می گیرند:

اکنون بیایید سعی کنیم ساده ترین مدار را روی تخته نان بدون لحیم جمع کنیم که عملکرد دکمه را نشان می دهد. بیایید LED را روشن کنیم.

مدار حاصل عملکرد ساده ای را انجام می دهد: دکمه را فشار دهید - LED روشن می شود، آن را رها کنید - خاموش می شود.

اتصال به آردوینو اونو

حالا که عملکرد دکمه تاکت کاملا مشخص شد، بیایید یک مدار با یک دکمه و یک LED جمع کنیم و آنها را به کنترلر وصل کنیم. بیایید یک کار ساده برای خود تعیین کنیم: اجازه دهید Arduino Uno با یک بار فشار دادن دکمه LED سه بار چشمک بزند.

مدار


ظاهرچیدمان


در این نمودار، ما یک زنجیره از قبل آشنا برای. همچنین دکمه ای را می بینیم که به پین ​​شماره 3 آردوینو متصل است. در اینجا ممکن است این سوال کاملاً منطقی پیش بیاید: چرا ما دکمه را نیز از طریق یک مقاومت 10 کیلو اهم به زمین وصل کردیم؟ برای مقابله با این موضوع، تصور کنید که دکمه را طبق طرح "ساده لوح" بدون هیچ مقاومت اضافی وصل کرده ایم.

در اینجا، یک خازن کوچک بین پایه شماره 3 و زمین نشان داده شده است که قادر به جمع آوری شارژ است. بسیاری از میکروکنترلرها این ویژگی را دارند.

حالا تصور کنید که دکمه را می بندیم. جریان از + 5 ولت شروع به حرکت می کند، مستقیماً به تماس شماره 3 می رسد و ظرفیت خازن را در طول مسیر شارژ می کند. آردوینو با موفقیت یک دکمه را ثبت می کند. اما بعد از اینکه بر خلاف انتظارمان انگشت خود را از روی دکمه ساعت برداریم، میکروکنترلر همچنان فکر می کند که دکمه فشرده شده است! با این حال، پس از همه، یک خازن شارژ شده به تدریج بار انباشته شده را به پایه شماره 3 می دهد. این کار تا زمانی که ظرفیت کمتر از سطح واحد منطقی تخلیه شود ادامه خواهد داشت.

اتصال ماژول ROC Tact Button به آردوینو

به خصوص برای پروژه های شما، ما در RobotClass یک ماژول از دو دکمه درایت ساخته ایم. ماژول از قبل دارای مقاومت های لازم و حتی دو LED برای نشان دادن زمان فشار دادن دکمه ها است.


بیایید نحوه اتصال این ماژول به Arduino Uno را دریابیم.

مدار


ظاهر چیدمان


همانطور که می بینید، مهم نیست که از چه دکمه هایی استفاده می کنیم، طرح اتصال تغییر چندانی نمی کند. برنامه کار با آنها نیز تغییر نخواهد کرد.

برنامه دکمه آردوینو

در نهایت، ما تفاوت های ظریف مدار خود را فهمیدیم و آماده نوشتن برنامه هستیم. در درس با کارکردهای تنظیم خروجی ها آشنا شدیم. pinModeو عملکرد خروجی دیجیتال دیجیتال رایت. این بار ما به یک تابع مهم دیگر نیاز داریم که اطلاعات ورودی را به میکروکنترلر ارائه دهد:

DigitalRead(contact_number);

این تابع، بولی را که آردوینو از پین داده شده خوانده است، برمی گرداند. این بدان معنی است که اگر + 5 ولت به مخاطب اعمال شود، عملکرد برمی گردد حقیقت*. اگر کنتاکت به زمین وصل شده باشد، مقدار را دریافت می کنیم نادرست. در C++ true و false به ترتیب معادل اعداد 1 و 0 هستند.

برای اینکه مخاطب مورد نظر ما در حالت ورودی اطلاعات کار کند، باید آن را روی حالت خاصی تنظیم کنیم:

PinMode(Pin_number، INPUT)؛

در نهایت همه چیز را کنار هم می گذاریم و برنامه را می نویسیم.

const int led = 2;
دکمه const int = 3;
intval = 0;

void setup()(
pinMode (led، OUTPUT)؛
pinMode (دکمه، INPUT)؛
}

حلقه خالی()(
val = digitalRead (دکمه);
if(val == HIGH)(
// حلقه از 0 تا 2، با مرحله 1
برای (int i=0; i<3; i++){
digitalWrite (LED، HIGH);
تاخیر (500);
digitalWrite (LED، LOW)؛
تاخیر (500);
}
}
}

ما برنامه را در آردوینو Uno بارگذاری می کنیم و عملکرد برنامه را بررسی می کنیم. اگر همه چیز به درستی انجام شود، باید مانند تصویر باشد:

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

برنامه دکمه ماشه

مثال دیگری که شایسته توجه است دکمه ماشه است. این کار به این صورت است: هنگامی که دکمه را فشار می دهید - LED روشن می شود، بار دوم که آن را فشار می دهید - خاموش می شود.

برای پیاده سازی این رفتار دکمه، به یک متغیر اضافی نیاز داریم که اغلب به عنوان "متغیر حالت" یا "پرچم" نامیده می شود.

const int led = 2;
دکمه const int = 3;
intval = 0;
وضعیت بایت = 0; // متغیر حالت
void setup()(
pinMode (led، OUTPUT)؛
pinMode (دکمه، INPUT)؛
}
حلقه خالی()(
// وضعیت دکمه را در متغیر val بنویسید
val = digitalRead (دکمه);
// اگر وضعیت دکمه درست است، عمل را انجام دهید
if(val == HIGH)(
// حالت را به عکس تغییر دهید
state = !state;
if(حالت == بالا)(
// اگر وضعیت فعلی درست است، LED را روشن کنید
digitalWrite (LED، HIGH);
) دیگر (
// اگر وضعیت فعلی نادرست است، LED را خاموش کنید
digitalWrite (LED، LOW)؛
}
تاخیر(300);
}
}

برنامه را روی آردوینو بارگذاری می کنیم و عملکرد مدار را بررسی می کنیم. دکمه را به سرعت فشار دهید و LED روشن می شود. دوباره فشار دهید و خاموش می شود. اما اگر دکمه را فشار دهید و رها نکنید، LED با دوره 600 میلی ثانیه شروع به چشمک زدن می کند! چرا اینطور است؟ سعی کن بفهمی

وظایف

به عنوان یک تمرین، بیایید سعی کنیم چند پازل ساده را با یک دکمه و یک LED حل کنیم.

  • مدار دارای دو دکمه و یک LED است. اجازه دهید با فشار دادن دکمه اول LED روشن شود و با فشار دادن دکمه دوم خاموش شود.
  • پیانو. مدار دارای هفت دکمه، یک دکمه و یک بلندگو است. هنگامی که هر یک از هفت دکمه را فشار می دهید، بلندگو باید نت مربوطه را پخش کند. نیاز به مطالعه.
  • بازی "کابوها". مدار شامل دو دکمه، یک زنگ و دو LED است. پس از شروع برنامه، زنگ باید صدای کوتاهی منتشر کند. بلافاصله پس از آن، هر بازیکن باید دکمه خود را در سریع ترین زمان ممکن فشار دهد. اولین پخش کننده ای که این کار را انجام می دهد یک LED روشن خواهد داشت. شما باید درس مربوط به وقفه ها را مطالعه کنید.

اتصال سنسور دکمه ای به آردوینو به دانش و مهارت خاصی نیاز دارد. در این مقاله در مورد اینکه دکمه تاکت چیست، پرش دکمه چیست، نحوه اتصال صحیح دکمه با مقاومت بالا و پایین شونده، نحوه کنترل LED و سایر دستگاه ها با یک دکمه صحبت خواهیم کرد.

یک دکمه (یا سوئیچ دکمه ای) ساده ترین و مقرون به صرفه ترین نوع سنسور است. با کلیک بر روی آن، سیگنالی به کنترلر می دهید، که سپس منجر به عملی می شود: LED ها روشن می شوند، صداها ایجاد می شود، موتورها شروع به کار می کنند. در زندگی ما اغلب با سوئیچ های مختلف ملاقات می کنیم و به خوبی با این دستگاه آشنا هستیم.

دکمه های تاکت و جابجایی

طبق معمول، بخش را با چیزهای ساده ای شروع می کنیم که فقط برای مبتدیان جالب است. اگر اصول اولیه را می دانید و می خواهید در مورد گزینه های مختلف برای اتصال دکمه به آردوینو بیاموزید، می توانید از این پاراگراف صرف نظر کنید.

دکمه چیست؟ در واقع این دستگاه نسبتاً ساده ای است که شبکه برق را می بندد و باز می کند. شما می توانید این بسته شدن / باز شدن را در حالت های مختلف انجام دهید، در حالی که موقعیت خود را ثابت یا ثابت نکنید. بر این اساس، تمام دکمه ها را می توان به دو گروه بزرگ تقسیم کرد:

  • سوئیچ های دکمه ای با تثبیت آنها پس از آزادی به حالت اولیه خود باز می گردند. زمانی که بسته به حالت اولیه، به دکمه های معمولی بسته و معمولی باز تقسیم می شوند.
  • دکمه های لحظه ای (دکمه های تاکت). آنها ثابت می شوند و در موقعیتی که در آن رها شده بودند باقی می مانند.

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






دکمه های آردوینو برای پروژه های ساده

در پروژه‌های خود، ما با دکمه‌های بسیار ساده 4 پین که تقریباً با هر کیت آردوینو عرضه می‌شوند کار خواهیم کرد. دکمه یک سوئیچ با دو جفت کنتاکت است. کنتاکت ها در یک جفت به هم متصل هستند، بنابراین نمی توان بیش از یک سوئیچ را در مدار اجرا کرد، اما می توانید همزمان دو بخش موازی را کنترل کنید، این می تواند مفید باشد.

بسته به موقعیت، می توانید هر دو مدار بسته و معمولی باز ایجاد کنید - تنها کاری که باید انجام دهید این است که مدار را مطابق با آن وصل کنید.

برای سهولت استفاده، یک دکمه تدبیر معمولاً با یک کلاه پلاستیکی رنگی همراه است، کاملاً واضح است که روی دکمه قرار می گیرد و ظاهری کمتر هک به پروژه می دهد.

اتصال دکمه آردوینو

روشن و خاموش کردن LED با یک دکمه

بیایید با ساده ترین راه برای اتصال سوئیچ تاکت شروع کنیم. مداری را با آردوینو به عنوان منبع تغذیه، LED، مقاومت محدود کننده 220 اهم و دکمه ای که مدار را بسته و باز می کند، در نظر بگیرید.

هنگام اتصال یک دکمه با دو جفت پایه، مهم است که مخاطبین شکستن صحیح را انتخاب کنید. به تصویر با دقت نگاه کنید: جفت پاها در دو طرف دکمه قرار دارند. خود دکمه مربع است، اما فاصله بین جفت مخاطب از نظر بصری قابل توجه است: می توانید بلافاصله دو را در یک طرف و دو را از طرف دیگر تشخیص دهید. بنابراین، بین یک "جفت" در طرف است که سوئیچ اجرا می شود. برای قرار گرفتن در مدار، به یک و کنتاکت دیگر متصل می شویم که حداقل فاصله بین آنها وجود دارد. جفت دوم مخاطب به سادگی مخاطب اول را کپی می کند.

اگر سوئیچ نوع دیگری دارید، می توانید با خیال راحت مخاطبین را از زوایای مخالف انتخاب کنید (روی برخی از دکمه ها علامت خاصی به شکل یک شکاف ساخته شده است که با استفاده از آن می توانید تعیین کنید که مخاطبین جفت شده در کدام طرف قرار دارند). مطمئن ترین راه برای تعیین پایه های صحیح این است که تماس ها را با یک تستر حلقه کنید.

خود مدار با دکمه، LED و کنترلر آردوینو نیاز به توضیح زیادی ندارد. دکمه مدار را می شکند، LED خاموش است. با فشار دادن، مدار بسته می شود، LED روشن می شود. اگر کنتاکت ها را مخلوط کنید (از طریق کنتاکت های جفت بسته دکمه روشن کنید)، دکمه کار نمی کند، زیرا مدار هرگز باز نمی شود. فقط مخاطبین را عوض کنید

اتصال یک دکمه با یک مقاومت کششی

حالا بیایید دکمه را به آردوینو وصل کنیم تا بتوانیم وضعیت آن را در طرح بخوانیم. برای این کار از طرح زیر استفاده می کنیم.

چراغ چشمک زن پس از فشار دادن یک دکمه

در مثال قبلی با LED ها، یک دکمه را به یک برد آردوینو وصل کردیم و متوجه شدیم که چگونه کار می کند. LED روشن و خاموش شد ، اما این کار را در حالت کاملاً غیرفعال انجام داد - خود کنترل کننده در اینجا کاملاً اضافی بود ، می توان آن را با باتری تعویض کرد. بنابراین، بیایید پروژه جدید خود را "هوشمندتر" کنیم: وقتی دکمه را فشار می دهیم، LED را به طور مداوم چشمک می زنیم. شما نمی توانید این کار را با یک مدار معمولی با یک لامپ و یک سوئیچ انجام دهید - ما از قدرت میکروکنترلر خود برای حل این کار استفاده خواهیم کرد، هرچند ساده، اما نه بی اهمیت.

قطعه ای از مدار با LED قبلاً برای ما شناخته شده است. ما یک فانوس دریایی معمولی با یک LED و یک مقاومت محدود کننده مونتاژ کرده ایم. اما در قسمت دوم یک دکمه آشنا و یک مقاومت دیگر را می بینیم. در حالی که وارد جزئیات نمی شویم، به سادگی مدار را جمع می کنیم و یک طرح ساده را در آردوینو آپلود می کنیم. تمام عناصر مدار در ساده ترین کیت های شروع آردوینو قرار دارند.

/* طرح شماتیک با استفاده از یک دکمه تدبیر و یک LED با فشار دادن دکمه LED چشمک می زند. دکمه روی زمین کشیده می شود، فشار دادن مربوط به HIGH در ورودی */ const int PIN_BUTTON = 2; const int PIN_LED = 13; void setup() ( Serial.begin(9600); pinMode(PIN_LED, OUTPUT); ) void loop() (// دریافت وضعیت دکمه int buttonState = digitalRead(PIN_BUTTON)؛ سریال. println(buttonState)؛ // اگر دکمه فشار داده نشده است، سپس هیچ کاری انجام ندهید اگر (!buttonState) ( delay(50)؛ return; (1000)؛ DigitalWrite (PIN_LED، LOW)؛ تاخیر (1000)؛ )

فشار دهید و نگه دارید - LED چشمک می زند. رها کن - خاموش می شود. دقیقا همان چیزی که آنها می خواستند. با خوشحالی دست می زنیم و به تحلیل کاری که انجام داده ایم ادامه می دهیم.

بیایید به طرح نگاه کنیم. در آن ما یک منطق نسبتا ساده را می بینیم.

  1. تعیین کنید که آیا دکمه فشرده شده است یا خیر.
  2. اگر دکمه فشار داده نشود، به سادگی از روش حلقه خارج می شویم، بدون اینکه چیزی اضافه یا تغییر دهیم.
  3. اگر دکمه فشار داده شود، با استفاده از قطعه ای از طرح استاندارد فلش می کنیم:
    1. LED را با اعمال ولتاژ به پورت مورد نظر روشن کنید
    2. زمانی که LED روشن است مکث لازم را انجام می دهیم
    3. خاموش کردن LED
    4. زمانی که LED خاموش است مکث لازم را انجام می دهیم

منطق رفتار دکمه در طرح ممکن است به روش اتصال با یک مقاومت کششی بستگی داشته باشد. در مقاله بعدی در این مورد صحبت خواهیم کرد.

پرش دکمه آردوینو

در فرآیند کار با دکمه ها ممکن است با پدیده بسیار ناخوشایندی به نام دکمه پرش مواجه شویم. همانطور که از نام آن پیداست، این پدیده به دلیل جهش تماس در داخل کلید فشاری ایجاد می شود. صفحات فلزی فوراً یکدیگر را لمس نمی کنند (البته برای چشم ما خیلی سریع)، بنابراین افزایش و افت ولتاژ برای مدت کوتاهی در ناحیه تماس رخ می دهد. اگر ظهور چنین سیگنال های "زباله" را پیش بینی نکنیم، هر بار به آنها واکنش نشان خواهیم داد و می توانیم پروژه خود را به خانه ای بیاوریم.

برای حذف پچ پچ از راه حل های نرم افزاری و سخت افزاری استفاده می شود. به طور خلاصه، ما فقط به روش های اصلی سرکوب پچ پچ اشاره می کنیم:

  • بین دریافت مقادیر از پین آردوینو، یک مکث 10 تا 50 میلی ثانیه ای در طرح اضافه می کنیم.
  • اگر از وقفه استفاده کنیم، روش نرم افزاری قابل استفاده نیست و حفاظت سخت افزاری را تشکیل می دهیم. ساده ترین آنها یک فیلتر RC با یک خازن و یک مقاومت است.
  • برای سرکوب پچ پچ دقیق تر، از یک فیلتر سخت افزاری با استفاده از ماشه اشمیت استفاده می شود. این گزینه به شما امکان می دهد سیگنالی با شکل تقریباً عالی در ورودی آردوینو دریافت کنید.

شما می توانید اطلاعات بیشتری در مورد راه های مقابله با گپ زدن در این یکی بیابید.

تغییر حالت ها با یک دکمه

برای تعیین اینکه آیا دکمه فشرده شده است یا خیر، فقط باید این واقعیت را که فشار داده شده است ثبت کنید و ویژگی را در یک متغیر خاص ذخیره کنید.

ما واقعیت فشار دادن را با استفاده از تابع digitalRead () تعیین می کنیم. در نتیجه، بسته به نحوه اتصال دکمه، HIGH (1، TRUE) یا LOW (0، FALSE) دریافت خواهیم کرد. اگر دکمه را با یک مقاومت کششی داخلی وصل کنیم، فشار دادن دکمه باعث می شود ورودی در سطح 0 (FALSE) ظاهر شود.

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

کلید بولی فشرده = DigitalRead(PIN_BUTTON)==LOW;

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

کلید بولی فشرده = DigitalRead(PIN_BUTTON);

مسئله این است که digitalRead() ممکن است HIGH برگردد، اما به این معنی نیست که دکمه فشرده شده است. در مورد استفاده از مدار با مقاومت کششی، HIGH به این معنی است که برعکس، دکمه فشرده نشده است. در گزینه اول (digitalRead(PIN_BUTTON)==LOW) بلافاصله ورودی را با مقدار مورد نیاز خود مقایسه کردیم و تشخیص دادیم که دکمه فشار داده شده است، اگرچه ورودی اکنون کم است. و وضعیت دکمه را در یک متغیر ذخیره کرد. سعی کنید به صراحت تمام عملیات منطقی را که انجام می دهید مشخص کنید تا کد خود را شفاف تر کنید و از اشتباهات احمقانه غیر ضروری جلوگیری کنید.

چگونه پس از فشار دادن یک دکمه حالت های عملکرد را تغییر دهیم؟

اغلب موقعیتی پیش می آید که با کمک دکمه ها، نه تنها فشار دادن، بلکه رها کردن دکمه را نیز در نظر بگیریم. مثلاً با فشردن و رها کردن یک دکمه می توانیم چراغ را روشن کنیم یا حالت کار مدار را تغییر دهیم. به عبارت دیگر، ما باید به نحوی این واقعیت را که دکمه در کد فشرده شده است برطرف کنیم و در آینده از اطلاعات استفاده کنیم، حتی اگر دکمه دیگر فشار داده نشود. بیایید ببینیم چگونه می توان این کار را انجام داد.

منطق برنامه بسیار ساده است:

  • ما این واقعیت را به خاطر می آوریم که در یک متغیر سرویس فشار دهید.
  • ما صبر می کنیم تا پدیده های مرتبط با جغجغه از بین بروند.
  • ما منتظر این واقعیت هستیم که دکمه آزاد شود.
  • ما واقعیت رها کردن را به خاطر می آوریم و در یک متغیر جداگانه علامتی را تنظیم می کنیم که دکمه کاملاً فشرده شده است.
  • پاک کردن متغیر سرویس

چگونه فشار دادن چند دکمه را تشخیص دهیم؟

فقط باید وضعیت هر یک از دکمه ها را در متغیر مربوطه یا در آرایه آردوینو به خاطر بسپارید. نکته اصلی در اینجا این است که بفهمیم هر دکمه جدید یک پین مشغول است. بنابراین، اگر تعداد دکمه های شما زیاد باشد، ممکن است کمبود مخاطبین رایگان رخ دهد. یک گزینه جایگزین استفاده از اتصال دکمه ها به یک پین آنالوگ مطابق طرح با تقسیم کننده مقاومتی است. در مقالات بعدی در این مورد صحبت خواهیم کرد.

در این مثال، اتصال یک دکمه به یک کنترلر آردوینو را بررسی خواهیم کرد. هنگامی که دکمه فشار داده می شود، LED داخلی را روشن می کنیم. اکثر بردهای آردوینو دارای یک LED SMT داخلی هستند که به پایه 13 (پایه 13) متصل است.

قطعات مورد نیاز

  • کنترلر آردوینو
  • دکمه ساعت
  • مقاومت 10 کیلو اهم
  • با تخته نان تماس بگیرید
  • سیم های اتصال

ارتباط

خروجی برق (5 ولت) و زمین (Gnd) را به ترتیب با سیم های قرمز و مشکی به تخته نان وصل می کنیم. به طور معمول، تخته های نمونه سازی از بیرونی ترین ردیف پین ها برای برق و زمین استفاده می کنند، همانطور که در شکل نشان داده شده است. با سیم آبی سوم پین دیجیتالی 2 کنترلر آردوینو را به پین ​​دکمه تاکت وصل می کنیم. به همان کنتاکت یا به کنتاکتی که در نسخه 4 پین به طور دائم به آن متصل است، یک مقاومت کششی 10 کیلو اهم وصل می کنیم که به نوبه خود به زمین متصل می شود. خروجی دیگر دکمه به یک منبع تغذیه 5 ولت متصل است.

هنگامی که کلید تاکت فشار داده نمی شود، خروجی 2 فقط از طریق یک مقاومت کششی به زمین متصل می شود و LOW در این ورودی خوانده می شود. و با فشار دادن دکمه، یک کنتاکت بین ورودی 2 و منبع تغذیه 5 ولت ظاهر می شود و خوانده می شود.

توجه: بیشتر اوقات، دکمه‌های تاکت دارای دو پین در هر طرف هستند، همانطور که در نمودار سیم‌کشی نشان داده شده است. در عین حال، دکمه تقریبا مربع شکل است. مهم است که هنگام اتصال اشتباه نگیرید که کدام مخاطب متصل است و کدام یک هنگام فشار دادن بسته می شود. اگر مطمئن نیستید بهتر است دکمه را زنگ بزنید.

همچنین می توانید دکمه را برعکس - از طریق یک مقاومت کششی به برق و از طریق یک دکمه به زمین وصل کنید. سپس HIGH از ورودی خوانده می شود و با فشار دادن دکمه LOW خوانده می شود.

اگر ورودی بدون اتصال رها شود، ورودی به طور تصادفی HIGH یا LOW می شود. به همین دلیل است که وقتی دکمه فشار داده نمی شود، از یک مقاومت کششی برای تنظیم مقدار مشخصی استفاده می کنیم.

طرح

کد

/* دکمه LED را با فشار دادن دکمه روشن و خاموش کنید. ایجاد شده در سال 2005 توسط DojoDave اصلاح شده در 28 اکتبر 2010 توسط Tom Igoe این کد نمونه در مالکیت عمومی است. */ // تنظیم ثابت ها const int buttonPin = 2; // شماره پین ​​متصل به دکمه const int ledPin = 13; // عدد خروجی LED // متغیرهای int buttonState = 0; // متغیر برای ذخیره وضعیت دکمه void setup() ( // مقداردهی اولیه کردن پین متصل به LED به عنوان pinMode خروجی (ledPin, OUTPUT)؛ // مقداردهی اولیه کردن پین متصل به دکمه به عنوان یک pinMode ورودی (buttonPin, INPUT)؛ ) void loop()( // خواندن مقادیر از ورودی دکمه buttonState = digitalRead(buttonPin)؛ // بررسی کنید که آیا دکمه فشار داده شده است // اگر فشار داده شده باشد، سپس buttonState HIGH خواهد بود: if (buttonState == HIGH) ( // روشن کردن LED digitalWrite(ledPin، HIGH)؛ ) در غیر این صورت ( // خاموش کردن LED digitalWrite(ledPin، LOW)؛ ) )


همچنین ببینید

هنگام توسعه دستگاه ها، اغلب لازم است از یک دکمه متصل به برد آردوینو استفاده کنید. به عنوان دکمه معمولاً از دکمه های تاکت استفاده می شود که با فشار دادن مدار را می بندند و در صورت فشار ندادن جریانی از خود عبور نمی دهند. اما فقط اتصال دکمه به ورودی دیجیتال میکروکنترلر کافی نیست. این مقاله تفاوت های ظریف اتصال را نشان می دهد و نمونه هایی را ارائه می دهد.

به عنوان مثال، ما از یک دکمه فشاری استفاده خواهیم کرد. دکمه دارای 4 پین است. اما در واقع فقط برای نصب محکم دکمه روی برد به 4 پین نیاز است. در داخل فقط 2 کنتاکت در طرفین دارد که هر کدام از مرزهای کیس در سمت چپ و راست بیرون زده است. این را می توان به وضوح در عکس های دکمه در تحلیل مشاهده کرد:

دکمه بدون پوشش بالایی. مخاطبین متصل به خروجی های مختلف با رنگ های مختلف برجسته می شوند. در کنار دکمه جداشده، یک قسمت گرد فلزی نمایان است که با فشار دادن کنتاکت های مرکزی و کناری آن بسته می شود.

دکمه برش. مشاهده می شود که کنتاکت های شدید از نظر فیزیکی به یک خروجی که از هر دو طرف می آید متصل هستند. خروجی مرکزی به طور مشابه مرتب شده است.

مهم است که اشتباه نگیرید که کدام مخاطبین متصل هستند (یعنی آنها یک کل واحد هستند) و هنگام فشار دادن باید بسته شوند. این دکمه با یکی از پایه ها به هر پایه دیجیتال آردوینو وصل می شود و پایه دیگر به قطب مثبت برق متصل است. در مرحله بعد، باید پین آردوینو را به عنوان ورودی با تابع pinMode() پیکربندی کنید و می توانید مقدار را از پین با تابع digitalRead() بخوانید. هنگامی که دکمه فشار داده می شود، خروجی به عنوان HIGH خواهد بود. این می توانست به پایان برسد، اگر نه برای یک چیز: در حالت باز، سیگنال های LOW و HIGH به طور تصادفی به ورودی اعمال می شوند، زیرا چنین خروجی به هیچ چیز متصل نیست و "در هوا معلق است". برای اتصال صحیح، باید خروجی را که دکمه به یکی از مقادیر متصل است، "بالا بکشید". در مورد ما، زمانی که دکمه فشار داده نمی شود، مقدار LOW باید از روی پین خوانده شود، بنابراین ما آن را به زمین می کشیم.

برای انجام این کار، لازم است به طور موازی با دکمه به خروجی انتخاب شده از یک اسم بزرگ (10 KΩ یا بیشتر) متصل شوید، که از طریق آن جریان بسیار کمی جریان می یابد. سپس، هنگامی که دکمه فشار داده نمی شود، پین یک مقدار واضح LOW خواهد داشت و هنگامی که دکمه فشار داده می شود، مقاومت pull-up ما با شمارش HIGH تداخلی نخواهد داشت. زیرا در مقایسه با جریان اتصال کوتاه پین ​​کنترلر به قطب مثبت برق، جریان بسیار کمی از مقاومت pull-up عبور خواهد کرد.

پس از مونتاژ مدار، برنامه زیر را در برد بارگذاری کنید:

/* هنگامی که دکمه فشار داده می شود LED را تغییر دهید نمودار دستگاه: * LED متصل به پین ​​13 (LED داخلی) * دکمه تاکت متصل به پایه 2 * یک مقاومت 10 کیلو اهم برای بالا کشیدن پایه 2 به زمین استفاده می شود */ //تنظیم ثابت ها // تنظیم اعداد پین: const int buttonPin = 2;// تعداد پینی که دکمه به آن متصل است const int ledPin = 13; // تعداد پینی که LED به آن متصل است //اعلان متغیرها int buttonState = 0; // متغیر برای ذخیره وضعیت دکمه void setup() ( // پینی که LED به آن متصل است را به عنوان pinMode خروجی تنظیم کنید (ledPin, OUTPUT)؛ // پایه ای را که دکمه به آن متصل است به عنوان pinMode ورودی تنظیم کنید( buttonPin، INPUT); ) void loop()( // خواندن وضعیت دکمه buttonState = digitalRead(buttonPin)؛ // بررسی کنید که آیا دکمه فشار داده شده است // اگر فشار داده شود، پین با دکمه روی تنظیم می شود HIGH if (buttonState == HIGH) ( // روشن کردن LED digitalWrite (ledPin، HIGH)؛ ) در غیر این صورت ( // خاموش کردن LED digitalWrite(ledPin، LOW؛ ))

تعویض LED با فشار دادن یک دکمه

نمودار دستگاه:

* LED متصل به پایه 13 (ال ای دی داخلی)

* دکمه تاکت به پین ​​دوم متصل است

* یک مقاومت 10kΩ برای بالا کشیدن پین دوم به زمین استفاده می شود

//ثابت را تنظیم کنید

// تنظیم اعداد پین:

const int buttonPin = 2 ; // تعداد پینی که دکمه به آن متصل است

const int ledPin = 13 ; // تعداد پینی که LED به آن متصل است

//اعلان متغیرها

int buttonState = 0 ; // متغیر برای ذخیره وضعیت دکمه

void setup()(

// پینی که LED به آن متصل است را به عنوان خروجی تنظیم کنید

pinMode (ledPin، OUTPUT)؛

// پینی که دکمه به عنوان ورودی به آن متصل است را تنظیم کنید

pinMode (buttonPin , INPUT ) ;

حلقه خالی()(

// وضعیت دکمه خواندن

buttonState = digitalRead (buttonPin) ;

دستورالعمل

دکمه ها متفاوت هستند، اما همه آنها عملکرد یکسانی را انجام می دهند - برای اطمینان از تماس الکتریکی، هادی ها را به طور فیزیکی به یکدیگر متصل می کنند (یا برعکس، می شکنند). در ساده ترین حالت، این اتصال دو هادی است، دکمه هایی وجود دارد که تعداد بیشتری هادی را به هم متصل می کند.
برخی از دکمه ها، با فشار دادن، هادی ها را متصل می کنند (دکمه های قفل)، برخی دیگر بلافاصله پس از رها کردن مدار را باز می کنند (بدون قفل).
همچنین دکمه ها به دو دسته نرمال باز و معمولی بسته تقسیم می شوند. اولین، هنگامی که فشار داده می شود، مدار را ببندید، دوم - باز کنید.
اکنون نوع دکمه هایی که به آنها «دکمه های تدبیر» می گویند کاربرد گسترده ای پیدا کرده اند. ساعت - نه از کلمه "تدبیر"، بلکه از کلمه "لمسی"، زیرا. فشار دادن به خوبی توسط انگشتان احساس می شود. اینها دکمه هایی هستند که با فشار دادن آنها یک مدار الکتریکی را می بندند و پس از رها شدن آن را باز می کنند.

دکمه یک اختراع بسیار ساده و مفید است که برای تعامل بهتر بین انسان و فناوری عمل می کند. اما، مانند همه چیز در طبیعت، کامل نیست. این در این واقعیت آشکار می شود که وقتی دکمه را فشار می دهید و هنگامی که آزاد می شود، به اصطلاح. " " ("پرش" در -). این تغییر مکرر حالت دکمه در یک بازه زمانی کوتاه (در حد چند میلی ثانیه) قبل از اینکه حالت ثابت به خود بگیرد است. این پدیده نامطلوب در لحظه تعویض دکمه به دلیل خاصیت ارتجاعی مواد دکمه و یا به دلیل جرقه های ریز که در حین کار الکتریکی رخ می دهد رخ می دهد.
با استفاده از آردوینو می توانید با چشمان خود ببینید که کمی بعد انجام خواهیم داد.

برای اتصال یک دکمه معمولی باز به آردوینو، می‌توانید این کار را به ساده‌ترین راه انجام دهید: یک سیم آزاد دکمه را به برق یا زمین وصل کنید، دیگری را به خروجی دیجیتال آردوینو وصل کنید. اما، به طور کلی، این اشتباه است. واقعیت این است که در لحظاتی که دکمه بسته نمی شود، پیکاپ های الکترومغناطیسی بر روی خروجی دیجیتال آردوینو ظاهر می شوند و به همین دلیل، مثبت کاذب امکان پذیر است.
برای جلوگیری از تداخل، خروجی دیجیتال معمولاً از طریق یک مقاومت به اندازه کافی بزرگ (10 کیلو اهم) به زمین یا برق متصل می شود. در مورد اول "با یک مقاومت کششی" نامیده می شود، در مورد دوم - "مدار با یک مقاومت کششی". بیایید به هر یک از آنها نگاه کنیم.

ابتدا یک دکمه را با استفاده از یک مقاومت کششی به آردوینو متصل کنید. برای انجام این کار، یک تماس دکمه را به زمین وصل می کنیم، دومی - به خروجی دیجیتال 2. همچنین خروجی دیجیتال 2 را از طریق یک مقاومت با مقدار اسمی 10 کیلو اهم تا +5 ولت وصل می کنیم.

بیایید چنین طرحی را برای پردازش کلیک دکمه ها بنویسیم و آن را در آردوینو آپلود کنیم.
اکنون LED تعبیه شده روی پین 13 به طور مداوم روشن است تا زمانی که دکمه فشار داده شود. وقتی دکمه را فشار می دهیم، LOW می شود و LED خاموش می شود.

حالا بیایید یک مدار را با یک مقاومت کششی جمع کنیم. یک کنتاکت دکمه را به منبع تغذیه +5 ولت وصل کنید، دومی - به خروجی دیجیتال 2. خروجی دیجیتال 2 را از طریق یک مقاومت 10 کیلو اهم به زمین وصل کنید.
طرح تغییر نخواهد کرد.

اکنون LED خاموش است تا زمانی که دکمه فشار داده شود.

ویدیو های مرتبط

نکته 2: چگونه هنگام اتصال دکمه به آردوینو از جهش تماس خلاص شویم

ما قبلاً اتصال یک دکمه به آردوینو را در نظر گرفته‌ایم و موضوع پرش تماس را بررسی کرده‌ایم. این یک پدیده بسیار آزاردهنده است که باعث فشار مکرر دکمه ها می شود و مدیریت برنامه نویسی دکمه ها را دشوار می کند. بیایید در مورد چگونگی خلاص شدن از جهش تماس صحبت کنیم.

شما نیاز خواهید داشت

  • - آردوینو؛
  • - دکمه ساعت؛
  • - مقاومت با مقدار اسمی 10 کیلو اهم؛
  • - دیود ساطع نور؛
  • - سیم های اتصال

دستورالعمل

"جهش" کنتاکت ها پدیده ای است که در کلیدهای مکانیکی، دکمه ها، کلیدهای ضامن و رله وجود دارد. با توجه به اینکه کنتاکت ها معمولاً از فلزات و آلیاژهایی ساخته می شوند که خاصیت ارتجاعی دارند، در صورت بسته شدن فیزیکی، بلافاصله اتصال قابل اعتمادی برقرار نمی کنند. در مدت زمان کوتاهی، تماس ها چندین بار بسته می شوند و یکدیگر را دفع می کنند. در نتیجه، جریان الکتریکی نه بلافاصله، بلکه پس از یک سری افزایش و کاهش، مقدار ثابتی به خود می گیرد. مدت زمان این اثر گذرا به مواد تماس، اندازه و طراحی آنها بستگی دارد. تصویر یک اسیلوگرام معمولی را هنگامی که مخاطبین یک دکمه تاکت بسته است نشان می دهد. مشاهده می شود که زمان از لحظه تغییر به حالت پایدار چندین میلی ثانیه است. این همان "وزوز" است.

این اثر در کنترل‌های روشنایی الکتریکی یا سایر سنسورها و ابزارهای اینرسی قابل توجه نیست. اما در مدارهایی که خواندن و پردازش سریع اطلاعات وجود دارد (جایی که فرکانس‌ها به همان ترتیب پالس‌های "جهش" یا بالاتر هستند)، این یک مشکل است. به طور خاص، آردوینو UNO، که با فرکانس 16 مگاهرتز کار می کند، در "جهش" پین ها عالی است و به جای یک سوئیچ 0 به 1، دنباله ای از 1 و 0 را می پذیرد.

بیایید ببینیم که جهش تماسی چگونه بر عملکرد صحیح مدار تأثیر می گذارد. بیایید یک دکمه ساعت را مطابق مدار مقاومت کشویی به آردوینو وصل کنیم. LED را با فشار دادن دکمه روشن می کنیم و آن را روشن می کنیم تا دکمه دوباره فشار داده شود. برای وضوح، ما یک LED خارجی را به خروجی دیجیتال 13 وصل می کنیم، اگرچه می توانید با LED داخلی از پس آن برآیید.

برای انجام این کار، اولین چیزی که به ذهن می رسد:
- وضعیت قبلی دکمه را به خاطر بسپارید.
- مقایسه با وضعیت فعلی؛
- اگر وضعیت تغییر کرده است، وضعیت LED را تغییر دهید.
بیایید چنین طرحی را بنویسیم و آن را در حافظه آردوینو بارگذاری کنیم.
هنگامی که مدار راه اندازی می شود، اثر تاثیر جهش تماس بلافاصله قابل مشاهده است. این خود را در این واقعیت نشان می دهد که LED بلافاصله پس از فشار دادن دکمه روشن نمی شود یا روشن می شود و بلافاصله خاموش می شود یا بلافاصله پس از فشار دادن دکمه خاموش نمی شود، اما همچنان می سوزد. به طور کلی، این طرح به طور پایدار کار نمی کند. و اگر برای کار روشن کردن LED این امر بسیار مهم نیست، برای کارهای جدی تر دیگر، این به سادگی غیرقابل قبول است.

ما سعی خواهیم کرد وضعیت را اصلاح کنیم. ما می دانیم که پرش تماس در عرض چند میلی ثانیه پس از بسته شدن مخاطبین ظاهر می شود. بیایید مثلاً 5 میلی ثانیه بعد از تغییر وضعیت دکمه صبر کنیم. این زمان برای یک انسان عملاً یک لحظه است و فشار دادن یک دکمه معمولاً بسیار بیشتر طول می کشد - چند ده میلی ثانیه. و آردوینو با چنین فواصل زمانی کوتاهی عالی کار می‌کند و این 5 میلی‌ثانیه به آن اجازه می‌دهد تا جهش مخاطبین را از فشار دادن دکمه قطع کند.
در این طرح، رویه debounce () را اعلام می کنیم ("bounce" در انگلیسی فقط "bounce" است، پیشوند "de" به معنای روند معکوس است)، که به ورودی آن وضعیت قبلی دکمه را ارسال می کنیم. اگر فشار دادن یک دکمه بیش از 5 میلی ثانیه طول بکشد، فشار واقعی است.
با تشخیص پرس، حالت LED را تغییر می دهیم.
طرح را روی برد آردوینو آپلود کنید. الان همه چیز خیلی بهتر شده! دکمه بدون خرابی کار می کند، با فشار دادن، LED وضعیت را همانطور که می خواستیم تغییر می دهد.

عملکرد مشابهی توسط کتابخانه های ویژه ای مانند کتابخانه Bounce2 ارائه شده است. می توانید آن را از لینک موجود در بخش "منابع" یا در https://github.com/thomasfredericks/Bounce2 دانلود کنید. برای نصب کتابخانه، آن را در فهرست کتابخانه های محیط توسعه آردوینو قرار دهید و IDE را مجددا راه اندازی کنید.
کتابخانه "Bounce2" شامل متدهای زیر است:
Bounce() - مقداردهی اولیه شی "Bounce".
فاصله خالی (ms)- زمان تأخیر را بر حسب میلی ثانیه تنظیم می کند.
پیوست خالی (شماره پین)- خروجی را تنظیم می کند که دکمه به آن متصل است.
به روز رسانی int()- شی را به روز می کند و اگر وضعیت پین تغییر کرده باشد true و در غیر این صورت false را برمی گرداند.
intread()- وضعیت جدید پین را می خواند.
بیایید طرح خود را با استفاده از کتابخانه بازنویسی کنیم. همچنین می توانید وضعیت گذشته دکمه را با حالت فعلی به خاطر بسپارید و مقایسه کنید، اما بیایید الگوریتم را ساده کنیم. وقتی دکمه فشار داده شود، فشارها را می‌شماریم و هر فشردن فرد LED را روشن می‌کند، هر کدام زوج آن را خاموش می‌کند. چنین طرحی مختصر به نظر می رسد، خواندن آن آسان است و به راحتی قابل استفاده است.

منابع:

  • جهش کنتاکت های دکمه متصل به آردوینو را حذف می کنیم
  • کتابخانه Bounce2