قبل عامين ونصف ، اشتريت مجموعة Lego Mindstorms EV3 لاتخاذ خطواتي الأولى في مجال الروبوتات. بعد أن قمت بتدوير مجموعة ev3dev على وحدة التحكم ولعبت بما يكفي مع محرك SSH والتحكم في المستشعر ، تبردت للشراء لمدة عامين. كان السبب هو أنني لم يكن لدي ما يكفي من الخيال لجعل ذلك ممكنًا: بعد العديد من النماذج التي تم تجميعها من Lego Technics (سواء كانت مُعلبة أو محلية الصنع) ، اعتدت بالفعل على المعجزات مثل الألعاب التي يتم التحكم فيها عن بُعد ، والروبوتات البسيطة مثل
النماذج من Lego المقدمة في
معرض Krakow ، كشخص اعتاد العمل على نظام الميكانيكا عن بعد ، لم يعد مصدر إلهام كافٍ. لم أرغب حقًا في تكرار تجربة شخص آخر.
في النهاية ، بزغت لي: يمكن أن تصبح ساعة الوقواق نموذجًا معقدًا جدًا ومثيرًا للاهتمام وعمليًا وليس مبتذلًا للغاية. مستوحاة من هذه الفكرة ، بدأت العمل.
وفقًا لفكرتي ، لم يكن النموذج مجرد لعبة ، بل أصبح جهازًا يعمل بكامل طاقته. كان هذا ممكنًا تمامًا: تعلق الساعة على حائطي وتعرض الوقت الحالي في وضع 24/7. لم أقم بنفسي بمهمة إعادة إنتاج آلية النسخة الأصلية بكل التفاصيل - على سبيل المثال ، الأسهم مستقلة ، والصوت يتم إعادة إنتاجه من خلال مكبر صوت وحدة التحكم ، وتستخدم الأوزان والبندول حصريًا للأشياء المحيطة. بعد نقل جميع الأعمال الرئيسية إلى جزء البرنامج ، جمعت الآلية في أبسط نسخة ممكنة. لم أقم بتوثيق عملية التجميع بالكامل ، لذلك لا يمكنني تجميع النموذج مرة أخرى بنفس النموذج ؛ ومع ذلك ، فإن المبادئ الأساسية لإقران البرامج والميكانيكا هي أن البرنامج يجب أن يعمل مع الحد الأدنى من التعديلات على النماذج الأخرى التي تم تجميعها وفقًا لمبدأ مماثل.
يتم عرض الساعات بأشكال مختلفة في الفيديو الذي نشرته على Youtube:
يتم تقديم معلومات أساسية عن النموذج في الفيديو. أدناه سأخبرك بمزيد من التفاصيل حول الميكانيكا ، حول البرامج ، بالإضافة إلى المشاكل التي نشأت أثناء تجميع وتشغيل هذا التصميم.
الميكانيكا
استغرق تجميع الجزء الميكانيكي 6 أيام. بعد أن وضعت صناديق Lego على الطاولة ، خلال عطلة رأس السنة الجديدة ، جمعت آلية تختلف عن النسخة النهائية فقط في الأبواب التي يعيش خلفها الوقواق (المزيد عن هذا أدناه). ليس لدي أي مهارات تصميم خاصة ، لذا فإن الساعة عبارة عن صندوق مستطيل به يدين وقرص مرسوم عليه نقاط على الجانب الأمامي. يوجد في الجزء العلوي من الساعة حجرة مغلقة ببابين ، حيث استقر الوقواق ، وفي الجزء السفلي يوجد بندول تخطيطي ووزنان. تم أخذ الأجزاء من عدة مجموعات Lego: واحدة من
Lego Mindstorms EV3 (31313) ، واثنين من
ممهدات فولفو (42030) ،
وشاحنة Mercedes ذات ذراع هوائي (42043) ورافعة شاحنة واحدة
(42009) . على الرغم من وفرة المجموعات ، لم يكن هناك ما يكفي من التفاصيل لنموذج من هذا الحجم - يتم تجميع غطاء الساعة من شرائط بألوان مختلفة ، والتي ، مع ذلك ، لا تلفت الانتباه ، لأنه مع التثبيت على الحائط يكون فوق مستوى العين.
كدقيقة واحدة ، يتم استخدام شريط Lego Technics القياسي لـ 15 وحدة. يتم وضعه على المحور ، وربطه بقوة بالمحرك. وبالتالي ، اتضح أن دقة ضبط عقرب الدقائق كافية بحيث يمكن استخدامها لتحديد الوقت بدقة إلى الدقائق. عقرب الساعة أقصر ومثبت على آلية دوارة. يتم توصيله بالمحرك من خلال عدة تروس ، لذلك هناك رد فعل عنيف ملحوظ إلى حد ما - ومع ذلك ، ليس كبيرًا إلى حد يسبب مشاكل في تحديد الوقت.
يتم تشغيل اليدين بمحركين كبيرين (LM). بالإضافة إلى ذلك ، عند إقران كل من العقارب الخارجية ، تعمل أخرى ، واحدة داخلية - بالنسبة لعقرب الدقيقة ، يتم تثبيتها على نفس المحور مثل المحور الأول ، وعلى مدار الساعة ، يتم تكرار الآلية الدوارة في داخل الساعة. الغرض من الأسهم الداخلية هو الضغط على الزر (مستشعر اللمس) أثناء تمرير الأسهم الخارجية من خلال الموضع العلوي. وبالتالي ، فإن وحدة التحكم لديها القدرة على تحديد موضع الأسهم مباشرة بعد التبديل ، وتعيين موضعها الصحيح بناءً على وقت النظام ، مما يحفظ المستخدم من الاضطرار إلى إدخال الأسهم يدويًا.
الأوزان لها وظيفة زخرفية بحتة. في البداية ، فكرت في القيام بوزن واحد ، والذي سينخفض ببطء (كما هو الحال في الساعة العادية) ، ثم يسحب بسرعة إلى الموضع العلوي (تناظري للملف اليدوي لساعة البندول). بعد ذلك رفضت هذا الخيار لعدة أسباب. أولاً ، أضافت آلية تبديل نسبة التروس بين المحرك والوزن تعقيدًا إضافيًا للنموذج (وزاد محرك البندول من نفس المحرك فقط). ثانيًا ، سيكون الكحل السريع ، مهما يقول المرء ، عملية صاخبة ، لكنني أردت أن تعمل الساعة بهدوء قدر الإمكان. ثالثًا ، في ساعة الوقواق التقليدية ، عادةً ما يكون هناك أوزان (أحدهما يوفر الساعة ، والثاني - الوقواق) ، ويؤدي وضع عجلتين في الجزء السفلي من الساعة على الفور إلى زيادة أكبر في حجم النموذج.
انطلاقا من ذلك ، اتخذت مسارًا أبسط: لقد قمت بالفعل بتثبيت وزنين على الساعة ، لكنني وضعتهما في دائرة مشتركة ألقيت فوق عجلة قيادة واحدة. في هذا الإصدار ، تتحرك الأوزان دائمًا في اتجاهات مضادة للطقس ، وتنخفض بدورها. هذا السلوك ليس له علاقة تذكر بساعات البندول الحقيقية ، لكنه يبدو مثيرًا للاهتمام.
تتكون السلسلة من زخارف عادية من ثلاث وحدات باستخدام مجموعة من المحاور والمكابس: المكبس المنزلق هو قطعة نادرة إلى حد ما ، ولقد استخدمت المحاور لمضاعفة طول السلسلة الناتجة. لم يكن من السهل صنع عجلة تتحرك مثل هذه السلسلة بدون انزلاق وانهيار ، ولكن في النهاية ، كان ذلك ممكنًا.
فيما يتعلق بتغيير اتجاه حركة الأوزان ، كانت فكرتي الأولى جعلها ميكانيكية بحتة: عند الرفع إلى الجدار السفلي لحالة الساعة ، فإن المحور العريض المثبت مباشرة فوق الوزن يضغط على اللوحة التي تمر بها السلسلة ويتسبب في دوران العجلة. كنت
سأستخدم عنصر التحويل مثل
الرافعة 42009 على سبيل المثال: عجلة القيادة ، التحول ، تدخل القابض إما مع الجار الأيمن أو الأيسر. ومع ذلك ، لم تطير هذه الفكرة: جلبت لوحة الضغط الجزء المنزلق إلى الوضع المركزي عندما لم تكن تعمل مع أي من الجار الأيمن أو الأيسر ، وتوقف عزم الدوران عن العجلة ، وتجمد المفتاح في الوضع المركزي.
لتصحيح هذا الموقف ، قررت إضافة مثلث متحرك إلى هذه الدائرة ، سيكون لجانبين طولهما ثابتًا ، والثالث سيمثله جزء منزلق محمّل بنابض يستخدم في تعليق نفس رافعة الشاحنة. كان معنى هذا التصميم هو أن المثلث موجود دائمًا على جانب لوحة الضغط التي تتوافق مع وزن الرفع: عندما يصل الوزن إلى القمة ، تضغط اللوحة على المثلث ، وينضغط الربيع ، ويمر المثلث من خلال وضع التوازن ثم "يرمي" إلى الجانب الآخر ، ويحرر الطاقة المخزنة بواسطة الربيع. كان من المفترض أن تقوم هذه الطاقة ، وفقًا لخطتي ، بتحويل مفتاح السرعة من خلال موضع التوازن ، وترجمته على الفور إلى الموضع المعاكس.
ومع ذلك ، فشلت في استقرار هذا النظام. حسب حجم الساعة ، يمكنك أن تفهم أن آليات المنمنمات ليست شيئًا خاصًا بي ، ولكن مع زيادة حجم العقدة ، فإن التشوهات الناتجة عنها تؤدي إلى الاحتكاك ، والتي تستهلك معظم طاقة التحويل. بعد أن تم تعذيبي بهذه الآلية ، قررت أخيرًا تحويل جميع الأعمال القذرة إلى وحدة التحكم الدقيقة عن طريق تثبيت زر فوق لوحات الدفع (مستشعر اللمس) بدلاً من الميكانيكا المعقدة.
القليل من الحساب البسيط. يحتوي EV3 على أربعة مدخلات وأربعة مخرجات. تم إدخال مدخلين ومخرجين بواسطة الأزرار ومحركات الأسهم ، على التوالي. إضافة إلى هذه الدائرة محرك يدور عجلة السلسلة وزرين يعني ، أولاً ، لم يكن لدي أي منافذ مجانية لتوصيل مستشعر موضع الوقواق (اعتقدت استخدام عداد مسافة بصري لهذا الغرض) ، وثانيًا ، العقد المتبقية (الوقواق والبندول) لها محرك واحد فقط. لقد نظرت في الخيار حيث سيتم توصيل كلتا اللوحتين فوق الأوزان بزر مشترك ، ولكني رفضته ، لأنه إذا كانت إحدى الأوزان في وضع التشغيل ، في وضع التشغيل ، في الموضع العلوي ، مع الضغط على الزر ، فلن يكون لدى الساعة معلومات كافية لتحديدها اتجاه حركة السلسلة.
بما أن البندول كان من الأسهل ربطه بآلية حركة السلسلة من الوقواق (سواء من حيث طبيعته في الحركة والموقع) ، فقد وضعت محركًا كبيرًا آخر في الجزء السفلي من الجسم ، والذي ، أولاً ، يدفع البندول ذهابًا وإيابًا (1 ثورة محرك يترجم إلى تأرجح واحد كامل للبندول) ، وثانيًا - من خلال ترس التخفيض يدور العجلة ، التي تقود السلسلة. مثل هذا النظام له عيب أنه عند عكس اتجاه حركة السلسلة ، وبالتالي دوران المحرك ، فإن البندول يغير أيضًا اتجاه الحركة ، حتى إذا كان في وضع وسيط ، والذي قد يبدو قبيحًا. ومع ذلك ، فإن تبديل اتجاه حركة الأوزان عملية نادرة إلى حد ما ، لذلك أهملت هذه المشكلة. عيب آخر في مجموعتي هو اللعب القابل للاستبدال إلى حد ما في محرك البندول ، ولهذا السبب عندما يتحرك ببطء ، يتوقف البندول عند نقطة أقل لجزء من الثانية للعين الملحوظة. كنت كسولًا جدًا لإصلاح هذه المشكلة.
الحديث عن سرعة البندول. بعد تجربتها ، اخترت قيمة 30 درجة للمحرك في الثانية. هذا يعني أن البندول يتأرجح تمامًا في 12 ثانية. هذا كثير ، ومع ذلك ، مع السرعة المتزايدة ، بدأ المحرك في الصراخ ، ولا يبتسم لي على الإطلاق إمكانية الاستماع المستمر إلى أغنيته. لقد كان كسولًا جدًا بحيث لم أتمكن من خوض الآلية وإدخال عملية زيادة السرعة ، لذلك استقرت على هذا الشكل "القمري". تكون نسب التروس بين المحرك وعجلة القيادة التسلسلية بحيث ينتقل الوزن من الموضع السفلي إلى الموضع العلوي في 40-50 دقيقة.
احتفظ منفذ EV3 بالمحرك الأوسط (المحرك المتوسط) الذي يحرك الوقواق بعد أن ظل خاليًا من كل التلاعبات السابقة. يتم تجميع الوقواق نفسه من أجزاء من نفس تقنيات ليغو. في الارتفاع ، يصل الطائر إلى 11 وحدة ويتم وضعه على قضيب قابل للسحب (على هذه في رافعة الشاحنة المذكورة أعلاه ، تم وضع محطات بعيدة). تقدم آلية مصغرة انتقالًا بين أجنحة الطائر وذيله ، من خلاله ألقيت بكابل مثبت داخل الساعة. يتم اختيار طول الكابل بحيث يترك الوقواق تمامًا وأجنحته إلى أسفل وفقط في نهاية الحركة بفارق طفيف بينهما. تحولت إلى الغلاف الجوي - فقط على مستوى الميكنة لنماذج الساعات البسيطة. يتم تعويض غياب مستشعر الموضع من خلال حقيقة أن محرك الوقواق يتم تشغيله من خلال ترس الانزلاق - فهو يساعد على عدم إتلاف المحرك ، حتى إذا حاول تحريك الوقواق خارج نقاط الحدود. ترتبط الأبواب بإحكام باللوح الخشبي الذي يتم تثبيت الطائر عليه ، وتفتح في وقت واحد مع رحيل الوقواق نفسه.
في البداية ، استخدمت 11 × 5 لألواح وحدة واحدة كأبواب ، لكن تبين أن هذه فكرة سيئة: لم يتم تقريب حوافها ، والأبواب ، التي تتشبث بالأجزاء المجاورة ، غالبًا ما يتم حظرها ، تاركة الوقواق في الداخل. يُظهر الفيديو الإصدار الثاني من تجميع الباب - لا تسبب الزخارف العادية ذات الحواف المستديرة مثل هذه المشكلة. بالإضافة إلى ذلك ، يتم فتح وإغلاق نسخة الباب "اللوح" أكثر هدوءًا.
يتم تثبيت الساعة على حزام مثبت على الحائط. يزن الهيكل بأكمله أكثر من كيلوغرام.
على هذا ، ينتهي وصف الجزء الميكانيكي ، من حيث المبدأ. يبقى فقط أن نذكر أن النموذج تم تجميعه بنسبة 100 ٪ من Lego Mindstorms و Lego Technics ، والجزء الوحيد الذي لا ينطبق على هذه المجموعات هو سلك الطاقة ، الذي قمت بحامته إلى EV3 الخاص بي ، بحيث لم يكن علي تغيير البطاريات طوال الوقت. يذهب هذا السلك إلى مصدر الطاقة الموصل بالمأخذ.
البرنامج
توفر مجموعة ev3dev روابط للعديد من لغات البرمجة. لكي لا أجد صعوبات في التجميع ، قررت أن أقتصر على نص Python. هذا البرنامج النصي متاح
في مستودع GitLab . أدناه سأستعرض بإيجاز وظائفه.
يعتبر الرمز الذي يحرك الأسهم بسيطًا نسبيًا - فهو يعيد حساب الدقائق والساعات في درجات دوران المحركات باستخدام بيانات عن عدد درجات المحرك لكل ثورة السهم والتحول الأولي للسهم من الموضع العمودي. يبدأ كل المرح عندما يحاول البرنامج الحصول على هذه البيانات.
كما قلت بالفعل ، تقرر التخلي عن الاتصال اليدوي مطلق النار. بدلاً من ذلك ، عند بدء التشغيل ، تقوم الساعة بالمعايرة من خلال تحديد معلمات الهندسة. يتم إجراء المعايرة لكلا اليدين بشكل مستقل عن بعضهما البعض.
خوارزمية المعايرة على النحو التالي. أولاً ، يبدأ المحرك في الدوران بسرعة عالية نسبيًا (أستخدم قيمة تجريبية تبلغ 180 درجة في الثانية) حتى تأتي إشارة التأكيد من الزر الذي يثبت الموضع العلوي للسهم. بعد ذلك ، يقوم المحرك بإعادة تعيين السرعة إلى 30 درجة في الثانية ويستمر في تدوير السهم باتجاه عقارب الساعة (يتم خياطة اتجاه دوران المحرك في البرنامج) حتى يتم فصله عن نقطة آخر فتح للزر بمقدار 70 درجة. بعد ذلك ، يمر السهم من خلال الموضع العلوي في الاتجاه المعاكس ، مثبتًا الإغلاق الأول وآخر فتحة لجهات الاتصال (قد يزعج الزر في مواضع الحافة). بالابتعاد عن الفتحة الأخيرة بنفس درجة 70 ، يغير السهم مرة أخرى اتجاه الحركة إلى الخط المستقيم ، ويتكرر إجراء تسجيل الدائرة الأولى والدائرة الأخيرة.
ويعتقد أن الموضع العلوي للسهم يتوافق مع المتوسط الحسابي بين القيم الأربع التي تم الحصول عليها على هذا النحو. تُظهر الممارسة أن هذا التقريب جيد جدًا - نادرًا ما يكون انحراف الموضع المستهدف لعقرب الدقيقة عن الفعلي أكثر من خطوة واحدة ولا يتجاوز أبدًا خطوتين. (يظهر الفيديو انحرافات أكثر أهمية بسبب حقيقة أنه لغرض التصوير ، قمت بترجمة وقت النظام ، وتحركت العقارب بشكل أسرع من أثناء التشغيل العادي ، مما أدى إلى زيادة خطأ التصحيح في كل ثورة ، انظر أدناه.) للحصول على اتجاه عقارب الساعة ، فإن رد الفعل العكسي يأكل الدقة ، لكن الخوارزمية تستخدم بالطبع نفس الخوارزمية.
بعد حساب الموضع العلوي للسهم والفرق بين أول تشغيل للمستشعر والموضع العلوي للسهم (ستكون هذه القيمة مطلوبة للتصحيح ، انظر أدناه) ، تزيد خوارزمية المعايرة مرة أخرى من سرعة المحرك إلى 180 درجة في الثانية وتكرر البحث عن الموضع العلوي. يحدد الفرق بين موقعين علويين متتاليين طول دورة كاملة للسهم في وحدات دوران المحرك. يتم تكرار إجراء البحث عن الموضع الأعلى خمس مرات ، مما يسمح لنا بمتوسط القيم التي تم الحصول عليها وزيادة الدقة قليلاً.
بعد اكتمال المعايرة ، تدخل العقارب في وضع عرض الوقت الحالي. علاوة على ذلك ، في كل دائرة من السهم ، تحدد الخوارزمية الموضع الذي تم فيه إغلاق قاطع الدائرة لأول مرة. الفرق بين الزوايا الفعلية والمتوقعة لدوران المحرك في هذه اللحظة هو مقدار التصحيح ؛ وبالتالي ، حتى إذا لم يتم حساب طول الدائرة الكاملة بشكل صحيح في مرحلة المعايرة (يُظهر إخراج التصحيح أن الانحراف نادرًا ما يتجاوز درجة واحدة) ، فإن التصحيح على كل دائرة لا يسمح للسهم بالتحول بسبب تراكم الأخطاء.
يرجى ملاحظة أن المعلومات الوحيدة حول نسبة المحرك والسهم ، والتي يتم ربطها بشكل صريح في البرنامج ، هي اتجاه دوران المحرك (إلى الأمام أو الخلف) المقابل للحركة الأمامية للسهم. بفضل أجهزة استشعار الموضع ، تختفي الحاجة إلى بيانات حول نسبة التروس والموضع الأولي للسهم. وبالتالي ، إذا جمعت ساعة سيتم تقديم عقرب يد آخر لها ، بالإضافة إلى الساعة والدقيقة ، فستتيح لك الخوارزمية استخدامها عن طريق إضافة بضعة أسطر فقط ، دون إضاعة الوقت في عد الأسنان.
ما هو مفقود في برنامج حركة السهم هو الحماية ضد الفائض أو فقدان الدقة. لم أحقق في السؤال عما سيحدث في وقت سابق: سيزيد عمق البت لزاوية دوران المحرك ، أو ستبدأ الأسهم في الحركة متشنجة بسبب مغادرة الدقة في الأرقام الأعلى من رقم النقطة العائمة. ومع ذلك ، تظهر الممارسة أنه في أوقات عدة أسابيع ، لا يحدث شيء من هذا القبيل. إذا واجهت هذه المشكلة في أي وقت ، فمن المرجح أن أضيف أمر إعادة تعيين المحرك في كل دورة ، مع تصحيح الزوايا في البرنامج.
إذا كانت فئة Hand في برنامجي مسؤولة عن حركة الأسهم ، فإن فئة LedIndication تضيء ، ثم تطفئ مصابيح LED على اللوحة الأمامية EV3. أعلم أنه يمكن تحقيق نفس التأثير مع فريق واحد ، ولكن في البداية تم تصميم هذه الميزة لتتبع أعطال البرنامج ، ثم بقيت. لا يوجد شيء أكثر إثارة للاهتمام في هذه الفئة.
إن فئة البندول مسؤولة عن حركة الأوزان والبندول.
تقوم الخوارزمية ببساطة بتشغيل المحرك في اتجاه واحد وتدويره بسرعة ثابتة حتى يتم تثبيت الزر المقابل للرفع الكامل لهذا الوزن ؛ بعد ذلك ، يتم عكس اتجاه حركة المحرك.في هذه الفئة ، بالمناسبة ، يتم تقديم الحماية من أعطال البرنامج ، والتي تتكون في حقيقة أن المحرك يتم تشغيله لمدة ثانيتين فقط مع فترة تحديث الأمر 1 ثانية. إذا قمت بتشغيل المحرك في وضع الدوران المستمر ، فعندما تعطل البرنامج ، سيستمر الاستراحة على الزر في التحرك لأعلى ، مما قد يؤدي إلى زيادة التحميل على المحرك أو انزلاق التروس أو حتى تلف الآلية. تسمح لك الحماية بمنع هذه المشكلة.وأخيرًا ، فإن فئة الوقواق تدير الوقواق في كل مرة يتم فيها استبدال قيمة 59 دقيقة بقيمة 0 دقيقة. أولاً ، يتم دفع الوقواق على طول الطريق ، ثم الوقواق مرة واحدة ، وإعادة إنتاج الصوت من خلال مكبر الصوت EV3 ، ثم الاختباء مرة أخرى في علبة الساعة. يتم تكرار الحركة وفقًا للساعة الحالية - من 1 إلى 12 مرة. تم أخذ الصوت من مكتبة FreeSound المجانية وتم تعديله ليبدو أفضل على EV3. (لا يمكنني القول أنني كنت سعيدًا بالنتيجة ، لأن صوت الجهير غير مسموع تقريبًا عندما يتم ضرب المطرقة في الربيع.)يتم تحديد التأخير بين أمر إزالة الوقواق وأمر إعادة إنتاج الصوت بشكل تجريبي بحيث يتم سماع الصوت في نفس اللحظة التي يصل فيها الوقواق إلى موضعه الأقصى. ومع ذلك ، يعاني ev3dev من مشكلة طفيفة في هذا: بسبب تحميل النظام ، يتأخر الصوت بشكل دوري ، خاصة إذا كان هناك اتصال SSH بالساعة في تلك اللحظة. يمكن أن يصل التأخير إلى عدة ثوان. لست متأكدًا مما إذا كانت هذه مشكلة في وحدة التحكم الخاصة بي ، أو الإصدار نفسه ، أو التحديثات التي تم تلقيها من الشبكة (بعد تثبيت ev3dev ، فقد اعتدت على استخدام الأمر apt get Upgrade ، على الرغم من أنني ربما لم يكن يجب أن أفعل ذلك) ، ولكن في المتوسط يبدو الوقواق طبيعيًا ، لذلك لن أقوم بتصحيح هذا السؤال.بالمناسبة ، تم ربط خطأ بتأخير الصوت في أحد الإصدارات الأولى من البرنامج ، عندما لم أضيف توقع نهاية التشغيل بعد: إذا تمكن الوقواق من الاختباء والظهور مرة أخرى خلال وقت التأخير ، كان الصوت التالي "ابتلع" ، ولم يتطابق عدد "الوقواق" عدد الساعات. في وقت لاحق ، قمت بتعديل البرنامج بحيث توقع الوقواق أن ينتهي الصوت في الموضع المتطرف ثم غادر فقط للدورة التالية.يتم التعبير عن فترات نصف ساعة بإشارة واحدة يتم الحصول عليها من نفس الصوت الأصلي. لا يظهر الوقواق.يتم خياطة سرعة دوران المحرك الذي يحرك الوقواق ، وزاوية الدوران في البرنامج. في بداية البرنامج ، يتم سحب الوقواق في العلبة - مع الأخذ في الاعتبار معدات الانزلاق المثبتة على محور المحرك ، هذه العملية آمنة ، ولكن لها تأثير إذا كان الوقواق خارج الحالة في الوقت الذي بدأت فيه الساعة.من أجل عدم التدخل في النوم ، فإن الوقواق الوقواق فقط خلال النهار. يبدأ يوم عملها في العاشرة صباحًا ، وآخر مرة تصوت فيها في منتصف الليل. لقد قمت أيضًا بإيقاف تشغيل الوقواق في الوقت الذي أتلقى فيه مكالمات عمل أسبوعية على Skype ، حتى لا أتدخل.يتم تثبيت البرنامج كخدمة ويبدأ عند بدء تشغيل دبيان. وبالتالي ، يكفي تشغيل الساعة ، ويقومون بكل شيء بأنفسهم. يتم أخذ الوقت من الإنترنت - في جهاز EV3 الخاص بي يوجد دونجل WiFi. بعد بدء الساعة ، أقوم عادةً بفصل الشبكة ، حتى لا أقوم بإنشاء حمل إضافي على المعالج.البرنامج متاح تحت رخصة BSD. إذا كنت ترغب في بناء نموذج مماثل واستخدام برنامجي ، فسأكون سعيدًا فقط.