فهرست مطالب:

زمان و آب و هوا آردوینو 3 در 1: 11 مرحله
زمان و آب و هوا آردوینو 3 در 1: 11 مرحله

تصویری: زمان و آب و هوا آردوینو 3 در 1: 11 مرحله

تصویری: زمان و آب و هوا آردوینو 3 در 1: 11 مرحله
تصویری: لزبازی لیلا اوتادی چه لبی میگیره (نبینی از دستت رفته) 2024, نوامبر
Anonim

بیشتر توسط نویسنده دنبال کنید:

با استفاده از ATtiny85
با استفاده از ATtiny85
با استفاده از ATtiny85
با استفاده از ATtiny85
Pi Partition Pie Partitioning و Polygon Pruning Tool
Pi Partition Pie Partitioning و Polygon Pruning Tool
Pi Partition Pie Partitioning و Polygon Pruning Tool
Pi Partition Pie Partitioning و Polygon Pruning Tool
کنترل های دیجیتال برای تقویت کننده دستی صدا
کنترل های دیجیتال برای تقویت کننده دستی صدا
کنترل های دیجیتال برای تقویت کننده دستی صدا
کنترل های دیجیتال برای تقویت کننده دستی صدا

من میکروکنترلرهای PIC را دوست دارم و برنامه نویسی به زبان اسمبلی را دوست دارم. در واقع ، طی دو سال گذشته ، من حدود 40 پروژه را بر اساس آن ترکیب در وب سایت خود ارسال کرده ام. اخیراً من برخی از قطعات را از یکی از فروشندگان مورد علاقه ام در ایالات متحده سفارش می دادم و یک آردوینو نانو ، با کابل برنامه نویسی ، را فقط 1.20 دلار بیشتر از تراشه پردازنده ATMEGA328 برهنه دیدم. بنابراین من یکی از آنها را خریدم. سپس Arduino IDE را بارگیری کردم و حافظه برنامه نویسی C ++ را پاک کردم.

این پروژه ترکیبی از یک ساعت است که از GPS برای زمان بندی استفاده می کند و یک گیرنده RF است که پیام های آب و هوا را از یک سنسور رایج AcuRite رمزگشایی می کند. نتیجه نمایش مقیاس کوچک زمان و دما است. ساعت GPS و روال آب و هوا به صورت جداگانه شامل فایل ها می شود ، بنابراین می توانید به روال اصلی بروید و آن را طوری تنظیم کنید که فقط عملکرد ساعت یا فقط عملکرد آب و هوا را انجام دهد. اگر فقط یکی از عملکردها را می خواهید ، "#تعریف" مناسب را در بالای روال اصلی کامنت بگذارید.

اگر از هر دو عملکرد استفاده شود ، خط بالای LCD زمان محلی و خط پایین LCD رطوبت و دما را در هر دو درجه سانتیگراد و فارنهایت نشان می دهد. اگر فقط از عملکرد ساعت استفاده شود ، خط بالا زمان محلی و خط پایین UTC را نشان می دهد. اگر فقط از عملکرد آب و هوا استفاده شود ، خط بالا اولین سنسور دریافتی و خط پایین هر سنسور دریافتی دیگر را نشان می دهد. من این قابلیت را اضافه کردم زیرا دو سنسور آب و هوا دارم.

مرحله 1: سنسور آب و هوا

سنسور آب و هوا
سنسور آب و هوا
سنسور آب و هوا
سنسور آب و هوا
سنسور آب و هوا
سنسور آب و هوا

سنسور آب و هوا AcuRite که در اینجا استفاده می شود هر 16 ثانیه اطلاعات دما و رطوبت را ارسال می کند. در پشت شماره مدل 000592TXR نشان داده می شود اما معمولاً به عنوان مدل 06002M تبلیغ می شود. این سنسور توسط بسیاری از مدل های مختلف ایستگاه های هواشناسی استفاده می شود ، بنابراین پیدا کردن آن آسان است و من توانستم آنها را با قیمت کمتر از 20 دلار در eBay دریافت کنم. AcuRite سنسورهای مشابه را برای برخی از ایستگاه های هواشناسی خود می فروشد ، اما ممکن است به پروتکل ارتباطی یکسان پایبند باشند یا نباشند. برخی از نشانه ها در وب وجود دارد که نشان می دهد سنسور 00606 فقط دما از فرمت پیام مشابه اما با بایت رطوبت نامعتبر استفاده می کند.

همانطور که در شکل موج اول نشان داده شده در بالا ، پیام های آب و هوا بصورت متوالی با فاصله 2 میلی ثانیه بین پیام های پی در پی ارسال می شوند. شکل موج دوم نشان داده شده در بالا بخشی از یک پیام را گسترش می دهد تا مدت زمان و الگوهای بیت را مشاهده کند. چهار بیت همگام سازی وجود دارد که ارتفاع آنها در حدود 600 درجه و پایین آن 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

گیرنده RF
گیرنده RF
گیرنده RF
گیرنده RF

ماژول RF که من برای این پروژه استفاده می کنم RXB6 است. این یک گیرنده فوق هترودین است در مقایسه با گیرنده های فوق بازسازی بسیار مطلوب. اگر به ماژول های ارزان قیمت RF نگاه کنید ، متوجه می شوید که تابلوهای فرستنده و گیرنده اغلب با هم ترکیب شده اند. اکثر گیرنده های بسته بندی شده دارای انواع فوق العاده بازسازی هستند ، بنابراین دارای ویژگی های عملکرد بسیار پایین تری (از جمله برد) نسبت به گیرنده های فوق هترودین هستند. ما فقط به ماژول گیرنده برای این پروژه نیاز داریم زیرا از فرستنده سنسور هوا سیگنال دریافت می کنیم.

مرحله 3: آنتن های RF

آنتن های RF
آنتن های RF

RXB6 دارای آنتن نیست. شما می توانید برخی از مارپیچ ها را بسیار ارزان خریداری کنید ، اما ساخت آنتن به سادگی نیز آسان است. در واقع ، اگر نمی خواهید زیاد فانتزی شوید ، می توانید یک کابل جامپر را روی پین آنتن ماژول بکشید. در حالت ایده آل ، یک آنتن سیم مستقیم 1/4 طول موج دارد که تا 6.8 اینچ کار می کند. من در ابتدا کار سیم جامپر را انجام دادم و با برداشتن سنسور خارجی مشکلی نداشتم حتی اگر کارگاه الکترونیک من در زیرزمین من باشد.

احتمال دیگر این است که آنتن مارپیچ خود را بسازید. برنامه های متنوعی برای آن در وب وجود دارد ، اما آنچه در تصویر بالا نشان داده شده همان چیزی است که من ساخته ام. من از سیم اصلی جامد قطعه ای از کابل اترنت استفاده کردم و آن را دور ساقه صاف یک مته 5/32 اینچی پیچاندم. عایق را بجز نوک چسبانده شده به برد RF بگذارید. شما به 20 دور نیاز دارید. همچنین می توانید از مته 7/32 اینچی استفاده کنید و به جای آن 17 دور بپیچید. هر یک از این موارد احتمالاً برای محدوده هایی که احتمالاً برای سنسورهای خود دارید بسیار خوب کار می کند. کلید اصلی داشتن یک گیرنده RF خوب برای شروع است. سنسورهای AcuRite همچنین دارای فرستنده های بسیار قوی هستند.

مرحله 4: پروتکل ارتباط RF

چند روش مختلف مدولاسیون برای انتقال داده ها وجود دارد اما این سنسورها از ساده ترین آنها استفاده می کنند که OOK (خاموش و روشن کردن کلید) یا ASK (دامنه تغییر کلید) است. از آنجا که در این مثال با 0/1 بیت داده سروکار داریم ، دامنه کامل روشن یا خاموش است. بنابراین ، برای اهداف ما ، OOK و ASK یکسان هستند زیرا OOK به این معنی است که حامل RF یا روشن است یا خاموش. قالب پیام به طور کلی توسط سازنده دستگاه ارسال کننده تعریف می شود و آنها می توانند تقریباً از هر میزان انتقال ، هر نوع قالب بندی بیت و هر طول پیام استفاده کنند. باند 433 مگاهرتز مملو از گیربکس برای مواردی مانند مترهای هوشمند و غیره است بنابراین نرم افزار باید تنظیم شود تا فقط برای فرمت پیام مورد نظر ما فیلتر شود.

مرحله 5: داده های زمان

داده های زمان
داده های زمان

من از یک دستگاه GPS ارزان برای بدست آوردن اطلاعات دقیق زمان که به طور خودکار پس از قطع برق دوباره راه اندازی می شود ، استفاده می کنم. من چندین واحد GPS (بدون نمایشگر) دارم که جملات استاندارد NMEA را تولید می کند ، اما کوچکترین و ارزان ترین واحدی که دارم NEO-6M است. اتصال ماژول NEO-6M به آردوینو آسان است زیرا از پورت سریال سطح TTL استفاده می کند. تنها تفاوت واقعی این است که استاندارد NMEA نرخ بادی سریال 4800 را تعیین می کند اما NEO-6M به طور پیش فرض 9600 baud است. شما می توانید برنامه "u-center" رایگان را برای تغییر نرخ baud اجرا کنید ، اما من آن را به طور پیش فرض در کارخانه گذاشتم. همچنین یک برنامه کاربردی رایگان به نام GPSInfo (ارائه شده توسط Globalsat) وجود دارد که برای مشاهده اطلاعات GPS در رایانه بسیار مفید است. می توانید دستگاه GPS را به یک کابل USB استاندارد به TTL وصل کنید تا آن را بررسی کرده یا با استفاده از رایانه تنظیم کنید. به خاطر داشته باشید که تراشه GPS روی ماژول در واقع 3.3 ولت (از طریق تنظیم کننده ولتاژ داخلی) کار می کند ، بنابراین اگر می خواهید به پورت RXD آن متصل شوید ، باید سطح را از 5 ولت به پایین تغییر دهید. پورت TXD می تواند مستقیماً به آردوینو یا رایانه متصل شود.

مرحله 6: مناطق زمانی

تا زمانی که فقط می خواهید UTC (زمان جهانی هماهنگ) را نمایش دهید ، نمایش زمان GPS کار آسانی است. جملات NMEA از نویسه های ASCII تشکیل شده اند که می توانند مستقیماً به LCD منتقل شوند. بخش زمان در قالب HHMMSS. FF (ساعت ، دقیقه ، ثانیه و ثانیه کسری) است. برای ساعت ما قسمت کسری مفید نیست ، بنابراین تنها چیزی که باید با آن برخورد کنیم شش کاراکتر است. مشکل این است که در صورت تمایل باید به زمان محلی خود و قالب 12 ساعته AM/PM تبدیل کنید. اما گاهی اوقات مشکلات باعث جذابیت زندگی می شوند ، بنابراین این بخش از نرم افزار واقعاً در مورد چیست.

در مورد مناطق زمانی ، ممکن است فکر کنید که 24 مورد از آنها وجود دارد که 12 تای آنها در شرق محل UTC (مناطق+) و 12 تای آنها در غرب مکان UTC (- مناطق) وجود دارد. در واقع ، چند ساعت عجیب و غریب وجود دارد که ساعات کسری هستند و یک زن و شوهر که از "حد" 12 ساعت فراتر می روند. اگر به طور اتفاقی در یکی از این مناطق زندگی می کنید از شما عذرخواهی می کنم زیرا نرم افزار من فقط 24 منطقه کامل 24 ساعته را شامل می شود. همچنین برخی از ما از بخشی از سال از ساعات روز استفاده می کنیم ، اما این به طور خودکار در نرم افزار لحاظ نمی شود. در صورت تغییر هفته های تغییر سال ، نیاز به یک جدول جستجو از تاریخ های آینده ، پیچیدگی بیشتر نرم افزار و نیاز به به روز رسانی نرم افزار است. در عوض ، سخت افزار از یک سوئیچ تماس لحظه ای برای تنظیم آسان منطقه زمانی (UTC offset) استفاده می کند.

مرحله 7: شماتیک

شماتیک
شماتیک

شماتیک بالا نشان داده شده است و شامل اتصالات رابط LCD 4 بیتی 1602 است. داده های سریال از گیرنده RF در سطوح منطقی دیجیتال است ، بنابراین مستقیماً به یکی از پین های ورودی داده Arduino متصل می شود. پین در نرم افزار پیکربندی شده است تا عملکرد وقفه در تغییر را انجام دهد تا بتوانیم عرض پالس را اندازه گیری کنیم. خروجی GPS TXD مستقیماً به ورودی Arduino RX متصل است.

از دو کلید استفاده می شود. همانطور که قبلاً ذکر شد ، یک سوئیچ تماس لحظه ای امکان تنظیم آفست UTC را فراهم می کند. سوئیچ را می توان در هر زمان فشار داد تا وارد حالت تنظیم شود. در ابتدا ، صفحه نمایش یک جابجایی UTC نامعتبر "+77" را نشان می دهد. برای اطلاع از دستورالعمل های تنظیم آفست UTC به بخش "Clock Software" مراجعه کنید.

سوئیچ دوم یک سوئیچ روشن/خاموش ساده است. در موقعیت "خاموش" زمان در قالب 12 ساعته (AM/PM) و در وضعیت "روشن" زمان در قالب 24 ساعته نمایش داده می شود. این سوئیچ را می توان در هر زمان برای تغییر بین فرمت ها تغییر داد.

اگر فقط عملکرد ساعت مورد نظر است ، ماژول گیرنده RF نیازی به اتصال ندارد. اگر فقط عملکرد آب و هوا مورد نظر است ، GPS و دو سوئیچ نیازی به اتصال ندارند.

مرحله 8: نرم افزار LCD

من تمایل دارم از یکی از دو نوع رابط LCD استفاده کنم. یکی رابط استاندارد 4 بیتی و دیگری رابط 3 سیمه که از یک شیفت رجیستر استفاده می کند. هنگامی که با میکروکنترلرهای کوچک PIC کار می کردم که دارای تعداد محدودی پین ورودی/خروجی بودند ، آن رابط را طراحی کردم. من برای این پروژه از رابط 4 بیتی استفاده کردم اما به جای استفاده از کتابخانه LCD عمومی آردوینو ، فایل LCD خود را دارم. این میزان مصرف حافظه و پیچیدگی کد را کاهش می دهد و همچنین به من امکان می دهد کد پروژه های خاص مانند این را تغییر دهم.

مرحله 9: نرم افزار ساعت

واحد GPS جمله های استاندارد NMEA-0183 را که رشته های ASCII هستند و حاوی اطلاعات گوناگونی است ، خروجی می دهد. برای این برنامه ، من GGA را برای دریافت اطلاعات زمان انتخاب کردم ، زیرا این جمله ای است که من برای پروژه GPS قبلی استفاده کردم. زمینه های اطلاعاتی در جملات NMEA با کاما از هم جدا می شوند ، بنابراین ، پس از تشخیص عنوان جمله GGA ، نرم افزار معمولاً کاما را شمارش می کند و روال مناسب را برای هر قسمت مورد نظر از اطلاعات GPS فراخوانی می کند. در اینجا فقط اطلاعات زمانی مورد نیاز است و پس از اولین ویرگول در میدان است ، بنابراین نیازی به شمارش نیست.

شش رقم زمانی (HHMMSS) بافر شده و پس از دریافت همه آنها پردازش می شود. GPS ممکن است در اوایل برخی از پیام های ناقص را ارسال کند ، بنابراین روال بافر کردن تأیید می کند که هر کاراکتر یک مقدار عددی ASCII است. اگر یک شخصیت بد دریافت شود ، پیام حذف می شود. این نیز ممکن است در موارد نادر در حین کار عادی اتفاق بیفتد ، به ویژه اگر ارتباط پورت سریال کمی کاهش یابد. من فقط یک بار این را دیده ام و تمام آن این است که زمان برای یک ثانیه متوقف شد و سپس به جای یک ثانیه دو ثانیه پرید.

اگر نرم افزار فقط برای نمایش زمان تنظیم شده باشد ، در خط اول LCD زمان محلی و خط دوم UTC نمایش داده می شود. برای UTC ، نرم افزار فقط کاراکترهای ASCII را مستقیماً به روال صفحه نمایش ارسال می کند ، در حالی که دو نقطه () به درستی وارد شده اند.

برای تبدیل UTC به زمان محلی ، باید offset (منطقه زمانی) UTC اعمال شود. از آنجا که زمان UTC از GPS در قالب ASCII است ، نرم افزار کاراکترهای ساعت ASCII را به اعشاری تبدیل می کند و سپس UTC offset را اضافه می کند. افست 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 افزایش می دهد. پس از رسیدن به منطقه زمانی مورد نظر ، کلید را بیشتر از 1 ثانیه فشار داده و نگه دارید و سپس آن را رها کنید. سپس نرم افزار مقدار UTC را در EEPROM ذخیره کرده و به طور مختصر "OFFSET SAVED" را نمایش می دهد. اگر هنگام ورود اشتباه کردید ، فقط خارج شوید و سپس دوباره کلید را فشار دهید تا دوباره تنظیم شود.

NEO-6M برای خروجی زمان نیازی به تنظیم موقعیت خوب ندارد بنابراین باید به محض دریافت یک ماهواره پیام ها را ارسال کند. تا آن زمان صفحه نمایش "NO DATA" خوانده می شود.

مرحله 10: نرم افزار آب و هوا

میکروکنترلر PIC این قابلیت را دارد که یک تایمر را با استفاده از یک پالس خارجی روشن/خاموش کند. همان پالس ورودی همچنین می تواند به عنوان یک وقفه خارجی برای علامت خواندن مدت زمان پالس مورد استفاده قرار گیرد. آردوینو آن قابلیت دقیق را ندارد بنابراین از تابع وقفه در تغییر استفاده کردم. در یک لبه پیام نبض RF ، زمان میکرو ثانیه فعلی توسط کنترل کننده وقفه ذخیره می شود. در لبه مقابل زمان سپری شده برای تعیین عرض نبض محاسبه می شود.

این نرم افزار دارای یک تعریف "DEBUG" است که امکان نمایش قالب داده خام پیام های دریافت شده را فراهم می کند. همچنین یک تعریف برای تعیین پین ورودی آردوینو برای جریان سریال از گیرنده RF وجود دارد. این نرم افزار برای محاسبه تنظیمات ثبت وقفه در تغییر مناسب بر اساس این تعریف راه اندازی شده است. محاسبه فقط برای پین های دیجیتالی آردوینو کار می کند. می توان به جای آن از یک پین آنالوگ استفاده کرد ، اما نیاز به کدگذاری سخت مقادیر ثبات دارد.

کنترل کننده وقفه تعیین می کند که آیا تعداد ضبط شده به اندازه کافی طولانی باشد تا یک پالس شروع باشد. همانطور که قبلاً ذکر شد ، فاصله بین چندین پیام 2 میلی ثانیه است ، بنابراین این همان چیزی است که نرم افزار به دنبال آن است. به دلیل تمام ترافیک 433 مگاهرتز ، غربالگری اولیه در نرم افزار اطمینان حاصل می کند که زمان اندازه گیری شده حداقل 1.8 میلی متر است اما از 2.4 میلی ثانیه بیشتر نیست. پس از تشخیص شروع ، نرم افزار به دنبال بیت های همگام سازی (600us) می شود و شمارش می کند تا مطمئن شود که چهار مورد از آنها دریافت شده است. پس از گذراندن این آزمایش ها ، نرم افزار زمان بیت مناسب 200us و 400us را جستجو می کند.

بیت های دریافتی به صورت بایت در می آیند و هر بایت ذخیره می شود. پس از دریافت هفت بایت ، پیام چک قبل از اجازه پردازش بیشتر تأیید می شود. اگر قرار است بایت های خام خروجی (حالت اشکال زدایی) داشته باشند ، بایت ها به کاراکترهای ASCII تبدیل شده و به LCD ارسال می شوند. اگر رطوبت و خروجی دما مطلوب باشد ، تبدیل مناسب انجام می شود.

دو بایت داده های Centigrade در پیام RF با هم ترکیب شده و یک مقدار 11 بیتی را تشکیل می دهند. قسمت پایینی یک بیت به چپ منتقل می شود تا بیت برابری حذف شود و با بیت های قسمت بالا تراز شود. این دو بایت به یک متغیر کلمه 16 بیتی تبدیل می شود و سپس همه چیز به درستی یک بیت تغییر می کند تا تراز بیت نهایی به دست آید. کلمه متغیر سپس برای محاسبات ریاضی به متغیر نقطه شناور تبدیل می شود.

یک مزیت بزرگ استفاده از C ++ در زبان آردوینو در مقابل زبان اسمبلی در PIC این است که محاسبات ریاضی را ساده می کند. همانطور که قبلاً ذکر شد ، تبدیل درجه سانتیگراد (C / 10) -100 است. نتیجه به یک رشته تبدیل شده و برای نمایش به LCD ارسال می شود. محاسبه فارنهایت (C * 1.8) + 32 است. نتیجه دوباره به یک رشته تبدیل شده و برای نمایش به LCD ارسال می شود. در هر دو مورد ، تبدیل رشته شامل علامت منفی (در صورت مناسب) و نقطه اعشار می شود. یک بررسی برای نقطه اعشار انجام می شود تا اطمینان حاصل شود که فقط یک کاراکتر پس از اعشار به صفحه نمایش ارسال می شود. این بررسی مورد نیاز است زیرا طول رشته می تواند بین 3 تا 5 نویسه باشد.

من دو سنسور AcuRite دارم ، بنابراین یک چک در نرم افزار اضافه کردم تا مطمئن شوم در صورتی که نرم افزار فقط عملکرد آب و هوا را انجام دهد ، داده های یکی از داده های دیگری را بازنویسی نمی کند. اولین سنسور دریافت شده پس از افزایش قدرت در خط 1 و دیگری در خط 2 نمایش داده می شود. با استفاده از حالت اشکال زدایی ، می توانم ببینم که شناسه هر سنسور چیست ، بنابراین اگر فقط بتوانم یک کد ساده را بررسی کنم می خواست داده های یکی از آنها را پردازش کند.

این نرم افزار وضعیت باتری (byte3) را کنترل می کند و در صورت نشان دادن کم بودن باتری پیامی را نمایش می دهد. این پیام تمام داده های دیگر آن سنسور را رونویسی می کند.

مرحله 11: نمایش می دهد

نمایش می دهد
نمایش می دهد
نمایش می دهد
نمایش می دهد
نمایش می دهد
نمایش می دهد

در اینجا چند مثال برای عملکردهای مختلف آورده شده است. من چند دستورالعمل دیگر دارم ، اما اکثر پروژه های میکروکنترلر PIC را می توان در وب سایت من به آدرس www.boomerrules.wordpress.com یافت.

توصیه شده: