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

Arduino 3-in-1 Time and Weather Display: 11 خطوة
Arduino 3-in-1 Time and Weather Display: 11 خطوة

فيديو: Arduino 3-in-1 Time and Weather Display: 11 خطوة

فيديو: Arduino 3-in-1 Time and Weather Display: 11 خطوة
فيديو: Arduino Weather Station dht11 | Display Sensors Data on Gauges vb.net | temperature and humidity 2024, شهر نوفمبر
Anonim

بواسطة Boomer48 تابع المزيد بالمؤلف:

باستخدام ATtiny85
باستخدام ATtiny85
باستخدام ATtiny85
باستخدام ATtiny85
أداة تقليم الفطيرة وتقليم المضلع Pi Powered Pi
أداة تقليم الفطيرة وتقليم المضلع Pi Powered Pi
أداة تقليم الفطيرة وتقليم المضلع Pi Powered Pi
أداة تقليم الفطيرة وتقليم المضلع Pi Powered Pi
ضوابط رقمية لمضخم الصوت اليدوي
ضوابط رقمية لمضخم الصوت اليدوي
ضوابط رقمية لمضخم الصوت اليدوي
ضوابط رقمية لمضخم الصوت اليدوي

أنا أحب الميكروكونترولر PIC وأحب البرمجة بلغة التجميع. في الواقع ، على مدار العامين الماضيين ، قمت بنشر حوالي 40 مشروعًا على موقع الويب الخاص بي بناءً على هذه المجموعة. كنت مؤخرًا أطلب بعض الأجزاء من أحد البائعين الأمريكيين المفضلين لدي ، ورأيت Arduino Nano ، بكابل برمجة ، مقابل 1.20 دولار فقط أكثر من شريحة المعالج ATMEGA328 العارية. لذلك اشتريت اثنين منهم. ثم قمت بتنزيل Arduino IDE وقمت بإزالة الغبار عن ذاكرتي الخاصة ببرمجة "C ++".

هذا المشروع عبارة عن مزيج من ساعة تستخدم نظام تحديد المواقع العالمي (GPS) للتوقيت وجهاز استقبال RF يقوم بفك تشفير رسائل الطقس من مستشعر AcuRite شائع. والنتيجة هي عرض صغير للوقت ودرجة الحرارة. يتم إعداد ساعات نظام تحديد المواقع العالمي (GPS) وإجراءات الطقس كملفات متضمنة منفصلة ، لذلك من السهل الدخول في الروتين الرئيسي وتكوينه للقيام فقط بوظيفة الساعة أو وظيفة الطقس فقط. فقط قم بإلغاء التعليق "#define" المناسب في الجزء العلوي من الروتين الرئيسي إذا كنت تريد فقط إحدى الوظائف.

إذا تم استخدام كلتا الوظيفتين ، فسيعرض السطر العلوي من شاشة LCD التوقيت المحلي ويعرض الخط السفلي من شاشة LCD الرطوبة ودرجة الحرارة بالدرجة المئوية والفهرنهايت. إذا تم استخدام وظيفة الساعة فقط ، فسيعرض السطر العلوي التوقيت المحلي ويعرض الخط السفلي التوقيت العالمي المنسق (UTC). إذا تم استخدام وظيفة الطقس فقط ، فسيعرض السطر العلوي أول جهاز استشعار تم استلامه ويعرض الخط السفلي أي مستشعر آخر تم استلامه. لقد أضفت هذه القدرة لأن لديّ مستشعرين للطقس.

الخطوة 1: مستشعر الطقس

مستشعر الطقس
مستشعر الطقس
مستشعر الطقس
مستشعر الطقس
مستشعر الطقس
مستشعر الطقس

يرسل مستشعر الطقس AcuRite المستخدم هنا معلومات درجة الحرارة والرطوبة كل 16 ثانية. يظهر على ظهره رقم طراز 000592TXR ولكن يتم الإعلان عنه عادةً كنموذج 06002M. يتم استخدام هذا المستشعر بواسطة العديد من طرز محطات الطقس المختلفة ، لذا من السهل العثور عليه وتمكنت من الحصول عليها على موقع eBay مقابل أقل من 20 دولارًا. تبيع AcuRite مستشعرات متشابهة المظهر لبعض محطات الطقس الخاصة بها ولكنها قد تلتزم أو لا تلتزم ببروتوكول الاتصال نفسه. هناك بعض الإشارات على الويب إلى أن مستشعر درجة الحرارة 00606 فقط يستخدم نفس تنسيق الرسالة ولكن مع بايت رطوبة غير صالح.

كما هو موضح في الشكل الموجي الأول الموضح أعلاه ، يتم إرسال رسائل الطقس في رشقات مع فجوة 2 مللي ثانية بين الرسائل المتتالية. يوسع الشكل الموجي الثاني الموضح أعلاه جزءًا من رسالة واحدة لمعرفة فترات وأنماط البتات. هناك أربع وحدات بت مزامنة يبلغ ارتفاعها حوالي 600us متبوعة بـ 600 بت منخفضة. يتم تمثيل بتات البيانات بـ 400us مرتفع متبوعًا بـ 200us منخفض (1) أو 200us مرتفع يليه 400us منخفض (0).

يتكون تنسيق الرسالة من 7 بايت من البيانات. أول وحدتي بايت هما معرف المستشعر ولا يتغيران (على سبيل المثال: لا يستخدم رمزًا متداولًا). البايت الأخير هو مجموع تدقيق مضاف بسيط لأول ستة بايتات. البايت الثالث هو مؤشر لمستوى البطارية ويجب أن يكون دائمًا 44 سداسي عشري إذا كانت البطارية جيدة. البايت الرابع هو الرطوبة وهي قيمة غير متدرجة تتراوح بين 0 و 99. من المهم أن تضع في اعتبارك أن البايت الأكثر أهمية من البايتات 4 و 5 و 6 هي بت تماثل وليست جزءًا من القياس القيم. البايتان 5 و 6 هما درجة الحرارة المقاسة (مئوية) مع تسلسل 4 بتات أقل من البايت 5 مع 7 بتات أقل من البايت 6 لتكوين قيمة 11 بت. يتم تمثيل درجة الحرارة دائمًا كرقم موجب وتصبح سالبة فقط عند تطبيق القياس. القياس هو (C / 10) - 100. القسمة على 10 مطلوبة لأن تحليل درجة الحرارة يكون بعشر درجة. الطرح مطلوب لأنه تمت إضافة 100 بواسطة المستشعر من أجل الحفاظ على القيمة المرسلة موجبة.

الخطوة 2: مستقبل الترددات اللاسلكية

مستقبل الترددات اللاسلكية
مستقبل الترددات اللاسلكية
مستقبل الترددات اللاسلكية
مستقبل الترددات اللاسلكية

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

الخطوة 3: هوائيات الترددات اللاسلكية

هوائيات الترددات اللاسلكية
هوائيات الترددات اللاسلكية

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

الاحتمال الآخر هو صنع هوائي حلزوني خاص بك. هناك مجموعة متنوعة من الخطط لذلك على الويب ولكن المخطط المبين في الصورة أعلاه هو ما صنعته. لقد استخدمت بعض الأسلاك الأساسية الصلبة من قطعة خردة من كبل Ethernet ولفته حول السيقان السلس لقمة حفر 5/32 بوصة. اترك العازل مفتوحًا باستثناء الطرف الذي يستخدمه الجنود في لوحة الترددات اللاسلكية. ستحتاج 20 دورًا. يمكنك أيضًا استخدام مثقاب مقاس 7/32 بوصة ولف 17 لفة بدلاً من ذلك. من المحتمل أن يعمل أي من هذه الأجهزة بشكل جيد مع النطاقات التي من المحتمل أن تمتلكها لأجهزة الاستشعار الخاصة بك. المفتاح الحقيقي هو امتلاك جهاز استقبال RF جيد لتبدأ به. تحتوي مستشعرات AcuRite أيضًا على أجهزة إرسال قوية جدًا.

الخطوة 4: بروتوكول الاتصالات اللاسلكية

هناك عدد قليل من تقنيات التعديل المختلفة لإرسال البيانات ولكن هذه المستشعرات تستخدم أبسطها وهي OOK (تشغيل-إيقاف-مفتاح) أو ASK (مفتاح إزاحة السعة). نظرًا لأننا نتعامل مع بتات بيانات 0/1 في هذا المثال ، فإن السعة ممتلئة أو ممتلئة. لذلك ، لأغراضنا ، فإن OOK و ASK هما نفس الشيء لأن OOK تعني أن ناقل التردد اللاسلكي إما ممتلئ أو ممتلئ. يتم تحديد تنسيق الرسالة بشكل عام من قبل الشركة المصنعة لجهاز الإرسال ويمكنهم استخدام أي معدل إرسال وأي نمط تنسيق بت وأي طول رسالة تقريبًا. النطاق 433 ميجاهرتز مزدحم ومليء بالإرسال لأشياء مثل العدادات الذكية ، وما إلى ذلك ، لذا يحتاج البرنامج إلى الضبط لتصفية تنسيق الرسالة الذي نريد استخدامه فقط.

الخطوة 5: بيانات الوقت

بيانات الوقت
بيانات الوقت

أستخدم وحدة GPS رخيصة للحصول على بيانات دقيقة للوقت ستتم إعادة تشغيلها تلقائيًا بعد انقطاع التيار الكهربائي. لدي العديد من وحدات GPS (بدون شاشات عرض) التي تُخرج جمل NMEA القياسية ولكن أصغر وأرخص الوحدات التي أملكها هي NEO-6M. من السهل توصيل وحدة NEO-6M بأردوينو لأنها تستخدم منفذ تسلسلي على مستوى TTL. الاختلاف الحقيقي الوحيد هو أن معيار NMEA يحدد معدل باود تسلسلي يبلغ 4800 لكن NEO-6M افتراضيًا إلى 9600 باود. يمكنك تشغيل برنامج "u-center" المجاني لتغيير معدل البث بالباود لكنني تركته على الإعداد الافتراضي للمصنع. يوجد أيضًا برنامج فائدة مجاني يسمى GPSInfo (تم طرحه بواسطة Globalsat) وهو مفيد جدًا لعرض معلومات GPS على جهاز الكمبيوتر. يمكنك توصيل وحدة GPS بكابل قياسي USB إلى TTL للتحقق من ذلك أو لإعداده باستخدام جهاز كمبيوتر. ضع في اعتبارك أن شريحة GPS على الوحدة تعمل فعليًا عند 3.3 فولت (عبر منظم جهد داخلي) ، لذا إذا كنت ترغب في الاتصال بمنفذ RXD الخاص بها ، فيجب عليك خفض المستوى من 5 فولت. يمكن لمنفذ TXD الاتصال مباشرة بـ Arduino أو الكمبيوتر الشخصي.

الخطوة 6: المناطق الزمنية

يعد عرض وقت GPS أمرًا سهلاً طالما أنك تريد فقط عرض التوقيت العالمي المنسق (UTC). تتكون جمل NMEA من أحرف ASCII التي يمكن إخراجها مباشرة إلى شاشة LCD. جزء الوقت بتنسيق HHMMSS. FF (الساعات والدقائق والثواني والثواني الكسرية). بالنسبة إلى ساعتنا ، الجزء الكسري ليس مفيدًا ، لذا كل ما نحتاج إلى التعامل معه هو ستة أحرف. تكمن المشكلة في أنك تحتاج بعد ذلك إلى التحويل إلى توقيتك المحلي وإلى تنسيق 12 ساعة صباحًا / مساءً إذا كنت تريد ذلك. لكن في بعض الأحيان تكون المشاكل هي ما تجعل الحياة ممتعة ، وهذا هو ما يدور حوله هذا الجزء من البرنامج حقًا.

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

الخطوة 7: التخطيطي

تخطيطي
تخطيطي

يتم عرض التخطيط أعلاه ويتضمن اتصالات لواجهة 4 بت 1602 LCD. تكون البيانات التسلسلية من مستقبل الترددات اللاسلكية عند مستويات المنطق الرقمي لذا فهي متصلة مباشرة بأحد أطراف إدخال بيانات Arduino. تم تكوين الدبوس في البرنامج لأداء وظيفة المقاطعة عند التغيير حتى نتمكن من قياس عرض النبض. يتم توصيل مخرج GPS TXD مباشرة بمدخل Arduino RX.

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

المفتاح الثاني هو مفتاح تشغيل / إيقاف بسيط. في وضع "إيقاف التشغيل" ، سيتم عرض الوقت بتنسيق 12 ساعة (AM / PM) وفي وضع "التشغيل" ، سيتم عرض الوقت بتنسيق 24 ساعة. يمكن تغيير رمز التبديل هذا في أي وقت للتبديل بين التنسيقات.

إذا كانت وظيفة الساعة فقط مطلوبة ، فلن تحتاج وحدة مستقبل التردد اللاسلكي إلى التوصيل. إذا كانت وظيفة الطقس فقط مطلوبة ، فلن تحتاج إلى توصيل GPS والمفتاحين.

الخطوة 8: برنامج LCD

أميل إلى استخدام نوع من نوعين من واجهات LCD. أحدهما هو الواجهة القياسية 4 بت والآخر عبارة عن واجهة ثلاثية الأسلاك تستخدم سجل التحول. لقد صممت تلك الواجهة عندما كنت أعمل مع ميكروكنترولر PIC الصغيرة التي تحتوي على عدد محدود من دبابيس الإدخال / الإخراج. لقد استخدمت واجهة 4 بت لهذا المشروع ولكن لديّ ملفًا يتضمن شاشة LCD خاصة بي بدلاً من استخدام مكتبة Arduino LCD العامة. هذا يقلل من استهلاك الذاكرة وتعقيد الكود ويسمح لي أيضًا بتعديل الكود لمشاريع محددة مثل هذا المشروع.

الخطوة 9: برنامج الساعة

تنتج وحدة GPS جمل NMEA-0183 القياسية وهي عبارة عن سلاسل ASCII تحتوي على مجموعة متنوعة من المعلومات. بالنسبة لهذا التطبيق ، اخترت جملة GGA للحصول على معلومات الوقت لأن هذه هي الجملة التي استخدمتها في مشروع GPS سابق. يتم فصل حقول المعلومات في جمل NMEA بفاصلات ، لذلك ، بعد اكتشاف رأس جملة GGA ، يقوم البرنامج عادةً بحساب الفواصل واستدعاء الروتين المناسب لكل حقل مطلوب من معلومات GPS. فقط معلومات الوقت مطلوبة هنا وهذا في الحقل بعد الفاصلة الأولى لذلك لا حاجة إلى العد.

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

إذا تم تكوين البرنامج لعرض الوقت فقط ، فسيعرض السطر الأول من شاشة LCD التوقيت المحلي وسيعرض السطر الثاني التوقيت العالمي المنسق (UTC). بالنسبة إلى التوقيت العالمي المنسق ، يرسل البرنامج أحرف ASCII مباشرة إلى روتين العرض ، مع إدراج النقطتين (:) بشكل مناسب.

لتحويل التوقيت العالمي المنسق (UTC) إلى التوقيت المحلي ، يجب تطبيق إزاحة التوقيت العالمي المنسق (المنطقة الزمنية). نظرًا لأن التوقيت العالمي المنسق (UTC) من GPS بتنسيق ASCII ، فإن البرنامج يحول أحرف ساعة ASCII إلى رقم عشري ثم يضيف إزاحة التوقيت العالمي المنسق (UTC). يتم تخزين إزاحة UTC كقيمة موجبة لـ BCD مع بت إشارة لذلك يتم تحويلها أولاً إلى قيمة عدد صحيح ثم يتم إبطالها إذا تم تعيين بت الإشارة. بمجرد حساب قيمة ساعة التوقيت المحلي ، يتم استخدام جدول بحث لتحويلها إلى BCD ، ثم يتم تحويل BCD مرة أخرى إلى ASCII للعرض. يحتاج جدول البحث إلى التعامل مع تنسيق UTC 24 ساعة بالإضافة إلى +/- 12 منطقة زمنية. للقيام بذلك ، تشغل أوقات التوقيت العالمي المنسق (UTC) من 0000 إلى 2300 إدخالات 24 الوسطى في الجدول مع 12 إدخالًا قبل و 12 إدخالًا بعد ذلك لحساب المناطق الزمنية. جدول واحد بتنسيق 12 ساعة لذلك أضفت أيضًا جدول بحث لجزء AM / PM من العرض. الجدول الآخر بتنسيق 24 ساعة. كما ذكرنا سابقًا ، يسمح مفتاح التشغيل / الإيقاف باختيار تنسيق 12 ساعة أو 24 ساعة.

يتم استرداد المنطقة الزمنية من EEPROM أثناء التهيئة وعرضها لفترة وجيزة. إذا لم يتم تعيينه مرة واحدة على الأقل ، فسيتم استدعاء روتين الإعداد. يمكن أيضًا استدعاء روتين الإعداد في أي وقت بالضغط على مفتاح الاتصال اللحظي. سيعمل إجراء الإعداد على تهيئة العرض إلى "UTC OFFSET +77". ضغطة قصيرة على المفتاح ستغير القيمة إلى "-00". إذا كانت المنطقة الزمنية الموجبة مطلوبة ، فإن ضغطة قصيرة أخرى ستغير القيمة إلى "+00". الضغط لفترة طويلة (> 1 ثانية) سينقل وضع الإعداد إلى الخطوة التالية. في هذه المرحلة ، ستؤدي كل ضغطة قصيرة إلى زيادة القيمة الزمنية بحد أقصى 12. بعد الوصول إلى المنطقة الزمنية المطلوبة ، اضغط مع الاستمرار على المفتاح لمدة تزيد عن ثانية واحدة ثم حرره. سيقوم البرنامج بعد ذلك بحفظ قيمة UTC في EEPROM ويعرض لفترة وجيزة "OFFSET SAVED". إذا ارتكبت خطأ أثناء الدخول ، فما عليك سوى الخروج ثم الضغط على المفتاح مرة أخرى لإعادة تعيينه.

لا يتطلب NEO-6M إصلاحًا جيدًا للموضع من أجل إخراج الوقت ، لذلك يجب أن يخرج الرسائل بمجرد حصوله على قمر صناعي واحد. حتى ذلك الحين ستظهر على الشاشة عبارة "NO DATA".

الخطوة 10: برنامج الطقس

المتحكم الميكروي PIC لديه القدرة على تشغيل / إيقاف تشغيل مؤقت باستخدام نبضة خارجية. يمكن أيضًا استخدام نفس نبضة الإدخال كمقاطعة خارجية للإشارة إلى قراءة مدة النبض. لا يمتلك Arduino هذه الإمكانية الدقيقة لذلك استخدمت وظيفة المقاطعة عند التغيير. على حافة واحدة من رسالة التردد اللاسلكي ، يتم حفظ الوقت الحالي بالميكرو ثانية بواسطة معالج المقاطعة. على الحافة المقابلة ، يتم حساب الوقت المنقضي لتحديد عرض النبضة.

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

يحدد معالج المقاطعة ما إذا كان العد الملتقط طويلًا بما يكفي ليكون نبضة بداية. كما ذكرنا سابقًا ، تبلغ الفجوة بين الرسائل المتعددة 2 مللي ثانية ، وهذا ما يبحث عنه البرنامج. نظرًا لحركة المرور البالغة 433 ميجاهرتز ، فإن الفحص الأولي في البرنامج يتأكد من أن الوقت المقاس لا يقل عن 1.8 مللي ثانية ولكن ليس أكبر من 2.4 مللي ثانية. بعد اكتشاف البداية ، يبحث البرنامج عن وحدات بت المزامنة (600us) ويتم احتسابها للتأكد من استلام أربعة منها. بمجرد اجتياز هذه الاختبارات ، يبحث البرنامج عن أوقات البت المناسبة لـ 200us و 400us.

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

يتم مزج البايتين من بيانات Centigrade في رسالة RF معًا لتشكيل قيمة 11 بت. يتم إزاحة الجزء السفلي لليسار بتة واحدة لإزالة بت التكافؤ ومواءمته مع البتات في الجزء العلوي. يتم تشكيل البايتين في متغير كلمة 16 بت ثم يتم إزاحة كل شيء بشكل صحيح بمقدار بت واحد للحصول على محاذاة البت النهائية. ثم يتم تحويل متغير الكلمة إلى متغير فاصلة عائمة في الحسابات الرياضية.

تتمثل إحدى الميزات الكبيرة لاستخدام C ++ على لغة Arduino مقابل لغة التجميع على PIC في تبسيط العمليات الحسابية للرياضيات. كما ذكرنا سابقًا ، فإن تحويل الدرجة المئوية هو (C / 10) -100. يتم تحويل النتيجة إلى سلسلة وإرسالها إلى شاشة LCD لعرضها. حساب فهرنهايت هو (C * 1.8) + 32. يتم تحويل النتيجة مرة أخرى إلى سلسلة وإرسالها إلى شاشة LCD للعرض. في كلتا الحالتين ، يتضمن تحويل السلسلة العلامة السالبة (إذا كان ذلك مناسبًا) والعلامة العشرية. يتم إجراء فحص للفاصلة العشرية للتأكد من إرسال حرف واحد فقط بعد العلامة العشرية إلى الشاشة. هذا الفحص ضروري لأن السلسلة يمكن أن يتراوح طولها من 3 إلى 5 أحرف.

لدي مستشعران من AcuRite لذا أضفت فحصًا في البرنامج للتأكد من أن بيانات أحدهما لا تستبدل البيانات للآخر إذا تم تعيين البرنامج للقيام بوظيفة الطقس فقط. المستشعر الأول الذي تم استلامه بعد عرض الطاقة في السطر 1 والآخر معروض في السطر 2. وباستخدام وضع التصحيح ، يمكنني رؤية المعرف لكل مستشعر حتى أتمكن من إجراء فحص بسيط في الرمز إذا كنت فقط أراد معالجة البيانات من أحدهم.

يراقب البرنامج حالة البطارية (بايت 3) ويعرض رسالة إذا كانت تشير إلى أن البطارية منخفضة. تقوم هذه الرسالة بالكتابة فوق جميع البيانات الأخرى الخاصة بهذا المستشعر.

الخطوة 11: يعرض

يعرض
يعرض
يعرض
يعرض
يعرض
يعرض

فيما يلي بعض الأمثلة على شاشات العرض للوظائف المختلفة. لدي عدد قليل من Instructables الأخرى ولكن يمكن العثور على معظم مشاريع وحدة التحكم الدقيقة PIC الخاصة بي على موقع الويب الخاص بي على: www.boomerrules.wordpress.com

موصى به: