فهرست مطالب:

ماشین الگوریتم: 13 مرحله (همراه با تصاویر)
ماشین الگوریتم: 13 مرحله (همراه با تصاویر)

تصویری: ماشین الگوریتم: 13 مرحله (همراه با تصاویر)

تصویری: ماشین الگوریتم: 13 مرحله (همراه با تصاویر)
تصویری: ‫‫آموزش یادگیری ماشین 13 - آشنایی و پیاده سازی الگوریتم ماشین بردار پشتیبان (SVM)-دیتاست واقعی پزشکی 2024, جولای
Anonim
Image
Image
نوار LED: چاپ ماسک به صورت سه بعدی
نوار LED: چاپ ماسک به صورت سه بعدی

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

اهداف

هدف اصلی من برای این پروژه ایجاد یک نمایش تعاملی برای دانش آموزان برای تجسم و کشف الگوریتم ها بود. من خودم را محدود به الگوریتم هایی کردم که روی آرایه های مقادیر (اعداد صحیح) کار می کنند ، بنابراین می توانم از یک نوار LED RGB آدرس پذیر برای تجسم مطالب آرایه استفاده کنم. آرایه دارای 100 عنصر است و هر عدد صحیح به ترتیب رنگین کمان به یک رنگ نگاشت می شود ، به طوری که بلافاصله آشکار می شود که آرایه مرتب شده ، تا حدی مرتب شده یا تصادفی شده است. با این حال ، علاوه بر مقادیر ، من راهی برای تجسم جنبه های کنترلی الگوریتم می خواستم - به عنوان مثال ، کدام عناصر آرایه در حال مقایسه یا تعویض هستند.

اهداف خاص عبارتند از:

- ارائه انواع الگوریتم های جستجو و مرتب سازی

- مقادیر موجود در آرایه را به گونه ای تجسم کنید که پیشرفت الگوریتم را برجسته کند

- تجسم کنترل الگوریتم ؛ به ویژه عناصر مورد توجه

- به کاربران اجازه دهید الگوهای داده ورودی را به جای ایجاد مقادیر تصادفی انتخاب کنند

- به کاربران اجازه دهید سرعت را کنترل کرده و الگوریتم را متوقف کنند

-به کاربران اجازه دهید بهترین حالت ، بدترین حالت ، رفتار متوسط (الگوریتم خاص) را مجبور کنند

- نمایش تعداد مراحل با پیشروی الگوریتم

تجسم

از نظر طراحی فیزیکی ، جالب ترین بخش این پروژه تجسم آرایه است. من با نحوه نمایش داده ها و کنترل و نحوه ساختن خود دستگاه نمایش مشکل داشتم. هدف من این بود که مقادیر داده را به صورت دایره های رنگی و نقاط کنترل را به عنوان فلش های رنگی نشان دهم که به مقادیر داده اشاره می کند. پس از انجام برخی آزمایشها ، من روی یک طرح با دو نوار موازی از 100 LED RGB (WS2812) با یک ماسک دایره ای روی هر LED اطلاعات و یک ماسک مثلثی بر روی هر LED کنترل قرار گرفتم. من یک مدل سه بعدی از ماسک با 10 جفت دایره و مثلث ساختم ، و سپس 3D از این ماژول ها را در مجموع 100 دایره و 100 مثلث چاپ کردم. اندازه و فاصله ماسک من برای نوارهایی با 100 LED در هر متر طراحی شده است. فایلهای مدل سه بعدی بعداً در این توضیحات ارائه شده است.

لوازم الکترونیکی و محفظه

بقیه دستگاه از نظر الکترونیکی ساده است. علاوه بر دو نوار LED ، تعدادی دکمه لحظه ای ، رمزگذار چرخشی (برای کنترل سرعت) و نمایشگر 7 قسمتی (برای نشان دادن مراحل) وجود دارد. با وجود تعداد زیادی دکمه و کنترل ، من از میکروکنترلر ESP32 استفاده کردم زیرا پین های زیادی را در معرض دید قرار می دهد و به دلیل قدرتمند بودن آن است. من استراتژی سیم کشی را مرور می کنم ، اما این بسیار اساسی است. اگر می خواهید از پین های کمتری استفاده کنید ، احتمالاً می توانید با شیفت رجیسترها کاری هوشمند انجام دهید.

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

نرم افزار

کد این دستگاه به صورت رایگان در GitHub موجود است و من تمام تلاش خود را برای مستندسازی نحوه عملکرد و نحوه پیکربندی آن انجام داده ام. تنها کتابخانه خارجی مورد نیاز شما FastLED برای رانندگی نوارهای WS2812 است.

تدارکات

الکترونیک

1 تابلوی توسعه ESP32 (به عنوان مثال ،

2 نوار WS2812 یا LED مشابه ، تراکم 100 LED در هر متر (به عنوان مثال ،

1 دکمه "شروع" مثلث (به عنوان مثال ،

12 دکمه لحظه ای (به عنوان مثال ، https://amzn.com/B01N4D4750) - در صورت تمایل اشکال مختلف

1 بسته (20) اتصال دهنده های دکمه از قبل اتصال (به عنوان مثال ،

1 بسته اتصال JST (به عنوان مثال ،

1 رمزگذار روتاری (به عنوان مثال ،

1 دستگیره برای رمزگذار چرخشی (به عنوان مثال ،

1 بسته اتصال Dupont (به عنوان مثال ، https://amzn.com/B014YTPFT8) - ارزش خرید ابزار جمع کننده را نیز دارد.

1 جک بشکه (برای قدرت) (به عنوان مثال ،

1 صفحه نمایش عددی 7 قسمتی TM1637 (به عنوان مثال ،

تجهیزات لحیم کاری و سیم کشی

فایل های مدل سه بعدی

می توانید مدل سه بعدی را برای یک جفت ماژول 10 نوری در Thingiverse پیدا کنید:

www.thingiverse.com/thing:4178181

شما باید این مدل را پنج بار و در مجموع 10 ماژول چاپ کنید.

نرم افزار

github.com/samguyer/AlgorithmMachine

محفظه

چوب ، پلکسی ، پیچ و مهره های فولادی ضد زنگ

مواد انتشار. مورد علاقه من Lee Filters #216 full white diffusion است ، اما گزینه های دیگری نیز وجود دارد. حتی کاغذ سفید ساده نیز کار خوبی را انجام می دهد.

مرحله 1: الگوریتم های 101

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

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

چقد طول میکشه؟

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

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

به عنوان مثال ، جستجوی لیستی از شماره تلفن های N ، مراحل N را می طلبد. دوبار نگاه کردن به لیست 2N گام می برد. هر دو مورد الگوریتم زمان خطی نامیده می شوند - تعداد کل مراحل چند برابر اندازه ورودی است. الگوریتم های دیگر درجه دوم (N مربع زمان) یا مکعب (N مکعب) یا لگاریتمی (log N) یا ترکیبی از آنها هستند. برخی از سخت ترین مشکلات محاسباتی به الگوریتم های زمان نمایی نیاز دارند (2^N).

خوب ، پس چی؟

وقتی تعداد اقلام داده N کم باشد ، اهمیت چندانی ندارد. به عنوان مثال ، برای N = 10 ، 10N آن نام N مربع است. اما N = 1000 چطور؟ یا N = 1000000؟ یک میلیون مربع یک عدد بسیار بزرگ است. اگر ورودی به اندازه کافی بزرگ باشد ، حتی در یک کامپیوتر بسیار سریع ، یک الگوریتم درجه دوم می تواند مدت زمان زیادی طول بکشد. الگوریتم های نمایی بسیار مشکل تر هستند: برای N = 50 یک الگوریتم نمایی دو هفته به طول می انجامد حتی در رایانه ای که هر مرحله فقط یک نانو ثانیه است (1 میلیاردم ثانیه). آخ!

در انتهای دیگر مقیاس ما الگوریتم های زمان لگاریتمی داریم که بسیار سریع هستند. زمان ورود برعکس زمان نمایی است: با توجه به اندازه ورودی N ، تعداد مراحل نمایانگر T در فرمول 2^T = N. به عنوان مثال ، اگر اندازه ورودی ما یک میلیارد باشد ، یک الگوریتم زمان ورود فقط 30 مورد نیاز دارد مراحل ، از آنجا که 2^30 = 1 ، 000 ، 000 ، 000. چقدر شیرین است؟! ؟؟!

شاید برای شما این سوال پیش آمده باشد که چه کسی به اندازه ورودی های میلیونی یا میلیاردی اهمیت می دهد؟ در مورد آن فکر کنید: چند کاربر در فیس بوک وجود دارد؟ چند صفحه وب توسط Google نمایه می شوند؟ چند جفت پایه در ژنوم انسان وجود دارد؟ چند اندازه گیری برای شبیه سازی آب و هوا انجام می شود؟

مرحله 2: الگوریتم ها

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

جستجوی خطی

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

جستجوی دودویی

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

مرتب کردن حباب

مرتب کردن یک لیست و تبادل مکرر عناصر همسایه که مرتب نیستند. نیاز به زمان درجه دوم دارد.

مرتب سازی درج

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

Quicksort

با تقسیم مکرر لیست به نصف و انتقال همه مقادیر کمتر از میانگین به نیمه اول و همه مقادیر بزرگتر از متوسط به یک نیمه ، یک لیست را مرتب کنید. در عمل ، ما نمی توانیم میانه را به طور موثری پیدا کنیم ، بنابراین یک مقدار را به طور تصادفی انتخاب می کنیم. در نتیجه این الگوریتم در بدترین حالت می تواند درجه دوم باشد ، اما معمولاً به زمان log * N * نیاز دارد.

ادغام مرتب سازی

یک لیست را با تقسیم به نصف ، مرتب سازی دو نیمه به صورت جداگانه (با استفاده از مرتب سازی ادغام) و سپس ادغام آنها با درهم آمیختن مقادیر مرتب کنید. همیشه به زمان N * logN نیاز دارد.

مرتب سازی بر روی پشته

مرتب کردن یک لیست با ایجاد یک ساختار داده به نام heap ، که به شما امکان می دهد کوچکترین مقدار را در زمان ورود پیدا کنید. همیشه به زمان N * logN نیاز دارد.

مرتب سازی بیتونیک

مشابه ادغام مرتب سازی و مرتب سازی سریع ، یک لیست را به نصف تقسیم کنید ، نیمه ها را مرتب کنید و آنها را دوباره ترکیب کنید. این الگوریتم به N * logN * logN زمان نیاز دارد ، اما این مزیت را دارد که به راحتی قابل موازی سازی است.

مرحله 3: نوار LED: چاپ ماسک به صورت سه بعدی

نوار LED: چاپ ماسک به صورت سه بعدی
نوار LED: چاپ ماسک به صورت سه بعدی
نوار LED: ماسک را به صورت سه بعدی چاپ کنید
نوار LED: ماسک را به صورت سه بعدی چاپ کنید

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

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

مرحله 4: جایگزین های نوار LED

جایگزین های نوار LED
جایگزین های نوار LED
جایگزین های نوار LED
جایگزین های نوار LED
جایگزین های نوار LED
جایگزین های نوار LED

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

برای حلقه ها ، من یک لوله برنجی 13/32 خریدم که تقریباً قطر آن 1 سانتی متر است. من آن را به صد قسمت 1 سانتی متری برش دادم و سپس با اسپری آنها را سفید کردم.

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

مرحله 5: محفظه نوار LED

محفظه نوار LED
محفظه نوار LED
محفظه نوار LED
محفظه نوار LED
محفظه نوار LED
محفظه نوار LED

محفظه من نسبتاً ساده است: دو نوار چوب برای کناره ها و دو نوار پلکسی برای بالا و پایین. طول همه قطعات حدود 102 سانتی متر است (1 متر برای LED ها ، بعلاوه کمی بیشتر برای قرار دادن سیم کشی). طرفین باید کمی بلندتر از 1 سانتی متر باشند تا جایی برای نوارهای LED ایجاد شود. پس از برش نوارها ، قطعات ماسک چاپ شده سه بعدی را بین آنها قرار دادم تا عرض پلکسی را اندازه گیری کنم. دو تکه پلکسی به عرض و طول میله برش دهید. در نهایت ، یک نوار از مواد انتشار را برش دهید تا روی ماسک جا بگیرد.

برای انتشار من واقعاً لی فیلترهای شماره 216 (انتشار کامل سفید) را دوست دارم. این یک ورق پلاستیکی نازک است که بدون از دست دادن نور زیاد حتی پخش می شود. اما چیزهای گران قیمت است. گاهی اوقات می توانید ورق های کوچکتر را برای فروش آنلاین پیدا کنید ، اما یک رول کامل 125 دلار برای شما عقب می اندازد. برخی از گزینه های دیگر کاغذ سفید یا هر نوع دیگری از پلاستیک ساتن یا مات است. یک انتخاب محبوب تشک های پلاستیکی نازک برش است.

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

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

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

یک الگوی آزمایشی اجرا کنید. شغل خوب - در اصطلاح، خسته نباشی! شما سخت ترین کار را انجام داده اید!

مرحله 6: کنترل پنل

صفحه کنترل
صفحه کنترل
صفحه کنترل
صفحه کنترل
صفحه کنترل
صفحه کنترل
صفحه کنترل
صفحه کنترل

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

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

مرحله 7: مهار دکمه

مهار دکمه
مهار دکمه
مهار دکمه
مهار دکمه
مهار دکمه
مهار دکمه

سیم کشی تعداد زیادی دکمه می تواند یک درد واقعی باشد. خوشبختانه افرادی که ماشین های بازی درست می کنند ، برخی از اتصالات استاندارد را ارائه کرده اند که می توانید از آنها استفاده کنید. هر کابل اتصال دکمه دارای دو سیم است ، یکی برای VCC و دیگری برای اتصال به زمین. یک سر آن دارای اتصالات بیل است که با سیم های پشت دکمه متناسب است - زمین را به سیم "معمولاً باز" و VCC را به سیم "معمولی" وصل کنید. در این پیکربندی ، هنگامی که کاربر دکمه را فشار می دهد ، مدار تکمیل می شود و میکروکنترلر در پین ورودی مربوطه HIGH را می خواند.

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

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

مرحله 8: رمزگذار روتاری

رمزگذار روتاری
رمزگذار روتاری

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

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

مرحله 9: نمایش 7 قسمتی

صفحه نمایش 7 قسمتی
صفحه نمایش 7 قسمتی

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

پشت دارای چهار پین است: VCC ، زمین و دو سیم برای پروتکل سریال. من یک سربرگ 4 پین را لحیم کردم ، که به کانکتور مربوطه Dupont متصل به میکروکنترلر متصل می شود.

مرحله 10: صفحه اصلی کنترل کننده

صفحه کنترل اصلی
صفحه کنترل اصلی
صفحه کنترل اصلی
صفحه کنترل اصلی
صفحه کنترل اصلی
صفحه کنترل اصلی

برد کنترل اصلی ، میکروکنترلر و همه اتصالات کنترل ها (دکمه ها ، صفحه نمایش ، LED ها) را در خود جای داده است. میکروکنترلر یک ESP32 است که قدرت محاسبات و حافظه زیادی را فراهم می کند و تعداد زیادی پین را در معرض دید قرار می دهد. سیم کشی تقریباً استاندارد است ، اما به چند نکته جالب اشاره می کنم.

توجه: ممکن است بخواهید قبل از شروع سیم کشی برد اصلی ، کد (https://github.com/samguyer/AlgorithmMachine) را مشاهده کنید تا پیکربندی پین شما با من مطابقت داشته باشد.

من یک جک بشکه ای را برای تغذیه روی تخته لحیم کردم و دو سیم مسی ضخیم را به برق و ریل زمین برد وصل کردم. دلیل این است که اگر میزان روشنایی زیاد باشد ، نوار LED می تواند قدرت زیادی را بکشد و من نمی خواهم تمام این قدرت را از طریق اتصال USB روی میکروکنترلر بکشم.

برای ساده سازی سیم کشی دکمه ، من یک نوار هدر زاویه راست مرد به زن را در تمام طرف میکروکنترلر (سمت بالا برد مانند تصویر) لحیم کردم. کانکتورهای Dupont از مهار دکمه مستقیماً به این هدر متصل می شوند.

مهم: برق دکمه ها (سیم قرمز) باید به خط برق 3.3 ولت روی میکروکنترلر متصل شود. ESP32 یک تراشه 3.3V است ، بنابراین فقط منابع 3.3V باید به پین های داده متصل شوند.

میکروکنترلر از طریق پین USB 5 ولت و زمین ، نیروی (یا نیرو را فشار می دهد) به ریل ها (سمت پایین برد همانطور که نشان داده شده است) می کشد. همه سیمهای قرمز/سیاه دیگر VCC و زمین هستند.

دو سیم آبی خطوط داده نوارهای LED (WS2812s) هستند.زوج زرد/سبز خطوط داده رمزگذار چرخشی هستند و زوج زرد اتصال سری به صفحه نمایش 7 قسمتی هستند.

مرحله 11: مونتاژ

مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ

این سری عکسها مونتاژ و سیم کشی نهایی را نشان می دهد. همچنین صفحه کنترل اصلی را به پشت در بالا وصل کردم.

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

مرحله 12: کد

ابتدا ، Arduino IDE خود را باز کنید و مطمئن شوید که کتابخانه FastLED را نصب کرده اید.

کد Algorithm Machine را از GitHub بارگیری کنید:

github.com/samguyer/AlgorithmMachine.git

شما می توانید آن را مستقیماً در پوشه Arduino خود کلون کنید ، یا آن را با دست کپی کنید.

قبل از بارگذاری ، مطمئن شوید که تنظیمات پین با پیکربندی سخت افزاری شما مطابقت دارد. من تمام تنظیمات پین را در بالای فایل قرار داده ام.

بارگذاری کنید و لذت ببرید!

مرحله 13: نحوه استفاده

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

ابتدا از دکمه های داده برای مقداردهی اولیه آرایه استفاده کنید. سه انتخاب وجود دارد: (1) تصادفی سازی ، (2) افزودن یک مقدار تصادفی ، و (3) معکوس کردن آرایه. توجه داشته باشید که مقادیر پایدار هستند ، بنابراین می توانید کارهایی مانند مرتب کردن آنها را ابتدا انجام دهید ، سپس کمی نویز اضافه کنید ، سپس یک الگوریتم مرتب سازی یا جستجو متفاوت را اجرا کنید.

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

دستگیره سرعت را کنترل می کند. همچنین می توانید برای پخش و توقف موقت الگوریتم "play" را فشار دهید.

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

مسابقه STEM
مسابقه STEM
مسابقه STEM
مسابقه STEM

جایزه بزرگ در مسابقه STEM

توصیه شده: