جدول المحتويات:

ساعة التوقيت الصيفي السهلة: 7 خطوات
ساعة التوقيت الصيفي السهلة: 7 خطوات

فيديو: ساعة التوقيت الصيفي السهلة: 7 خطوات

فيديو: ساعة التوقيت الصيفي السهلة: 7 خطوات
فيديو: علاج مشكلة التوقيت الصيفي في تطبيقات السوشيال ميديا #التوقيت_الصيفي #shorts 2024, يوليو
Anonim
من السهل توفير ساعة التوقيت الصيفي
من السهل توفير ساعة التوقيت الصيفي
من السهل توفير ساعة التوقيت الصيفي
من السهل توفير ساعة التوقيت الصيفي

قصة

بدأ هذا المشروع كتحدي بالنسبة لي لتعلم البرمجة (الترميز) باستخدام Arduino Uno وشاشة 1602A LCD واحدة ، أردت أولاً دفع Arduino إلى أقصى حدود الدقة. هذا مشروع لبناء ساعة دون استخدام وحدة RTC (وحدة ساعة الوقت الحقيقي) وكذلك عدم استخدام أي تأخير () ؛ أوامر لأن التأخير () ؛ الأمر يوقف الكود لفترة زمنية محددة. أثناء عملي من خلال رمز حفظ الوقت الأساسي ، اعتقدت أن هذا قد يكون عاديًا بعض الشيء ، لذلك قررت إضافة ميزة توفير التوقيت الصيفي كإضافة جديدة لتوابل الأشياء وربما خلق المزيد من الاهتمام بهذا المشروع. في البداية كانت الفكرة جديدة تمامًا ولكن كلما عملت معها أكثر وشاهدت الساعة الفعلية التي أجريها على مكتبي ، أصبحت الفكرة أكثر عملية. من خلال إضافة وحدة RTC وضبط الرمز ، ستكون هذه الساعة دقيقة لسنوات قادمة وبتكلفة منخفضة جدًا للمصنعين والجمهور الذين يشترون مثل هذه الساعة.

كان التوقيت الصيفي أو (DST) موجودًا منذ أكثر من 100 عام (Google له تاريخ غني بالألوان). لا أريد الخوض في السياسة ، لكنها ممارسة فجة ومؤلمة لا تجعل الحياة سهلة لعامة الناس (أنت وأنا). بالنسبة للجزء الأكبر ، فإننا نستمتع بساعة إضافية من ضوء النهار ولكن الطريقة التي يتم تطبيقها بها قاسية. حان الوقت لإجراء ترقية رئيسية لفكرة قديمة جدًا.

من السهل التعايش مع هذا المثال ومع العصر الرقمي والتقدم التكنولوجي المطبق بسهولة على جميع أشكال الساعات الرقمية ، ولكن يمكن أن يساعد في زوال الساعة التناظرية. بدلاً من قفزة لمدة ساعة واحدة من الوقت القياسي إلى التوقيت الصيفي ، فإن التوقيت الصيفي إلى التوقيت القياسي تعتمد هذه الساعة على التقدم التدريجي للوقت من الانقلاب الشتوي إلى الانقلاب الصيفي ثم العودة إلى التوقيت القياسي في الانقلاب الشتوي التالي عامًا بعد عام. يحدث هذا الانتقال لمدة 180 يومًا من كل فترة 6 أشهر ، ويكون التعديل 20 ثانية يوميًا لمدة 360 يومًا مع إضافة 5 أو 6 أيام المتبقية إلى طول الانقلابات. يزيد المثال الخاص بي هنا دقيقة واحدة مرة كل ثلاثة أيام خلال دورة 180 يومًا. في الحادي والعشرين من يونيو من كل عام أو في حدود ذلك الوقت ، تكون الساعة ساعة كاملة أمامنا ، وفي 21 ديسمبر / كانون الأول أو حوالي ذلك التاريخ ، تراجعت الساعة إلى التوقيت القياسي. يتم احتساب السنة الكبيسة بسهولة خاصة إذا تم استخدام RTC. يمكن تكييف نصف الكرة الجنوبي بسهولة مع هذه الساعة أيضًا ، مقياس الشريحة هو ببساطة خارج المرحلة 6 أشهر من نصف الكرة الشمالي.

هناك ثلاثة أماكن في العالم سيكون التوقيت الصيفي فيها إلى حد كبير ما لم تكن المنطقة الاستوائية والأقطاب. لا أعتقد أن ضوء النهار يتغير كثيرًا عند خط الاستواء ، ولا أعرف ما إذا كانت أي من المناطق الاستوائية تستخدم التوقيت الصيفي والأقطاب هي قصة مختلفة مرة أخرى ، فقط ما هو الوقت عند القطبين على أي حال؟

الخطوة 1: حول الساعة

عن الساعة
عن الساعة
عن الساعة
عن الساعة

تعتمد الساعة التي قمت بإنشائها على الوقت القياسي الذي لا يختلف أبدًا عن الساعة العالمية المقبولة دوليًا ، ويتم عرض هذا على السطر الأول من شاشة LCD 1602. السطر الثاني هو نفس مقياس الوقت ولكنه يعرض مجموعة الدقائق من الانقلاب الشتوي إلى التالي. من الانقلاب الشتوي إلى الانقلاب الصيفي ، يزداد التعاد دقيقة واحدة كل ثلاثة أيام بحد أقصى ستين دقيقة. من الانقلاب الصيفي إلى الانقلاب الشتوي ، يتناقص الإزاحة دقيقة واحدة كل ثلاثة أيام حتى يتماثل الوقت القياسي ووقت التوقيت الصيفي.

في هذا المثال ، استخدمت التوقيت العسكري (24 ساعة) والوقت القياسي (12 ساعة على مدار الساعة) صباحًا ومساءً لمساعدة هؤلاء الأشخاص الذين ليسوا على دراية بمقياس الوقت 24 ساعة ، كما أعطت غرفتي لعرض رقم اليوم هو التوقيت الصيفي مجموعة من. يمكن تغيير الرمز لعرض 12 ساعة. لقد أضفت ثلاثة أزرار ضغط متصلة بأطراف رقمية 2 و 3 و 4 لضبط الوقت. ستعمل هذه الأزرار على زيادة الثواني أو الدقائق أو الساعات فقط. الأزرار اختيارية ، وستظل الساعة تعمل بشكل جيد إذا لم تقم بتوصيل الأزرار ولا تحتاج إلى تغيير الرمز. أوصي باستخدام زر على الأقل لضبط الثواني ، وإذا تعذر تحقيق الدقة الكاملة ، فاحتفظ بالساعة على الجانب البطيء ، فإن الزر يتقدم بالوقت 1 ثانية في الثانية.

إذا بدأت الساعة من Arduino IDE ، فسوف يستغرق الأمر حوالي 5.5 إلى 6 ثوانٍ حتى يتم تحميل الرسم التخطيطي والإقلاع ، وإذا كان لديك الرسم الذي تم تحميله على Arduino ، فقم بتوصيله بثؤلول الحائط أو مصدر الطاقة ، فسيستغرق الأمر حوالي 2.5 إلى 3 ثوان للتمهيد والتشغيل.

هناك بعض الإعداد اليدوي المطلوب عندما تصبح الساعة جاهزة للتشغيل أخيرًا.

لا تستخدم هذه الساعة وحدة RTC ولا جرعتها تستخدم "delay () ؛" أوامر.

إذا كنت تحب استخدام RTC مع Arduino ، فلا يزال من الممكن استخدام هذا المفهوم. سوف يعطيك RTC جميع المعلومات التي تحتاجها لإضافة وقت EDSC. قد يكون الرمز مختلفًا تمامًا مع وحدة RTC ، ولم أنظر إليه. أنت إلى حد كبير بمفردك إذا كنت تفعل ذلك ، لكنها طريقة رائعة لتمرين عقلك.

الخطوة الثانية: ما سوف تحتاجه

ما سوف تحتاجه
ما سوف تحتاجه
ما سوف تحتاجه
ما سوف تحتاجه
ما سوف تحتاجه
ما سوف تحتاجه

قائمة التسوق

1 Arduino Uno أو Mega2569 (دبابيس I2C هي A4 و A5 على UNO و 20 و 21 في 2560 ميجا)

يجب أن يعمل أي Arduino آخر تقريبًا ، وقد تكون الدبابيس المستخدمة مختلفة. لهذه المسألة ، ستعمل أي لوحة تحكم. سيكون عليك إعادة كتابة الكود الخاص بهذه اللوحة أو الشركة المصنعة.

1 شاشة LCD 1602 (لون من اختيارك)

أستخدم حزمة خلفية I2C مع شاشة LCD ، أجد أنه من الأسهل والأسرع إعدادها.

أسلاك العبور

التوريدات الاختيارية

1 لوح خبز متوسط الحجم

1-3 أزرار ضغط اتصال لحظية

1-3 مقاومات 10 كيلو أوم

هذا التوجيه طويل ، لذا لن أذهب إلى التركيب أو الخزانة التي استخدمتها لعرض الساعة. إذا كنت تحب هذا المشروع وترغب في عمل نسخة دائمة ، فقم بتصميمه حسب رغبتك. هذا التصميم مثالي بالنسبة لي لأنه كان لدي كل ما أحتاجه في صندوق البريد غير المرغوب فيه وأحب مظهره.

ملحوظات:

لتجنب سقوط حفرة انقطاع التيار الكهربائي ، يتم تشغيل ساعتي الأخيرة بواسطة لوحة شمسية لدي في الخارج. تحتفظ اللوحة الشمسية ببطارية 12 فولت مشحونة بمنظم لمنع الشحن الزائد. هذه البطارية متصلة بـ Arduino عبر مقبس الطاقة بجوار منفذ USB. أبقي منفذ USB متصلاً بالشبكة لتقليل السحب على البطارية. يمكن استخدام كلا مصدري الطاقة في نفس الوقت دون إلحاق الضرر بأردوينو. يمكن شحن بطارية 12 فولت إلى 14.5 فولت كحد أقصى وهو مرتفع جدًا بالنسبة إلى Arduino لذلك أستخدم محول باك لتقليل جهد الإمداد من البطارية إلى نطاق من 9 إلى 12 فولت. ستستمر بطارية 12 فولت التي أبقيها مشحونة لمدة 3 أو 4 أيام إذا كانت الأيام ملبدة بالغيوم. سيقطع المنظم الذي أستخدمه الطاقة عن Arduino إذا انخفض جهد البطارية إلى 11 فولت. البطارية التي أمتلكها تأتي من نظام إضاءة الطوارئ للمباني التجارية ، يبلغ حجمها حوالي ربع بطارية السيارة الصغيرة. إذا كنت تنوي استخدام بطارية السيارة ، فتأكد من إبقائها في منطقة جيدة التهوية (بالخارج) ، حيث تصدر بطاريات السيارات غاز الهيدروجين والأكسجين أثناء شحنها وتفريغها ، فهذه تركيبة متفجرة.

تحذير

حافظ على البطارية في حالة جيدة

منطقة ذات تهوية ،

في الخارج

الخطوة 3: الأسلاك

الأسلاك
الأسلاك

لقد قدمت مخططًا لجميع الاتصالات في هذا المشروع ، إذا كنت تستخدم لوحة توصيل ، فستحتاج إلى لوحة متوسطة الحجم ، وستحتاج المفاتيح إلى مساحة لتنتشر حتى لا تكون الدائرة مربكة.

تحتوي شاشة LCD 1602 على حزمة خلفية I2C من أجل البساطة ، إذا كنت تستخدم اتصالات SPI ، فستحتاج إلى البحث عن كيفية استخدامها وتعديل الكود بالقرب من بداية الرسم التخطيطي. لم أستخدم وصلات SPI مطلقًا ، لذا قد لا تتوفر المسامير 2 و 3 و 4 لأزرار الضغط الثلاثة.

تُستخدم الأزرار الانضغاطية الثلاثة لضبط الوقت على مدار الساعة. هم فقط يقدمون الوقت (AHEAD). في التعديلات النهائية ، احتفظ بالساعة في الكود على الجانب البطيء (حوالي ثانية إلى ثانيتين في اليوم أو عدة أيام) بهذه الطريقة يمكنك تقديم الوقت إذا لزم الأمر. يقوم كل زر بتقدم الوقت بمعدل زيادة واحدة في الثانية ، والزر السفلي 2 ثانية في الثانية ، والزر الأوسط 1 دقيقة في الثانية والزر العلوي 1 ساعة في الثانية. يجب أن يكون من الممكن تحقيق درجة عالية من الدقة ، لذا لن تحتاج إلى تعديلها كثيرًا.

إذا كنت تقوم بضبط الثواني أو الدقائق أو الساعات (على سبيل المثال إذا كانت الدقائق متقدمة 58 ، 59 ، 00) فإن الساعة ستتقدم إلى الساعة التالية.

هذه الأزرار الثلاثة هي إضافة اللحظة الأخيرة للساعة ، فهي تعمل بشكل جيد ولكن قد يكون هناك طريقة أفضل. فقط تذكر أنه إذا عبثت بهذا الجزء من الكود فإن "delay ()" لا يمكن استخدام الأمر. لقد استخدمت هذه الطريقة لأنني لست بحاجة للقلق بشأن تبديل الارتداد والقفزات الغريبة في تقدم الوقت.

الخطوة 4: ما يظهر على الشاشة

ما يظهر على الشاشة
ما يظهر على الشاشة

لقد وضعت الكثير من المعلومات على شاشة 1602 LCD التي تحتاج إلى بعض الشرح:

السطر 1 أو السطر صفر '0' عند التحدث في الكود ، يعرض الوقت القياسي. على اليسار يوجد "STD" ، وهذا يعني وقت "STandarD".

التالي في السطر الأول في المنتصف هو التوقيت القياسي المحلي. لا تبدأ بالتوقيت الصيفي ، ستعرض الساعة هذا في السطر الثاني.

هذا المقياس الزمني عبارة عن ساعة 12 ساعة ، لذا على الجانب الأيمن يكون "صباحًا" أو "مساءً" للإشارة إلى الصباح أو بعد الظهر.

يظهر السطر الثاني أو السطر الأول "1" عند التحدث في الكود ، التوقيت الصيفي الذي يختلف وفقًا لليوم من السنة. تعني كلمة "DST" الموجودة على اليسار "التوقيت الصيفي"

في منتصف السطر الثاني يوجد التوقيت العسكري المحلي وهو 24 ساعة. سوف تسمعه يشار إليه بـ "أوه ستمائة ساعة" على سبيل المثال.

على الجانب الأيمن هو يوم السنة كما هو مشار إليه من الانقلاب الشتوي ، في النصف الشمالي من الكرة الأرضية يوم 21 ديسمبر (تقريبًا) هو اليوم صفر "0" وفي نصف الكرة الجنوبي يوم 21 يونيو (تقريبًا) هو اليوم صفر "0".

لقد قدمت ملفين بتنسيق pdf كمرجع عند إعداد الساعة لأول مرة. اختر الملف الذي يشير إلى نصف الكرة الأرضية الذي تعيش فيه.

الأزرار الثلاثة الموجودة على اليمين زيادة الثواني والدقائق والساعات من أسفل إلى أعلى.

الخطوة 5: إعداد الرسم

إعداد الرسم
إعداد الرسم

هناك عدة أسطر من التعليمات البرمجية التي يجب إعدادها لبدء التشغيل الأولي. يجب تغيير بعض هذه الخطوط في كل مرة تقوم فيها بفصل الساعة وتغيير قيم المتغيرات في الرسم التخطيطي. إذا بدأت الساعة الخاصة بـ IDE ، فسيستغرق تحميلها وبدء تشغيلها حوالي 6 ثوانٍ. إذا قمت بتحميل الرسم من IDE ، فافصل الساعة وأعد تشغيلها من ثؤلول الحائط أو مزود الطاقة ، فسيتم تشغيل الرسم في حوالي 2.5 ثانية.

Line 11 LiquidCrystal_I2C lcd (0x27 ، 2 ، 1 ، 0 ، 4 ، 5 ، 6 ، 7) ؛

يتناول هذا السطر شاشة LCD ويحدد العنوان الصحيح لحزمة ظهر I2C. 0x27 هو عنوان أي من الحزم الخلفية التي اشتريتها. إذا قمت بتشغيل الساعة ولكن لا توجد بيانات معروضة ولكنها تضيء ، فمن المحتمل أن يكون العنوان مختلفًا على شاشة LCD. سأضع رابطًا أدناه للحصول على وصف لكيفية تغيير عنوان حزمة شاشة LCD الخلفية أو العثور على العنوان.

الأسطر 24 int minutesSt = 35 ؛

اضبط دقيقة البدء للساعة القياسية ، وعادةً ما تضبطها قبل 5 دقائق من بدء الساعة للسماح بوقت الإعداد.

الأسطر 25 ساعة دولية ST = 18 ؛

اضبط الساعة على وقت بدء STD (24 ساعة). 6 مساءً ستكون الساعة 18.

الخط 26 int DSTdays = 339 ؛

قم بتنزيل والرجوع إلى ملف pdf "Easy DST Clock Time Scale" (النصف الشمالي أو الجنوبي من الكرة الأرضية) الذي تعيش فيه ، وابحث عن التاريخ وأدخل اليوم # في هذا السطر. (العمود الأيسر). مثال (24 نوفمبر هو اليوم رقم 339 في نصف الكرة الشمالي واليوم رقم 156 في نصف الكرة الجنوبي)

السطر 27 int DSTyear = 2019 ؛

أدخل السنة الحالية.

سطر 92 if ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

يجب مقارنة "previousMasterTimeSt" بعدد المللي ثانية ، لذا قد يحتاج هذا "1000" للتغيير إلى 999 اعتمادًا على الساعة الداخلية للوحة Arduino ثم اضبط MicroTime السابق لضبط الساعة. الساعة الداخلية على الرغم من أن 16MH لها اختلافات من لوحة إلى أخرى.

يقوم "previousMicroTimeSt" بضبط الساعة الداخلية للمساعدة في حساب دقيقة واحدة. إذا كانت الساعة سريعة جدًا ، فقم بزيادة الميكروثانية وإذا كانت الساعة بطيئة جدًا ، قم بتقليل عدد الملي ثانية وإذا لزم الأمر ، قم بإسقاط المللي ثانية إلى 999 ثم ابدأ الميكروثانية عند حوالي 999 ، 990 أو قم بزيادة سرعة الساعة.

تتميز كل لوحة من لوحات Arduino بسرعة مختلفة قليلاً ، وبالتالي ستتغير هذه الأرقام مع كل لوحة تستخدمها. لم يتم اختبار جزء من الكود بعد ، وهذا هو السطر 248 لحساب كل سنة كبيسة. في الأسابيع القليلة المقبلة ، سأختبره وأقوم بنشر أي تغييرات إذا لزم الأمر.

الخطوة 6: الملاحظات النهائية

ملاحظات نهائية
ملاحظات نهائية

هذا المشروع سهل البناء ولكن المفهوم والتعديلات الضرورية في الكود قد تكون مهمة ، خذ وقتك وفكر في الأمر ، لا تنتهي الساعة حتى نهاية عام 2037. سأراقب عن كثب أرسل بريدًا إلكترونيًا للأسئلة لأنني متأكد من أنه سيكون هناك البعض ، فأنا لست عبقريًا أدبيًا ، لذا قد تكون بعض أوصافي موحلة بعض الشيء.

هناك نوعان من ملفات pdf المضمنة ، قم بتنزيل الملف الخاص بنصف الكرة الأرضية الذي تعيش فيه ، وسيمنحك هذا الملف المعلومات الضرورية لبدء الساعة بدقة.

مع المعلومات التي تم التلاعب بها في المخطط ، سيكون من السهل عرض ليس فقط الوقت القياسي ووقت التوقيت الصيفي ولكن أيضًا اليوم والتاريخ على شاشة LCD 2004A. إذا كنت تحب التحديات التي يوفرها هذا المشروع ، فحاول توصيل شاشة LCD 2004A ، ثم أضف رمزًا لعرض المعلومات الإضافية أو إذا ظهر اهتمام كافٍ ، فسأقوم بصيغة أخرى لهذا المشروع بما في ذلك هذه المعلومات الإضافية.

لقد حاولت أن أكون شاملاً في هذا المشروع لكنني وجدت ثلاث مناطق في العالم المعني. القطب الشمالي والقطب الجنوبي وخط الاستواء.

هل التوقيت الصيفي ضروري أو ممكن حتى في القطب الشمالي أو الجنوبي؟

ما هو الوقت في القطب الشمالي أو الجنوبي؟

ما الاتجاه الذي ستسلكه لمغادرة القطب الشمالي أو القطب الجنوبي؟

من القطب الجنوبي ، ما الاتجاه الذي ستسافر إليه للوصول إلى أوسترايليا أو أمريكا الشمالية أو أوروبا أو آسيا؟

في أي منطقة زمنية يعيش سانتا؟

هل يحتاج التوقيت الصيفي؟

ما هو الوقت على أي حال في القطب الشمالي؟

في أي اتجاه يسافر سانتا لتقديم كل هداياه؟

في أي خط عرض يكون التوقيت الصيفي فعالاً؟

الآن لخط الاستواء.

هل هذه الساعة قابلة للاستخدام عند خط الاستواء؟

هل سيستخدمون مقياس نصف الكرة الشمالي أم الجنوبي؟

ما هي مواعيد الانقلاب الشتوي والانقلاب الصيفي؟

في أي خط عرض يكون التوقيت الصيفي فعالاً؟

هل تحتاج طيور البطريق إلى التوقيت الصيفي؟

هل تعتقد أنني غريب على التفكير في هذه الأسئلة؟

بناء سعيد للجميع!

فيلمينت

الخطوة 7: روابط أخرى

هذا رابط لتحديد أو تغيير العنوان الموجود على حزمة I2C الخلفية:

www.instructables.com/id/1602-2004-LCD-Adapter-Addressing/

كتب PiotrS تعليمات ممتازة لعناوين أجهزة I2C

playground.arduino.cc/Main/I2cScanner

سيقوم هذا الارتباط بفحص جهاز I2C الخاص بك وإرجاع العنوان

موصى به: