مبدأ تشغيل العرض المقترح ، الذي تم صنعه وبناؤه بواسطة Instructables تحت لقب alstroemeria ، هو كما يلي: تلقي الأجزاء المتقدمة بواسطة الماكينات ظلًا ، مما يجعلها مرئية. الأجزاء المتبقية ، الموجودة في نفس المستوى مع الخلفية ، تندمج معها.
من الواضح أن
محلية الصنع اتضح أنها باهظة الثمن ، لأن لها الحصول على ما يصل إلى 28 من هذه الماكينات:
ووحدة إدارة تتصل
اردوينو مثل هذا:
يبدو أن وحدة الساعة في الوقت الحقيقي (RTC) مقابل هذه الخلفية هي تكلفة صغيرة جدًا.
بعد الحصول على جميع المكونات الضرورية ، يضعها المعلم حتى الآن للعمل على قوالب لصنع الجزء الميكانيكي من الشاشة. يحصل على أربعة ملفات:
1,
2,
3,
4. يعرض المعالج الملفات 1 و 3 مرتين على راسمة قطع ، و 2 و 4 ، واحد في كل مرة ، وكل ذلك على مقياس 1: 1 ، ويحصل على ستة أجزاء ، بعضها يشبه بطاقات الثقب القديمة بطريقة ما. يمكنك أيضًا الطباعة بمقياس 1: 1 وبنفس الكميات والقص يدويًا.
تقوم Dremel بقطع دبابيس معدنية مجوفة بطول 20 مم وأنابيب بقطر خارجي أكبر قليلاً من القطر الخارجي للدبوس بطول 10 مم:
طبقات الغراء بشريط سميك على الوجهين ، تضيف الأنابيب:
يضيف قطعًا متحركة ملتصقة بالدبابيس التي تمر عبر الأنابيب ، على دفعات الأسلاك الفولاذية ذات الغراء الجانبي العكسي إلى نفس الدبابيس ، وهنا تكون الدبابيس مجوفة:
ينحني دافعات ، الغراء المادي ويتصل بها:
يغلق الماكينات مع الورقة المثقبة المتبقية:
يتم توصيل وحدة التحكم المؤازرة وفقًا للمخطط الموضح في بداية المقالة. ترتبط محركات الأقراص نفسها بالوحدة بالترتيب المطابق لتعيينات المقطع القياسي:
تتصل وحدة RTC كما يلي: SDA - pin 4 Arduino، SCL - pin 5، بالإضافة إلى الطاقة والأسلاك المشتركة - بالتوازي مع خطوط Arduino المقابلة. ها هي النتيجة:
يقوم المعالج بتعيين الوقت في وحدة RTC باستخدام هذا الرسم (تحتاج إلى مكتبة RTClib):
# تشمل
# تضمين "RTClib.h"
RTC_DS1307 RTC ؛
إعداد باطل () {
المسلسل يبدأ (57600) ؛
Wire.begin () ؛
RTC.begin () ؛
if (! RTC.isrunning ()) {
Serial.println ("RTC ليس قيد التشغيل!") ؛
RTC.adjust (DateTime (__ DATE__ ، __TIME__)) ؛
}}
}}
ثم يملأ الرسم الرئيسي الذي يتطلب نفس المكتبة:
# تشمل
# تضمين "RTClib.h"
RTC_DS1307 RTC ؛
قطعة قصيرة = 0 ؛ // عرض دبوس 14
مقطع قصير B = 1 ؛ // عرض دبوس 16
مقطع قصير C = 2 ؛ // عرض دبوس 13
مقطع قصير د = 3 ؛ // عرض دبوس 3
الجزء القصير E = 4 ؛ // عرض دبوس 5
segF قصيرة = 5 ؛ // عرض دبوس 11
مقطع قصير G = 6 ؛ // عرض دبوس 15
segA_OUT قصير = 110 ؛
قطعة قصيرة B_OUT = 110 ؛
مقطع قصير C_OUT = 110 ؛
مقطع قصير D_OUT = 110 ؛
segE_OUT قصير = 110 ؛
قطعة قصيرة F_OUT = 110 ؛
مقطع قصير G_OUT = 110 ؛
segA_IN قصير = 90 ؛
مقطع قصير B_IN = 90 ؛
مقطع قصير C_IN = 90 ؛
مقطع قصير D_IN = 90 ؛
مقطع قصير EEE = 90 ؛
مقطع قصير F_IN = 90 ؛
مقطع قصير G_IN = 90 ؛
int TIME = 2000 ؛
DateTime datePast ؛
DateTime dateNow ؛
// التدبير المنزلي
إعداد باطل () {
Serial.begin (9600) ؛
Wire.begin () ؛
RTC.begin () ؛
RTC.adjust (DateTime (__ DATE__ ، __TIME__)) ؛
datePast = RTC.now () ،
}}
// الحلقة الرئيسية
حلقة فارغة () {
dateNow = RTC.now () ،
if (! (datePast.hour () == dateNow.hour () && datePast.minute () == dateNow.hour ()))
{
displayNumber (dateNow.hour () * 100 + dateNow.minute ()) ؛
datePast = dateNow ؛
}}
}}
// بالنظر إلى رقم ، نعرض 10:22
// بعد تشغيل الأرقام الأربعة ، يتم إيقاف تشغيل الشاشة
رقم فارغ (int toDisplay) {
for (int digit = 4؛ digit> 0؛ digit--) {
lightNumber (toDisplay٪ 10، digit) ؛
toDisplay / = 10 ؛
}}
// بدء الحركة
Serial.print ("T") ؛ Serial.println (TIME) ؛
}}
حركة باطلة (int servo ، int position) {
Serial.print ("#") ؛
Serial.print (مضاعفات) ؛
Serial.print ("P") ؛
Serial.print (موضع) ؛
}}
// بالنظر إلى رقم ، يتم تشغيل تلك الأجزاء
// If number == 10 ، قم بإيقاف تشغيل الرقم
void lightNumber (int numberToDisplay، int section) {
إزاحة int = (قطعة - 1) * 7 ؛
التبديل (numberToDisplay) {
الحالة 0:
نقل (segA + offset ، segA_OUT) ؛
نقل (segB + offset ، segB_OUT) ؛
نقل (segC + offset ، segC_OUT) ؛
نقل (segD + offset ، segD_OUT) ؛
نقل (segE + offset ، segE_OUT) ؛
نقل (segF + offset ، segF_OUT) ؛
نقل (segG + offset ، segG_IN) ؛
استراحة
الحالة 1:
نقل (segA + offset ، segA_IN) ؛
نقل (segB + offset ، segB_OUT) ؛
نقل (segC + offset ، segC_OUT) ؛
نقل (segD + offset ، segD_IN) ؛
نقل (segE + offset ، segE_IN) ؛
نقل (segF + offset ، segF_IN) ؛
نقل (segG + offset ، segG_IN) ؛
استراحة
الحالة 2:
نقل (segA + offset ، segA_OUT) ؛
نقل (segB + offset ، segB_OUT) ؛
نقل (segC + offset ، segC_IN) ؛
نقل (segD + offset ، segD_OUT) ؛
نقل (segE + offset ، segE_OUT) ؛
نقل (segF + offset ، segF_IN) ؛
نقل (segG + offset ، segG_OUT) ؛
استراحة
الحالة 3:
نقل (segA + offset ، segA_OUT) ؛
نقل (segB + offset ، segB_OUT) ؛
نقل (segC + offset ، segC_OUT) ؛
نقل (segD + offset ، segD_OUT) ؛
نقل (segE + offset ، segE_IN) ؛
نقل (segF + offset ، segF_IN) ؛
نقل (segG + offset ، segG_OUT) ؛
استراحة
الحالة 4:
نقل (segA + offset ، segA_IN) ؛
نقل (segB + offset ، segB_OUT) ؛
نقل (segC + offset ، segC_OUT) ؛
نقل (segD + offset ، segD_IN) ؛
نقل (segE + offset ، segE_IN) ؛
نقل (segF + offset ، segF_OUT) ؛
نقل (segG + offset ، segG_OUT) ؛
استراحة
الحالة 5:
نقل (segA + offset ، segA_OUT) ؛
نقل (segB + إزاحة ، segB_IN) ؛
نقل (segC + offset ، segC_OUT) ؛
نقل (segD + offset ، segD_OUT) ؛
نقل (segE + offset ، segE_IN) ؛
نقل (segF + offset ، segF_OUT) ؛
نقل (segG + offset ، segG_OUT) ؛
استراحة
الحالة 6:
نقل (segA + offset ، segA_OUT) ؛
نقل (segB + إزاحة ، segB_IN) ؛
نقل (segC + offset ، segC_OUT) ؛
نقل (segD + offset ، segD_OUT) ؛
نقل (segE + offset ، segE_OUT) ؛
نقل (segF + offset ، segF_OUT) ؛
نقل (segG + offset ، segG_OUT) ؛
استراحة
الحالة 7:
نقل (segA + offset ، segA_OUT) ؛
نقل (segB + offset ، segB_OUT) ؛
نقل (segC + offset ، segC_OUT) ؛
نقل (segD + offset ، segD_IN) ؛
نقل (segE + offset ، segE_IN) ؛
نقل (segF + offset ، segF_IN) ؛
نقل (segG + offset ، segG_IN) ؛
استراحة
الحالة 8:
نقل (segA + offset ، segA_OUT) ؛
نقل (segB + offset ، segB_OUT) ؛
نقل (segC + offset ، segC_OUT) ؛
نقل (segD + offset ، segD_OUT) ؛
نقل (segE + offset ، segE_OUT) ؛
نقل (segF + offset ، segF_OUT) ؛
نقل (segG + offset ، segG_OUT) ؛
استراحة
الحالة 9:
نقل (segA + offset ، segA_OUT) ؛
نقل (segB + offset ، segB_OUT) ؛
نقل (segC + offset ، segC_OUT) ؛
نقل (segD + offset ، segD_OUT) ؛
نقل (segE + offset ، segE_IN) ؛
نقل (segF + offset ، segF_OUT) ؛
نقل (segG + offset ، segG_OUT) ؛
استراحة
الحالة 10:
نقل (segA + offset ، segA_IN) ؛
نقل (segB + إزاحة ، segB_IN) ؛
نقل (segC + offset ، segC_IN) ؛
نقل (segD + offset ، segD_IN) ؛
نقل (segE + offset ، segE_IN) ؛
نقل (segF + offset ، segF_IN) ؛
نقل (segG + offset ، segG_IN) ؛
استراحة
}}
}}
كل شيء يعمل:
لذا فإن العرض الميكانيكي للتصميم غير التافه جاهز.