جدول المحتويات:
- اللوازم
- الخطوة 1: الخوارزميات 101
- الخطوة الثانية: الخوارزميات
- الخطوة 3: شريط LED: طباعة ثلاثية الأبعاد للقناع
- الخطوة 4: بدائل شريط LED
- الخطوة 5: ضميمة شريط LED
- الخطوة السادسة: لوحة التحكم
- الخطوة 7: زر تسخير
- الخطوة 8: التشفير الروتاري
- الخطوة 9: عرض 7 أجزاء
- الخطوة 10: لوحة التحكم الرئيسية
- الخطوة 11: التجميع
- الخطوة 12: الكود
- الخطوة 13: كيفية الاستخدام
فيديو: آلة الخوارزمية: 13 خطوة (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
لقد قمت بتدريس علوم الكمبيوتر على مستوى الكلية لمدة 15 عامًا ، وعلى الرغم من أن خبرتي في مجال البرمجة أكثر ، إلا أنني ما زلت أقضي الكثير من الوقت في تغطية الخوارزميات القياسية للبحث والفرز. من وجهة نظر التدريس ، فإن القضية المركزية هي التعقيد الحسابي: كم من الوقت تتطلب كل خوارزمية ، بالنظر إلى مدخلات ذات حجم معين؟ لكن هناك العديد من الفروق الدقيقة. على سبيل المثال ، هل للخوارزميات أوقات تشغيل مختلفة اعتمادًا على قيم الإدخال المحددة (على عكس الحجم)؟ في أي الحالات تختار خوارزمية الفرز على الأخرى؟ على الرغم من أننا نناقش هذه المشكلات في الملخص ، فقد أزعجني دائمًا أنه لا توجد طريقة سهلة لمعرفة كيفية عمل الخوارزميات المختلفة في ظل ظروف مختلفة.
الأهداف
كان هدفي الشامل لهذا المشروع هو إنشاء عرض تفاعلي للطلاب لتصور الخوارزميات واستكشافها. لقد قصرت نفسي على الخوارزميات التي تعمل على صفائف من القيم (أعداد صحيحة) ، لذلك يمكنني استخدام شريط RGB LED قابل للتوجيه لتصور محتويات الصفيف. تحتوي المصفوفة على 100 عنصر ، ويتم تعيين كل عدد صحيح إلى لون بترتيب قوس قزح ، بحيث يكون واضحًا على الفور عندما يتم فرز المصفوفة أو فرزها جزئيًا أو ترتيبها بشكل عشوائي. بالإضافة إلى القيم ، مع ذلك ، أردت طريقة لتصور جوانب التحكم في الخوارزمية - على سبيل المثال ، عناصر المصفوفة التي تتم مقارنتها أو تبديلها حاليًا.
الأهداف المحددة هي:
- توفير خوارزميات البحث والفرز المتنوعة
- تصور القيم في المصفوفة بطريقة تسلط الضوء على تقدم الخوارزمية
- تصور التحكم في الخوارزمية. على وجه الخصوص ، العناصر قيد النظر.
- السماح للمستخدمين باختيار أنماط بيانات الإدخال بدلاً من توليد قيم عشوائية دائمًا
- السماح للمستخدمين بالتحكم في السرعة وإيقاف الخوارزمية مؤقتًا
- السماح للمستخدمين بفرض السلوك الأفضل والأسوأ ومتوسط الحالة (خاص بالخوارزمية)
- اعرض عدد الخطوات أثناء تقدم الخوارزمية
التصور
من وجهة نظر التصميم المادي ، الجزء الأكثر إثارة للاهتمام في هذا المشروع هو تصور المصفوفة. لقد عانيت في كيفية إظهار البيانات والتحكم ، وكيفية بناء جهاز العرض نفسه. كان هدفي هو إظهار قيم البيانات كدوائر ملونة ونقاط التحكم على هيئة أسهم ملونة تشير إلى قيم البيانات. بعد بعض التجارب ، استقرت على تصميم بشريطين متوازيين من 100 RGB LEDs (WS2812) بقناع دائري فوق كل بيانات LED وقناع مثلث فوق كل LED تحكم. لقد صنعت نموذجًا ثلاثي الأبعاد للقناع مكونًا من 10 أزواج من الدوائر والمثلثات ، ثم قمت بطباعة 10 من هذه الوحدات النمطية بإجمالي 100 دائرة و 100 مثلث. تم تصميم حجم القناع والتباعد بينه وبين الشرائط التي تحتوي على 100 مصباح LED لكل متر. يتم توفير ملفات النماذج ثلاثية الأبعاد لاحقًا في هذا الوصف.
الإلكترونيات والعلبة
ما تبقى من الجهاز واضح ومباشر من وجهة نظر الإلكترونيات. بالإضافة إلى شريطي LED ، هناك مجموعة من الأزرار اللحظية ، وجهاز تشفير دوار (للتحكم في السرعة) ، وشاشة من 7 مقاطع (لإظهار الخطوات). مع وجود العديد من الأزرار وعناصر التحكم ، اخترت استخدام متحكم ESP32 لأنه يعرض الكثير من المسامير ولأنه قوي إلى حد ما. سوف أتناول إستراتيجية الأسلاك ، لكنها أساسية جدًا. ربما يمكنك القيام بشيء ذكي باستخدام سجلات التحويل إذا كنت تريد استخدام عدد أقل من الدبابيس.
يمكنك بناء العلبة لهذا الجهاز في العديد من الأشكال المختلفة. تخيلتها في البداية على أنها لوحة مستطيلة كبيرة مع شريط LED عبر الجزء العلوي وشبكة من الأزرار في المنتصف. الشكل الذي انتهيت إليه مستوحى من نوع من رؤية الستينيات لتكنولوجيا عصر الفضاء. يمكنك أيضًا بنائه باستخدام شرائط LED في اتجاه رأسي. أو اجعل جزء LED أكبر بكثير - املأ حائطًا بالكامل - بلوحة تحكم منفصلة.
برمجة
رمز هذا الجهاز متاح مجانًا على GitHub ، وقد بذلت قصارى جهدي لتوثيق كيفية عمله وكيفية تكوينه. المكتبة الخارجية الوحيدة التي تحتاجها هي FastLED لتشغيل شرائط WS2812.
اللوازم
إلكترونيات
1 مجلس تطوير ESP32 (على سبيل المثال ،
2 WS2812 أو شرائط LED مماثلة ، كثافة 100 مصباح LED لكل متر (على سبيل المثال ،
1 زر "ابدأ" المثلث (على سبيل المثال ،
12 زرًا مؤقتًا (على سبيل المثال ، https://amzn.com/B01N4D4750) - أشكال مختلفة إذا كنت تريد
1 Pack (20) موصلات الأزرار السلكية (على سبيل المثال ،
1 حزمة موصلات JST (على سبيل المثال ،
1 جهاز تشفير دوار (على سبيل المثال ،
1 مقبض للتشفير الدوار (على سبيل المثال ،
حزمة واحدة من موصلات دوبونت (على سبيل المثال ، https://amzn.com/B014YTPFT8) - إنها تستحق الحصول على أداة العقص أيضًا.
1 مقبس برميل (للطاقة) (على سبيل المثال ،
1 TM1637 شاشة رقمية من 7 أجزاء (على سبيل المثال ،
معدات اللحام والأسلاك
ملفات النماذج ثلاثية الأبعاد
يمكنك العثور على نموذج ثلاثي الأبعاد لزوج من 10 وحدات إضاءة على Thingiverse:
www.thingiverse.com/thing:4178181
ستحتاج إلى طباعة هذا النموذج خمس مرات ليصبح المجموع 10 وحدات.
برمجة
github.com/samguyer/AlgorithmMachine
نسيج
خشب ، زجاج شبكي ، مسامير ومسامير من الصلب غير القابل للصدأ
مواد الانتشار. المفضل لدي هو Lee Filters # 216 بتوزيع أبيض كامل ، ولكن هناك خيارات أخرى. حتى الورق الأبيض العادي يقوم بعمل جيد.
الخطوة 1: الخوارزميات 101
يعتقد الكثير من الناس أن علوم الكمبيوتر هي أساسًا دراسة البرمجة. لكن القلب والروح الحقيقيين لهذا المجال هما الخوارزميات: دراسة الإجراءات المنهجية لحل المشكلات وتكلفتها (عادةً ، المدة التي تستغرقها). كانت الشخصيات المؤثرة في هذا المجال ، مثل آلان تورينج ، ألونزو تشيرش ، وإيدجر ديكسترا ، يفكرون في هذه الأفكار قبل وجود أجهزة الكمبيوتر كما نعرفها.
الميزة الرئيسية لخوارزمية لحل مشكلة معينة هي أنها مفصلة ودقيقة ، بحيث يمكن لأي شخص استخدامها للحصول على حل دون فهم كيفية عملها على الإطلاق ؛ ما عليك سوى اتباع الخطوات بطريقة ميكانيكية وستحصل على الإجابة الصحيحة. يمكنك أن ترى كيف يساعد ذلك في برمجة أجهزة الكمبيوتر ، لأنها تحتاج إلى هذا المستوى من التفاصيل. لا يستطيع الكمبيوتر ملء التفاصيل المفقودة أو إصدار الأحكام ، بالطريقة التي يستطيع بها الشخص ذلك.
كم من الوقت سوف يستغرق؟
بمجرد أن يكون لدينا إجراء مفصل ، فإن السؤال الطبيعي هو كم من الوقت سيستغرق الحصول على الإجابة؟ لا يمكننا استخدام وحدات زمنية عادية ، لأن ذلك يعتمد على من يقوم بالعمل (قارن السرعة التي يمكن أن يحسب بها الشخص شيئًا ما مقابل الكمبيوتر العملاق). بالإضافة إلى ذلك ، يعتمد ذلك على كمية البيانات التي لدينا. من الواضح أن البحث في قائمة تضم مليون رقم هاتف يستغرق وقتًا أطول من البحث في قائمة تضم مائة رقم هاتف.
لوصف تكلفة الخوارزمية ، نختار أولاً بعض العمليات في الإجراء الذي يمثل "خطوة" واحدة - عادةً ما يكون شيئًا بسيطًا ، مثل مقارنة أو إضافة رقمين ، يستغرق وقتًا ثابتًا للقيام به. ثم توصلنا إلى صيغة تصف عدد الخطوات التي ستتخذها الخوارزمية في ضوء عدد من عناصر البيانات. لأسباب تاريخية ، نشير دائمًا إلى عدد عناصر البيانات برأس مال N.
على سبيل المثال ، البحث في قائمة أرقام الهواتف N يأخذ خطوات N. البحث في القائمة مرتين يأخذ خطوات 2N. كلاهما يسمى خوارزميات الوقت الخطي - العدد الإجمالي للخطوات هو بعض مضاعفات حجم الإدخال. الخوارزميات الأخرى هي تربيعية (N تربيع الوقت) أو مكعب (N تكعيب) أو لوغاريتمي (لوغاريتم 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. ما أجمل ذلك؟! ؟؟!
قد تتساءل ، من يهتم بأحجام المدخلات بالملايين أو المليارات؟ فكر في الأمر: كم عدد المستخدمين على Facebook؟ كم عدد صفحات الويب المفهرسة بواسطة Google؟ كم عدد أزواج القواعد الموجودة في الجينوم البشري؟ كم عدد القياسات التي تدخل في محاكاة الطقس؟
الخطوة الثانية: الخوارزميات
تقوم آلة الخوارزمية حاليًا بتنفيذ الخوارزميات التالية. اثنان منهم عبارة عن خوارزميات بحث (ابحث عن قيمة معينة في القائمة) ، والباقي يقوم بفرز الخوارزميات (رتب القيم بالترتيب).
البحث الخطي
ابحث في قائمة القيم واحدة تلو الأخرى بدءًا من البداية. يتطلب وقتًا خطيًا.
بحث ثنائي
ابحث في قائمة عن طريق تقسيمها بشكل متكرر إلى نصفين. يتطلب وقت تسجيل ، ولكن يجب فرز القائمة حتى تعمل.
فقاعة الفرز
قم بفرز قائمة بشكل متكرر مع تبادل العناصر المجاورة غير المرتبة. يتطلب الوقت التربيعي.
ترتيب بالإدراج
افرز القائمة بوضع كل عنصر في مكانه الصحيح في قائمة القيم التي تم فرزها بالفعل. يتطلب الوقت التربيعي.
الترتيب السريع
قم بفرز القائمة عن طريق تقسيم القائمة بشكل متكرر إلى النصف ونقل جميع القيم الأقل من المتوسط إلى النصف الأول ، وجميع القيم الأكبر من المتوسط إلى النصف الثاني. من الناحية العملية ، لا يمكننا العثور على الوسيط بكفاءة ، لذلك نختار قيمة عشوائيًا. نتيجة لذلك ، يمكن أن تكون هذه الخوارزمية تربيعية في أسوأ الحالات ، ولكنها تتطلب عادةً N * logN time.
دمج الفرز
قم بفرز قائمة بتقسيمها إلى نصفين ، وفرز النصفين بشكل منفصل (باستخدام فرز الدمج) ، ثم دمجهم معًا عن طريق تشذير القيم. يتطلب دائمًا وقت N * logN.
نوع كومة
قم بفرز قائمة عن طريق إنشاء بنية بيانات تسمى كومة ، والتي تسمح لك بالعثور على أصغر قيمة في وقت السجل. يتطلب دائمًا وقت N * logN.
نوع بيتوني
على غرار دمج الفرز والفرز السريع ، قسّم القائمة إلى نصفين ، وفرز النصفين ، وأعد توحيدهما. تتطلب هذه الخوارزمية N * logN * logN time ، ولكنها تتميز بسهولة الموازاة.
الخطوة 3: شريط LED: طباعة ثلاثية الأبعاد للقناع
تتمثل الخطوة الأولى في بناء شريط LED في طباعة القناع ثلاثي الأبعاد الذي يعطي الأضواء شكلها. تغطي كل وحدة عشرة عناصر من المصفوفة ، و 10 قيم (دوائر) و 10 مؤشرات (مثلثات) ، لذلك ستحتاج إلى 10 وحدات معًا. يحتوي ملف STL الذي أقدمه هنا على مثيلين من الوحدة ، لذلك ستحتاج إلى القيام بخمس دورات طباعة. ليس لدي أفضل طابعة ثلاثية الأبعاد ، لذلك اضطررت إلى إجراء بعض التنظيف اليدوي عليها باستخدام ملف وورق صنفرة. أهم شيء أن تكون الثقوب الدائرية والمثلثة نظيفة.
في الصور ، سترى إعداد الاختبار الخاص بي: لقد قمت بتسجيل شريطي LED لأسفل وربطتهما بلوح التجارب باستخدام متحكم دقيق. هذه الخطوة ليست ضرورية ، لكنني أردت أن أرى كيف ستبدو قبل أن أبدأ في تجميع العلبة. قمت بترتيب وحدات القناع على شريطي LED وقمت بتشغيل رسم بسيط بألوان عشوائية. مع شريط من مادة الانتشار ، تبرز الأشكال والألوان حقًا.
الخطوة 4: بدائل شريط LED
عندما بدأت هذا المشروع لأول مرة ، جربت طرقًا أخرى لصنع قناع LED. إذا لم يكن لديك طابعة ثلاثية الأبعاد ، فقد تفكر في أحد هذه الخيارات. سأكون صادقًا: إنه لألم كبير أن تصنع هذه الأجزاء.
بالنسبة للدوائر ، اشتريت أنبوبًا نحاسيًا 13/32 ، يبلغ قطره 1 سم تقريبًا. قمت بتقطيعها إلى مائة مقطع 1 سم ثم رشها باللون الأبيض.
بالنسبة للمثلثات ، استخدمت رقائق ألمنيوم ثقيلة الوزن مقطوعة من مقلاة خبز يمكن التخلص منها. لقد صنعت شكلًا مثلثيًا من الخشب ، ثم قمت بلف شرائط قصيرة من الرقائق حول النموذج وقمت بتسجيلها. مرة أخرى ، ستحتاج إلى مئات من هذه الأشياء ، لذلك يستغرق الأمر بعض الوقت والصبر.
الخطوة 5: ضميمة شريط LED
العلبة الخاصة بي بسيطة إلى حد ما: شريحتان من الخشب للجانبين وشريحتين من زجاج شبكي للأعلى والأسفل. يبلغ طول جميع الأجزاء حوالي 102 سم (متر واحد لمصابيح LED ، بالإضافة إلى القليل الإضافي لاستيعاب الأسلاك). يجب أن تكون الجوانب أطول قليلاً من 1 سم لإفساح المجال لشرائط LED. بعد قطع الشرائط ، قمت بوضع قطع القناع المطبوعة ثلاثية الأبعاد بينها لقياس عرض زجاج شبكي. قطع قطعتين من زجاج شبكي عرض وطول الشريط. أخيرًا ، قم بقص شريط من مادة الانتشار لتلائم القناع.
من أجل الانتشار ، أحب حقًا مرشحات Lee # 216 (انتشار أبيض كامل). إنها عبارة عن صفيحة بلاستيكية رفيعة توفر انتشارًا متساويًا دون أن تفقد الكثير من الضوء. لكنها أشياء باهظة الثمن. في بعض الأحيان ، يمكنك العثور على أوراق أصغر للبيع عبر الإنترنت ، ولكن لفة كاملة ستعيدك إلى حوالي 125 دولارًا. بعض الخيارات الأخرى هي ورق أبيض أو أي نوع آخر من البلاستيك الساتان أو المصنفر. الاختيار الشائع هو حصائر القطع البلاستيكية الرقيقة.
قبل أن تقوم بتجميع شريط LED ، تأكد من أن لديك موصلات مناسبة ملحومة بشرائط LED. تأتي الكثير من الشرائط مع خيوط ملحومة مسبقًا ، بحيث يمكنك استخدامها فقط.
لقد بدأت التجميع عن طريق شد الجزء العلوي من زجاج شبكي على الجوانب الخشبية (انظر الصورة). ثم قلبته ووضعت شريط الانتشار ، متبوعًا بقطع القناع العشر. بمجرد أن كنت سعيدًا بالتباعد ، قمت بتثبيتها في مكانها ببضع نقاط من الغراء الساخن.
بعد ذلك ، ضع شريطي LED جنبًا إلى جنب فوق الأقنعة. تأكد من مواجهة مؤشرات LED لأسفل وتأكد من محاذاة كل LED مع الفتحة المقابلة في القناع. أضف بعض الغراء الساخن أو الشريط لتثبيت شرائط LED في مكانها. أخيرًا ، قم بلف الجزء الخلفي من زجاج شبكي.
قم بتشغيل نموذج اختبار. عمل رائع! لقد فعلت الجزء الأصعب!
الخطوة السادسة: لوحة التحكم
لوحة التحكم هي الجزء الذي يوفر أكبر قدر من الحرية الإبداعية. تحتاج فقط إلى الاحتفاظ بجميع أدوات التحكم والإلكترونيات ، جنبًا إلى جنب مع شريط LED. أبسط تصميم هو الألواح المستطيلة: حفر ثقوب للأزرار وأدوات التحكم ، وإرفاق شريط LED. أحب الجمع بين الخشب والزجاج الشبكي والمواد الأخرى لإضفاء نوع من مظهر steampunk / الرجعية الحديثة. في هذه الحالة ، قمت بقطع قطعة من زجاج شبكي شديد التحمل لتثبيت أزرار اختيار الخوارزمية الرئيسية ، وقضيبًا خشبيًا لحمل بقية الأجهزة الإلكترونية. لقد قمت بحفر ثقوب لتتناسب مع حجم أزرار الممرات. تظهر الأسلاك على الظهر ، لكني أحب ذلك!
لقد قمت أيضًا بحفر مساحة للشاشة المكونة من 7 مقاطع ، والمشفرة الدورانية ، وبعض الأسلاك في الخلف. لقد قطعت دادو في الأعلى لعقد شريط LED.
الخطوة 7: زر تسخير
يمكن أن يكون توصيل الكثير من الأزرار بمثابة ألم حقيقي. لحسن الحظ ، ابتكر الأشخاص الذين يصنعون آلات الأركيد بعض الموصلات القياسية التي يمكنك استخدامها. يحتوي كل كبل موصل زر على سلكين ، أحدهما لـ VCC والآخر للأرض. يحتوي أحد الطرفين على موصلات بأسمائها الحقيقية التي تناسب الخيوط الموجودة على ظهر الزر - اربط الأرض بالسلك "المفتوح عادةً" و VCC بالسلك "المشترك". في هذا التكوين ، عندما يضغط المستخدم على الزر ، تكتمل الدائرة وسيقرأ المتحكم الدقيق HIGH على دبوس الإدخال المقابل.
يحتوي الطرف الآخر من الكبل على موصل JST (الشيء الأبيض الصغير). ما هو لطيف في هذه الموصلات هو أنها تدخل في الوعاء بطريقة واحدة فقط ، لذلك لا توجد طريقة لعكس VCC والأرضي عن طريق الخطأ.
ما فعلته هو بناء القليل من الحزام لهذه الموصلات. لقد قمت بلحام سلسلة من أوعية JST على قطعة من اللوح الأولي ثم أعدت الأسلاك مرة أخرى إلى موصلات دوبونت التي سأقوم بتوصيلها بالمتحكم الدقيق. السلك الأحمر هو خط VCC ، وهو يتصل بجميع أوعية JST. الأسلاك الزرقاء هي تلك التي تكون منفصلة لكل زر.
الخطوة 8: التشفير الروتاري
يتيح المشفر الدوار للمستخدم التحكم في سرعة الخوارزمية. أستخدم وحدة تأتي كلوحة اندلاع تتضمن مقاومات سحب لخطي البيانات (الأسلاك الصفراء). يحدث هذا أيضًا ليكون زرًا ، لكنني لا أستخدم هذه الميزة. السلكان الآخران هما VCC والأرضي. أنا أيضا حصلت على مقبض سمين لطيف.
ما يعجبني في المشفر الدوار ، على عكس مقياس الجهد ، هو أنه يشير فقط إلى الدوران (في اتجاه عقارب الساعة مقابل عكس اتجاه عقارب الساعة) إلى وحدة التحكم الدقيقة ، لذلك من السهل تغيير كيفية تفسير القيمة. على سبيل المثال ، يمكنك منحه إحساسًا بالتسارع (مثل الماوس) عندما يقوم المستخدم بتدويره بسرعة.
الخطوة 9: عرض 7 أجزاء
ليس هناك الكثير لأقوله هنا. هذه الأشياء في كل مكان. يتم التحكم في مصابيح LED بواسطة شريحة تسمى TM1637 ، والتي تتصل بالمتحكم الدقيق من خلال بروتوكول تسلسلي بسيط. أستخدم مكتبة حالية تسمح لي بإخبارها بالرقم الذي أريد إظهاره ، وستقوم بالباقي.
يحتوي الجزء الخلفي على أربعة دبابيس: VCC ، أرضي ، وسلكان للبروتوكول التسلسلي. لقد قمت بلحام قطعة رأس ذات 4 سنون ، والتي تتصل بموصل دوبونت المقابل الموصّل بالمتحكم الدقيق.
الخطوة 10: لوحة التحكم الرئيسية
تضم لوحة التحكم الرئيسية وحدة التحكم الدقيقة نفسها وجميع الموصلات لعناصر التحكم (الأزرار ، الشاشة ، المصابيح). المتحكم الدقيق هو ESP32 ، والذي يوفر الكثير من طاقة الحوسبة والذاكرة ، ويكشف الكثير من الدبابيس. الأسلاك قياسية جدًا ، لكنني سأشير إلى بعض القطع المثيرة للاهتمام.
ملاحظة: قد ترغب في إلقاء نظرة على الكود (https://github.com/samguyer/AlgorithmMachine) قبل البدء في توصيل اللوحة الرئيسية ، بحيث يكون تكوين الدبوس الخاص بك مطابقًا لي.
لقد قمت بلحام مقبس أسطواني على اللوحة للحصول على الطاقة ، وقمت بتوصيل سلكين من النحاس السميكين بقضبان الطاقة والأرض للوحة. والسبب هو أن شريط LED يمكن أن يستهلك قدرًا كبيرًا من الطاقة إذا تم ضبط السطوع على درجة عالية ، ولا أريد سحب كل هذه الطاقة من خلال موصل USB الموجود في وحدة التحكم الدقيقة.
لتبسيط أسلاك الأزرار ، قمت بلحام شريط من رأس الزاوية اليمنى من الذكور إلى الإناث أسفل الجانب الكامل من المتحكم الدقيق (الجانب العلوي من اللوحة كما هو موضح). موصلات Dupont من زر تسخير المكونات مباشرة في هذا الرأس.
هام: يجب توصيل طاقة الأزرار (السلك الأحمر) بخط الطاقة 3.3 فولت في وحدة التحكم الدقيقة. ESP32 عبارة عن شريحة 3.3 فولت ، لذا يجب توصيل مصادر 3.3 فولت فقط بمنافذ البيانات.
يقوم المتحكم الدقيق بسحب الطاقة (أو دفع الطاقة) إلى القضبان (الجانب السفلي من اللوحة كما هو موضح) من خلال دبوس USB والأرضي بجهد 5 فولت. جميع الأسلاك الأخرى ذات اللون الأحمر / الأسود هي VCC والأرضي.
السلكان الأزرقان هما خطوط البيانات لشرائط LED (WS2812s).يمثل الزوج الأصفر / الأخضر خطوط البيانات الخاصة بجهاز التشفير الدوار ، والزوج الأصفر هو الاتصال التسلسلي بالشاشة المكونة من 7 مقاطع.
الخطوة 11: التجميع
تظهر هذه السلسلة من الصور التجميع النهائي والأسلاك. لقد قمت أيضًا بإرفاق لوحة التحكم الرئيسية في الجزء الخلفي من الجزء العلوي.
قبل تشغيله ، أجريت بعض الفحوصات لتجنب أي مفاجآت سيئة. على وجه الخصوص ، للتأكد من عدم وجود أي موصلات طاقة / أرضي للخلف ، وعدم وجود دوائر قصيرة. اضبط جهاز القياس المتعدد على اختبار الاستمرارية - سيصدر صوتًا عندما يكون هناك مسار كهربائي بين السلكين. قم بتوصيل سلك واحد بخط VCC المشترك بالأزرار. ثم قم بتوصيل الرصاص الآخر بكل دبوس من الحزام واحدًا تلو الآخر. يجب أن يصدر جهاز القياس المتعدد إشارة صوتية فقط عند الضغط على الزر. إذا تلقيت أي أصوات تنبيه أخرى ، فهذا يعني أن لديك انعكاسًا أو قصيرًا. تعقبه وإصلاحه قبل تشغيل الطاقة!
الخطوة 12: الكود
أولاً ، افتح Arduino IDE الخاص بك وتأكد من تثبيت مكتبة FastLED.
قم بتنزيل كود آلة الخوارزمية من GitHub:
github.com/samguyer/AlgorithmMachine.git
يمكنك إما استنساخه مباشرة في مجلد Arduino الخاص بك ، أو نسخه يدويًا.
قبل تحميله ، تأكد من أن إعدادات الدبوس تطابق تكوين جهازك. لقد وضعت جميع إعدادات الدبوس في أعلى الملف.
تحميل واستمتع!
الخطوة 13: كيفية الاستخدام
آلة الخوارزمية سهلة الاستخدام وتقريباً أي مجموعة من الأزرار على ما يرام!
أولاً ، استخدم أزرار البيانات لتهيئة القيم في المصفوفة. هناك ثلاثة خيارات: (1) اختيار عشوائي ، (2) إضافة قيمة عشوائية واحدة ، (3) عكس المصفوفة. لاحظ أن القيم ثابتة ، لذا يمكنك القيام بأشياء مثل فرزها أولاً ، ثم إضافة بعض الضوضاء ، ثم تشغيل خوارزمية فرز أو بحث مختلفة.
اختر خوارزمية بحث أو فرز من خيارات الأزرار الأخرى. في الوقت الحالي ، لا توجد تعليقات عند اتخاذ هذا الاختيار (شيء ما للعمل المستقبلي). ثم اضغط على زر "تشغيل".
يتحكم المقبض في السرعة. يمكنك أيضًا الضغط على "تشغيل" لإيقاف الخوارزمية مؤقتًا وإلغاء إيقافها.
سيتوقف تلقائيًا عند الانتهاء. يمكنك أيضًا الضغط على زر خوارزمية آخر في أي وقت. سيقوم الجهاز بإيقاف الخوارزمية الحالية وتهيئة الخوارزمية الجديدة ، مع الاحتفاظ بالبيانات تمامًا كما تركتها الخوارزمية السابقة.
الجائزة الكبرى في مسابقة STEM
موصى به:
كيف صنعت آلة الملاكمة الخاصة بي ؟: 11 خطوة (بالصور)
كيف صنعت آلة الملاكمة الخاصة بي؟: لا توجد قصة رائعة وراء هذا المشروع - لقد أحببت دائمًا آلات الملاكمة ، التي كانت موجودة في أماكن شهيرة مختلفة. قررت أن أبني منجم
مكبر صوت بطباعة آلة موسيقية كهربائية ثلاثية الأبعاد: 11 خطوة (بالصور)
مكبر صوت بطباعة آلة موسيقية كهربائية ثلاثية الأبعاد: تعريف المشروع ، آمل أن أصنع مضخمًا قابلًا للطباعة للاستخدام مع الكمان الكهربائي أو أي آلة كهربائية أخرى المواصفات تصميم أكبر عدد ممكن من الأجزاء لتكون قابلة للطباعة ثلاثية الأبعاد ، اجعلها ستريو ، استخدم مضخم صوت نشط واجعله صغيرًا
آلة حاسبة ثنائية 4 بت: 11 خطوة (بالصور)
آلة حاسبة ثنائية 4 بت: لقد طورت اهتمامي بطريقة عمل أجهزة الكمبيوتر على المستوى الأساسي. أردت أن أفهم استخدام المكونات المنفصلة والدوائر اللازمة لإنجاز مهام أكثر تعقيدًا. أحد المكونات الأساسية المهمة في وحدة المعالجة المركزية هو
كيفية صنع آلة CNC صغيرة: 11 خطوة (بالصور)
كيفية صنع آلة CNC صغيرة: مرحبًا ، أتمنى أن تكون بخير. أنا هنا مع مشروع آخر رائع جدًا يمكنك إنشاؤه باستخدام بعض الأجزاء الخردة / المستخدمة من الكمبيوتر. في هذه التعليمات ، سأوضح لك كيف يمكنك صنع آلة CNC صغيرة في المنزل من DVD Wri القديم
آلة الكرة والدبابيس اردوينو التي تلعب بنفسها: 13 خطوة (بالصور)
Arduino Pinball Machine التي تلعب بنفسها !: & quot؛ آلة الكرة والدبابيس التي تلعب بنفسها ، ألا تأخذ كل المتعة منها؟ & quot؛ أسمع أنك تسأل. ربما إذا لم تكن مهتمًا بالروبوتات المستقلة ، فقد يحدث ذلك. أنا ، مع ذلك ، أنا مهتم جدًا ببناء روبوتات يمكنها القيام بأشياء رائعة ، وهذا