فهرست مطالب:

Arduino و Touchpad Tic Tac Toe: 8 مرحله (همراه با تصاویر)
Arduino و Touchpad Tic Tac Toe: 8 مرحله (همراه با تصاویر)

تصویری: Arduino و Touchpad Tic Tac Toe: 8 مرحله (همراه با تصاویر)

تصویری: Arduino و Touchpad Tic Tac Toe: 8 مرحله (همراه با تصاویر)
تصویری: Arduino - Tic Tac Toe Game with Touchpad 2024, سپتامبر
Anonim
آردوینو و تاچ پد Tic Tac Toe
آردوینو و تاچ پد Tic Tac Toe

یا ، تمرینی در چندگانه ورودی و خروجی و کار با بیت ها. و یک ارسال برای مسابقه آردوینو.

این یک اجرای یک بازی tic tac toe با استفاده از یک آرایه 3x3 از LED های رنگی برای صفحه نمایش ، یک صفحه لمسی مقاومتی ساده و یک آردوینو برای اتصال همه چیز به یکدیگر است. برای مشاهده نحوه عملکرد آن ، ویدیو را مشاهده کنید: این پروژه به چه چیزی نیاز دارد: قطعات و مواد مصرفی یک صفحه برد (یا تخته نوار) نه LED دو رنگ ، کاتد مشترک نه مقاومت یکسان ، در محدوده 100-220 اهم شش مقاومت یکسان ، در 10kohm - 500kohm محدوده یک قطب ، سوئیچ پرتاب دوگانه یک دسته سنجاق سر یک دسته سیم برق یک ورق مربع کوچک از اکریلیک شفاف ، thick 1 میلی متر ضخامت ، 8 سانتی متر در کنار نوار چسب شفاف Heatshrinks (اختیاری) همه موارد بالا اقلام کاملاً متداولی هستند ، هزینه کل نباید از 20 دلار آمریکا تجاوز کند. ابزارهای راه اندازی Arduino One (Arduino Duemilanove ، Arduino IDE ، کامپیوتر ، کابل USB) ابزارهای الکتریکی معمولی (مولتی متر ، تفنگ لحیم کاری ، سیم کشی ، سیم برش) همه چیز در ارتباط با آردوینو می تواند باشد در https://www.arduino.cc یافت می شود. در ادامه با ساخت!

مرحله 1: سیم کشی ماتریس LED

سیم کشی ماتریس LED
سیم کشی ماتریس LED
سیم کشی ماتریس LED
سیم کشی ماتریس LED

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

مرحله 2: طرح ماتریس LED

چیدمان ماتریس LED
چیدمان ماتریس LED
چیدمان ماتریس LED
چیدمان ماتریس LED

نمودار مدار زیر نحوه اتصال فیزیکی LED ها را نشان می دهد (G1-G9: LED های سبز ، R1-R9: LED های قرمز). این نمودار مخصوص LED های قرمز و سبز است ، اگر از LED های قرمز/سبز مشترک کاتد دو رنگ استفاده می کنید ، فقط یک پایه کاتد در هر جفت قرمز/سبز وجود دارد که باید آن را سیم کشی کنید. خطوط آند قرمز و سبز به پین های PWM می روند از آردوینو (پایه های 3 ، 5 ، 6 ، 9 ، 10 ، 11 در Duemilanove) ، به طوری که می توانیم بعداً اثراتی مانند محو شدن داشته باشیم. خطوط کاتد به پین های 4 ، 7 و 8 می روند. هر خط کاتد و آند دارای مقاومت 100 اهم برای حفاظت هستند.

مرحله 3: آدرس دهی به ماتریس LED

برای کد tic tac toe ، ما باید بتوانیم اطلاعات زیر را در مورد LED ها ذخیره کنیم: - آیا LED روشن است یا خیر - در صورت روشن بودن ، قرمز یا سبز. یکی از روشهای این کار ذخیره حالت است در یک آرایه 9 سلولی ، از سه رقم برای نشان دادن حالت استفاده کنید (0 = خاموش ، 1 = قرمز روشن ، 2 = سبز روشن). هربار که باید وضعیت LED ها را بررسی کنیم ، به عنوان مثال ، برای بررسی اینکه آیا شرایط win وجود دارد یا خیر ، باید آرایه را دور بزنیم. این یک روش کارآمد است ، اما کمی ترد است. یک روش ساده تر استفاده از دو گروه نه بیتی است. گروه اول نه بیتی وضعیت روشن و خاموش LED ها را ذخیره می کند و گروه دوم نه بیتی رنگ را ذخیره می کنند. سپس ، دستکاری حالت های LED به سادگی یک امر کمی حسابی و تغییرپذیر می شود. در اینجا یک نمونه کار شده است. فرض کنید شبکه tic tac toe خود را به صورت گرافیکی رسم می کنیم و ابتدا از 1s و 0s برای نشان دادن وضعیت روشن و خاموش استفاده می کنیم (1 روشن ، 0 خاموش است): 000 000 = ماتریس با چراغ LED سمت چپ پایین 100 100 010 = ماتریس با مورب چراغهای روشن 001 اگر سلولها را از پایین سمت چپ برشماریم ، می توانیم نمایش های بالا را به صورت یک سری بیت بنویسیم. در مورد اول ، آن 100000000 و در مورد دوم ، 001010100 خواهد بود. اگر اینها را به عنوان نمایندگی دوتایی در نظر بگیریم ، هر سری بیت را می توان در یک عدد واحد متراکم کرد (256 در مورد اول ، 84 در مورد دوم) بنابراین به جای استفاده از یک آرایه برای ذخیره وضعیت ماتریس ، ما فقط می توانیم از یک عدد واحد استفاده کنیم! به طور مشابه ، ما می توانیم رنگ LED را به همان شکل نشان دهیم (1 قرمز است ، 0 سبز است). بیایید ابتدا فرض کنیم همه LED ها روشن هستند (بنابراین وضعیت روشن و خاموش با 511 نشان داده می شود). ماتریس زیر نشان دهنده وضعیت رنگ LED ها است: 010 سبز ، قرمز ، سبز 101 قرمز ، سبز ، قرمز 010 سبز ، قرمز ، سبز در حال حاضر ، هنگام نمایش ماتریس LED ، ما فقط باید در هر یک از بیت ها چرخه بزنیم ، ابتدا در حالت روشن و خاموش ، و سپس در حالت رنگ. به عنوان مثال ، فرض کنید حالت روشن و خاموش ما 100100100 است و حالت رنگ 010101010 است. در اینجا الگوریتم ما برای روشن کردن ماتریس LED آمده است: مرحله 1. یک حالت دکمه خاموش با یک باینری 1 (یعنی بیت) اضافه کنید. ماسک زدن) مرحله 2. اگر درست است ، LED روشن است. اکنون یک افزودن کمی حالت رنگ با یک باینری 1 انجام دهید. مرحله 3. اگر درست است ، LED قرمز را روشن کنید. اگر اشتباه است ، LED سبز را روشن کنید. مرحله 4. حالت روشن و خاموش و حالت رنگ را یک بیت به راست (یعنی تغییر بیت) تغییر دهید. مرحله 5. مراحل 1 - 4 را تکرار کنید تا تمام 9 بیت خوانده شوند. توجه داشته باشید که ما ماتریس را به سمت عقب پر می کنیم - با سلول 9 شروع می کنیم ، سپس به سلول 1 ادامه می دهیم. همچنین ، حالتهای روشن و خاموش به عنوان یک نوع عدد صحیح (کلمه) بدون علامت به جای نوع صحیح امضا شده ذخیره می شوند. این به این دلیل است که در کمی تغییر ، اگر مراقب نباشیم ، ممکن است ناخواسته علامت متغیر را تغییر دهیم. ضمیمه کد روشنایی ماتریس LED است.

مرحله 4: ساخت تاچ پد

ساخت صفحه لمسی
ساخت صفحه لمسی
ساخت صفحه لمسی
ساخت صفحه لمسی
ساخت صفحه لمسی
ساخت صفحه لمسی
ساخت صفحه لمسی
ساخت صفحه لمسی

صفحه لمسی از ورقه ای از اکریلیک نازک ساخته شده است ، آنقدر بزرگ است که روی ماتریس LED پوشانده می شود. سپس سیمهای ردیف و ستون را با استفاده از نوار شفاف روی ورق اکریلیک بچسبانید. نوار شفاف همچنین به عنوان فاصله بین سیمها ، در تقاطعها استفاده می شود. مطمئن شوید که از ابزارهای تمیز استفاده می کنید ، تا از چربی انگشتان به قسمت چسبناک نوار جلوگیری شود. لکه های اثر انگشت نه تنها زشت به نظر می رسند ، بلکه نوار را کمتر می چسبانند. یک سر هر خط را جدا کرده و انتهای دیگر را به سیم بلندتری بچسبانید. قبل از لحیم کاری روی اتصالات ، یک مقاومت را در خط سیمها لحیم کنید. مقاومتهای مورد استفاده در اینجا 674k هستند ، اما هر مقدار بین 10k و 1M باید خوب باشد. اتصالات به Arduino با استفاده از 6 پین آنالوگ ، با پین 14-16 متصل به ردیف شبکه سیم ، و پین 17-19 متصل به ستون ها

مرحله 5: صفحه لمسی - چگونه کار می کند

پد لمسی - چگونه کار می کند
پد لمسی - چگونه کار می کند
پد لمسی - چگونه کار می کند
پد لمسی - چگونه کار می کند

همانطور که ما از چند ضلعی عرضی برای راه اندازی یک ماتریس LED با حداقل پین استفاده کردیم ، می توانیم از یک چند ضلعی عرضی مشابه برای تنظیم یک آرایه حسگر لمسی استفاده کنیم ، سپس می توانیم از آن برای فعال کردن LED ها استفاده کنیم. مفهوم این تاچ پد ساده است. این در اصل یک شبکه سیم است که سه سیم برهنه در ردیف و سه سیم برهنه در ستون های بالای ردیف ها اجرا می شود. در هر نقطه تقاطع یک مربع کوچک از عایق وجود دارد که از تماس دو سیم جلوگیری می کند. انگشتی که به تقاطع دست می زند با هر دو سیم تماس می گیرد و در نتیجه مقاومت عظیمی اما محدود بین دو سیم ایجاد می شود. بنابراین یک جریان کوچک ، اما قابل تشخیص ، را می توان از طریق انگشت از یک سیم به سیم دیگر به جریان انداخت. برای تعیین اینکه کدام تقاطع فشار داده شده است ، از روش زیر استفاده شده است: مرحله 1: همه خطوط ستون را روی OUTPUT LOW تنظیم کنید. مرحله 2: خطوط ردیف را روی INPUT تنظیم کنید ، در حالی که کشش های داخلی فعال هستند. مرحله 3: یک خوانش آنالوگ در هر سطر ردیف انجام دهید تا زمانی که مقدار به زیر یک آستانه کاهش یابد. این به شما می گوید که تقاطع فشرده در کدام ردیف است. مرحله 4: مراحل 1-3 را تکرار کنید ، اما اکنون ستون ها به عنوان ورودی و سطرها به عنوان خروجی هستند. این به شما می گوید که تقاطع فشرده کدام ستون است. برای به حداقل رساندن اثرات نویز ، تعدادی از قرائت ها گرفته می شود و سپس به طور متوسط اندازه گیری می شود. نتیجه میانگین سپس با یک آستانه مقایسه می شود. از آنجا که این روش فقط یک آستانه را بررسی می کند ، برای تشخیص فشارهای همزمان مناسب نیست. با این حال ، از آنجا که انگشت پا tic tac به نوبت پیش می رود ، خواندن یک پرس کافی است. پیوست یک طرح است که نحوه عملکرد صفحه تاچ را نشان می دهد. همانطور که در ماتریس LED ، از بیت ها برای نشان دادن تقاطع فشرده استفاده می شود.

مرحله ششم: همه چیز را کنار هم قرار دهید

همه چیز را کنار هم قرار دادن
همه چیز را کنار هم قرار دادن

اکنون که تمام اجزای فردی انجام شده است ، وقت آن است که همه آنها را کنار هم قرار دهید. روی سیم ماتریس LED را بپوشانید. ممکن است لازم باشد شماره های پین را در کد ماتریس LED تغییر دهید تا با سنسور شبکه سیم هماهنگ شود. با استفاده از چسب ها یا چسب های دلخواه ، سیم سیم را در محل خود محکم کنید و روی یک تخته بازی خوب بچسبانید. بین پین 12 و زمین آردوینو یک سوئیچ اضافه کنید. این سوئیچ بین 2 حالت پخش کننده و 1 حالت پخش کننده (در مقابل میکروکنترلر) جابجا می شود.

مرحله 7: برنامه نویسی Tic Tac Toe

کد بازی ضمیمه شده است. بیایید ابتدا بازی tic tac toe را به مراحل مختلف آن ، در حالت دو بازیکن تقسیم کنیم: مرحله 1: بازیکن A با لمس یک تقاطع ، یک سلول پر نشده را انتخاب می کند. مرحله 2: LED آن سلول با رنگ A. روشن می شود. مرحله 3: بررسی کنید که آیا بازیکن A برنده شده است یا خیر. مرحله 4: بازیکن B یک سلول پر نشده را انتخاب می کند. مرحله 5: LED آن سلول با رنگ B روشن می شود. مرحله 6: بررسی کنید که آیا بازیکن B برنده شده است یا خیر. مرحله 7: 1-6 را تکرار کنید تا شرط برنده شدن وجود داشته باشد یا همه سلول ها پر شوند. خواندن سلول ها: برنامه بین خواندن شبکه و نمایش ماتریس LED حلقه می کند به تا زمانی که سنسور شبکه مقدار غیر صفر را ثبت نکند ، این حلقه ادامه می یابد. هنگامی که یک تقاطع فشرده می شود ، متغیر پرس شده موقعیت سلول فشرده را ذخیره می کند. بررسی اینکه آیا سلول پر نشده است: هنگامی که یک خواندن موقعیت به دست می آید (متغیر تحت فشار) ، با وضعیت سلول فعلی (ذخیره شده در متغیر GridOnOff) مقایسه می شود با استفاده از یک افزودنی بیتی اگر سلول پرس شده پر نشده است ، سپس LED را روشن کنید ، در غیر این صورت به خواندن سلول ها بازگردید. تغییر رنگ: برای ثبت اینکه نوبت آن کیست ، از متغیر بولی ، Turn استفاده می شود. رنگ LED که هنگام انتخاب سلول انتخاب می شود توسط این متغیر تعیین می شود که هر بار یک سلول انتخاب می شود متناوب است. بررسی شرط برنده شدن: فقط 8 شرط ممکن وجود دارد ، و اینها به عنوان متغیرهای کلمه در یک آرایه ذخیره می شوند (winArray) دو مقایسه بیتی برای مقایسه موقعیت های سلول پر شده بازیکن با شرایط برد استفاده می شود. اگر مسابقه ای وجود داشته باشد ، برنامه روتین برد را نشان می دهد ، پس از آن یک بازی جدید را شروع می کند. بررسی شرایط تساوی: هنگامی که نه دور بازی ثبت شده است و هنوز هیچ شرایطی برای برد وجود ندارد ، بازی مساوی است. سپس LED ها محو می شوند و یک بازی جدید شروع می شود. تغییر حالت یک پخش کننده: اگر سوئیچ در حالت روشن باشد ، برنامه به حالت یک پخش کننده می رود ، ابتدا پخش کننده انسانی شروع می کند. در پایان نوبت پخش کننده انسانی ، برنامه به سادگی یک سلول تصادفی را انتخاب می کند. بدیهی است ، این هوشمندترین استراتژی نیست!

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

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

توصیه شده: