Mundarija:

Arduino 3-in-1da vaqt va ob-havo ko'rsatkichi: 11 qadam
Arduino 3-in-1da vaqt va ob-havo ko'rsatkichi: 11 qadam

Video: Arduino 3-in-1da vaqt va ob-havo ko'rsatkichi: 11 qadam

Video: Arduino 3-in-1da vaqt va ob-havo ko'rsatkichi: 11 qadam
Video: Display input voltage as bargraph on LCD using Arduino and potentiometer 2024, Noyabr
Anonim

By Boomer48Follow More muallif tomonidan:

ATtiny85 dan foydalanish
ATtiny85 dan foydalanish
ATtiny85 -dan foydalanish
ATtiny85 -dan foydalanish
Pi bilan ishlaydigan pirogni ajratish va ko'pburchakni kesish vositasi
Pi bilan ishlaydigan pirogni ajratish va ko'pburchakni kesish vositasi
Pi bilan ishlaydigan pirogni ajratish va ko'pburchakni kesish vositasi
Pi bilan ishlaydigan pirogni ajratish va ko'pburchakni kesish vositasi
Qo'lda audio kuchaytirgich uchun raqamli boshqaruv
Qo'lda audio kuchaytirgich uchun raqamli boshqaruv
Qo'lda audio kuchaytirgich uchun raqamli boshqaruv
Qo'lda audio kuchaytirgich uchun raqamli boshqaruv

Menga PIC mikrokontrolrlari yoqadi va men montaj tilida dasturlashni yaxshi ko'raman. Aslida, so'nggi ikki yil ichida men o'z veb -saytimda 40 ga yaqin loyihalarni shu kombinatsiya asosida joylashtirdim. Yaqinda men AQShning eng sevimli sotuvchilardan bir qismiga buyurtma berardim va men dasturiy kabelli Arduino Nano -ni ko'rdim, atigi ATMEGA328 protsessor chipidan atigi 1,20 dollar. Shunday qilib, men ulardan ikkitasini sotib oldim. Keyin men Arduino IDE -ni yukladim va "C ++" dasturlash xotirasini o'chirib tashladim.

Bu loyiha vaqtni aniqlash uchun GPS-dan foydalanadigan va ob-havo xabarlarini oddiy AcuRite sensoridan dekodlaydigan chastotali qabul qilgichdan foydalanadigan soat majmuasidir. Natijada vaqt va haroratni kichik o'lchovli ko'rsatiladi. GPS -soat va ob -havo tartiblari alohida fayllar sifatida o'rnatiladi, shuning uchun asosiy ish rejimiga o'tish va uni faqat soat funktsiyasini yoki ob -havo funksiyasini bajarish uchun sozlash oson. Agar siz faqat bitta funktsiyani xohlasangiz, asosiy tartibning yuqori qismidagi tegishli "#define" belgisini qoldiring.

Agar ikkala funktsiya ham ishlatilsa, LCD displeyining yuqori chizig'ida mahalliy vaqt ko'rsatiladi va pastki chiziqda Selsiy va Farengeytdagi namlik va harorat ko'rsatiladi. Agar faqat soat funktsiyasi ishlatilsa, yuqori satrda mahalliy vaqt ko'rsatiladi va pastki qatorda UTC ko'rsatiladi. Agar faqat ob -havo funktsiyasi ishlatilsa, yuqori chiziq birinchi qabul qilingan sensorni, pastki chiziq esa boshqa qabul qilingan sensorni ko'rsatadi. Men bu imkoniyatni qo'shdim, chunki menda ikkita ob -havo sensori bor.

1 -qadam: ob -havo sensori

Ob -havo sensori
Ob -havo sensori
Ob -havo sensori
Ob -havo sensori
Ob -havo sensori
Ob -havo sensori

Bu erda ishlatiladigan AcuRite ob -havo sensori har 16 soniyada harorat va namlik ma'lumotlarini yuboradi. Orqa tomonda u 000592TXR model raqamini ko'rsatadi, lekin u odatda 06002M modeli sifatida reklama qilinadi. Bu sensorni har xil ob -havo stantsiyalari modellari ishlatadi, shuning uchun ularni topish oson va men ularni eBay -dan 20 dollarga sotib oldim. AcuRite ba'zi ob -havo stantsiyalari uchun xuddi shunday ko'rinadigan sensorlarni sotadi, lekin ular bir xil aloqa protokoliga rioya qilishlari mumkin yoki bo'lmasligi mumkin. Internetda 00606 harorat sensori xuddi shu xabar formatidan foydalanadi, lekin namlik bayti noto'g'ri.

Yuqorida ko'rsatilgan birinchi to'lqin shaklida ko'rinib turibdiki, ob -havo xabarlari ketma -ket xabarlar orasidagi 2ms bo'shliq bilan uzatiladi. Yuqorida ko'rsatilgan ikkinchi to'lqin shakli bitning davomiyligi va naqshini ko'rish uchun bitta xabarning bir qismini kengaytiradi. Taxminan 600us balandlikda, keyin 600us pastda to'rtta sinxronlash bitlari mavjud. Ma'lumot bitlari 400us balandligi, keyin 200us past (1) yoki yuqori 200us, keyin 400us past (0) bilan ifodalanadi.

Xabar formati 7 bayt ma'lumotdan iborat. Birinchi ikkita bayt sensori identifikatori bo'lib, ular o'zgarmaydi (ya'ni: aylanma kod ishlatilmaydi). Oxirgi bayt - bu dastlabki oltita baytning oddiy qo'shimchalar yig'indisi. Uchinchi bayt - batareya quvvati ko'rsatkichi va agar batareya yaxshi bo'lsa, har doim 44 olti burchakli bo'lishi kerak. To'rtinchi bayt-namlik va bu 0 dan 99 gacha bo'lgan o'lchovsiz o'lchovdir. Shuni yodda tutish kerakki, 4, 5 va 6 baytlarning eng muhim biti paritet bit bo'lib, o'lchovning bir qismi emas. qiymatlar. 5 va 6-baytlar-o'lchovli harorat (Selsiy), 5-baytning pastki 4-biti 6-baytning pastki 7-bitlari bilan birlashtirilib, 11-bitli qiymatni hosil qiladi. Harorat har doim musbat son sifatida ifodalanadi va faqat o'lchov qo'llanilganda manfiy bo'ladi. Masshtab (C / 10) - 100. 10 ga bo'linish talab qilinadi, chunki haroratning o'lchamlari o'ndan bir daraja. Chiqarish talab qilinadi, chunki uzatilgan qiymatni ijobiy ushlab turish uchun sensor tomonidan 100 qo'shiladi.

2 -qadam: RF qabul qiluvchisi

RF qabul qiluvchisi
RF qabul qiluvchisi
RF qabul qiluvchisi
RF qabul qiluvchisi

Men ushbu loyihada ishlatadigan RF moduli RXB6. Bu juda istalmagan super regenerativ qabul qilgichlardan farqli o'laroq, super heterodinli qabul qilgich. Agar siz u erda arzon RF modullariga qarasangiz, tez -tez uzatuvchi va qabul qilgich platalari bir -biriga bog'langan bo'ladi. Qabul qiluvchilarning ko'pchiligi super regenerativ turga kiradi, shuning uchun ular super heterodinli qabul qiluvchilarga qaraganda ancha past ishlash ko'rsatkichlariga (shu jumladan diapazonga) ega. Bizga faqat loyiha uchun qabul qiluvchi modul kerak, chunki biz ob -havo sensori uzatgichidan signal olamiz.

3 -qadam: RF antennalari

RF antennalari
RF antennalari

RXB6 antennaga ega emas. Siz spirallarni arzon narxda sotib olishingiz mumkin, lekin o'z qo'lingiz bilan antenna yasash ham oson. Darhaqiqat, agar siz juda chiroyli bo'lishni xohlamasangiz, modulning antenna pimiga non taxtali o'tish kabeli tushishi mumkin. Ideal holda, to'g'ri simli antenna 1/4 to'lqin uzunligida bo'ladi, u taxminan 6,8 dyuymgacha ishlaydi. Men dastlab o'tish simli ishni qildim va elektronika ustaxonasi mening podvalimda bo'lsa ham, tashqi sensorni olishda hech qanday muammo yo'q edi.

Yana bir variant - spiral antennani o'zingiz qilishingiz. Internetda buning uchun turli xil rejalar mavjud, lekin yuqoridagi rasmda ko'rsatilganini men qilganman. Men Ethernet kabelining bir bo'lagidan qattiq yadroli simni ishlatdim va uni 5/32 dyuymli matkap uchining silliq qobig'iga o'rab qo'ydim. Izolyatsiyani RF taxtasiga lehimlanadigan uchidan tashqari qoldiring. Sizga 20 burilish kerak bo'ladi. Siz 7/32 dyuymli matkapni ishlatishingiz va 17 burilishni o'rashingiz mumkin. Ularning har biri, ehtimol, sizning sensorlaringiz uchun bo'lishi mumkin bo'lgan diapazon uchun juda yaxshi ishlaydi. Haqiqiy kalit - boshlash uchun yaxshi RF qabul qilgichi. AcuRite sensorlari ham juda kuchli uzatgichlarga ega.

4 -qadam: RF aloqa protokoli

Ma'lumotni uzatish uchun bir necha xil modulyatsiya usullari mavjud, lekin bu sensorlar OOK (o'chirish-o'chirish) yoki ASK (amplituda-shift-keying) usullaridan eng oddiyidan foydalanadi. Biz bu misolda 0/1 ma'lumotlar bitlari bilan ishlayotganimiz uchun, amplitudasi to'la yoki to'la. Shunday qilib, bizning maqsadimiz uchun OOK va ASK bir xil, chunki OOK RF tashuvchisi to'la yoki to'la. Xabar formati, odatda, uzatuvchi qurilmani ishlab chiqaruvchisi tomonidan belgilanadi va ular deyarli har qanday uzatish tezligidan, har qanday bit formatlash uslubidan va har qanday xabar uzunligidan foydalanishi mumkin. 433 MGts diapazoni aqlli hisoblagichlar va hk kabi uzatmalar bilan to'lib toshgan, shuning uchun dasturiy ta'minot biz foydalanmoqchi bo'lgan xabarlar formatini filtrlash uchun sozlanishi kerak.

5 -qadam: Vaqt ma'lumotlari

Vaqt ma'lumotlari
Vaqt ma'lumotlari

Quvvat uzilganidan keyin avtomatik ravishda qayta ishga tushadigan aniq ma'lumotlarni olish uchun men arzon GPS qurilmasidan foydalanaman. Menda standart NMEA jumlalarini chiqaradigan bir nechta GPS birliklari bor (displeysiz), lekin menda eng kichik va eng arzonlari NEO-6M. NEO-6M moduli Arduino-ga oson ulanadi, chunki u TTL darajasidagi ketma-ket portdan foydalanadi. Faqatgina haqiqiy farq shundaki, NMEA standarti ketma-ket uzatish tezligini 4800 ni belgilaydi, lekin NEO-6M standarti 9600 bod. Baud tezligini o'zgartirish uchun siz "u-center" bepul dasturini ishga tushirishingiz mumkin, lekin men uni zavod parametrlarida qoldirdim. Kompyuterda GPS ma'lumotlarini ko'rish uchun juda qulay bo'lgan GPSInfo (Globalsat tomonidan chiqarilgan) nomli bepul yordam dasturi ham mavjud. Siz uni tekshirish yoki kompyuter yordamida sozlash uchun GPS qurilmasini standart USB -TTL kabeliga ulashingiz mumkin. Shuni yodda tutingki, moduldagi GPS chipi aslida 3,3 voltsda ishlaydi (bort kuchlanish regulyatori orqali), shuning uchun agar siz uning RXD portiga ulanishni xohlasangiz, darajani 5 voltdan pastga siljiting. TXD porti to'g'ridan -to'g'ri Arduino yoki shaxsiy kompyuterga ulanishi mumkin.

6 -qadam: Vaqt zonalari

GPS vaqtini ko'rsatish - UTC (Universal Time Coordinated) ko'rsatishni xohlasangiz, buni qilish oson. NMEA jumlalari ASCII belgilaridan iborat bo'lib, ularni to'g'ridan -to'g'ri LCD displeyga chiqarish mumkin. Vaqt qismi HHMMSS. FF formatida (soat, daqiqa, soniya va kasr soniya). Bizning soatimiz uchun kasr qismi foydali emas, shuning uchun biz faqat oltita belgidan foydalanishimiz kerak. Muammo shundaki, agar siz xohlasangiz, mahalliy vaqtingizga va 12 soatlik AM/PM formatiga o'tishingiz kerak. Ammo ba'zida muammolar hayotni qiziqarli qiladigan narsadir, shuning uchun dasturiy ta'minotning bu qismi haqiqatan ham shunday.

Vaqt zonalariga kelsak, siz ulardan 24 tasi bo'lishi mumkin, deb o'ylashingiz mumkin, ularning 12 tasi UTC joyining sharqida (+ zonalari) va 12 tasi UTC joyidan g'arbda (- zonalar). Darhaqiqat, bir necha g'ayrioddiylar bor, ular kasr soatlari va er -xotinlar 12 soatlik "chegaradan" oshib ketadi. Agar siz o'sha hududlardan birida yashasangiz, kechirim so'rayman, chunki mening dasturiy ta'minotimiz faqat 24 soatlik zonalarga to'g'ri keladi. Yilning bir qismini yozgi vaqtdan foydalanadiganlar bor, lekin bu avtomatik ravishda dasturda hisobga olinmaydi. Buning uchun kelgusi sanalarni qidirish jadvali, dasturiy ta'minotning qo'shimcha murakkabligi va agar o'tish davri yillari o'zgargan bo'lsa, dasturiy ta'minotni yangilash zarurati bo'ladi. Buning o'rniga, apparat vaqt zonasini (UTC ofset) oson sozlash uchun ruxsat berish uchun bir lahzali aloqa kalitidan foydalanadi.

7 -qadam: sxematik

Sxematik
Sxematik

Sxema yuqorida ko'rsatilgan va 4 bitli 1602 LCD interfeysli ulanishlarni o'z ichiga oladi. RF qabul qiluvchidan ketma -ket ma'lumotlar raqamli mantiq darajasida, shuning uchun u to'g'ridan -to'g'ri Arduino ma'lumot kiritish pimlaridan biriga ulanadi. Pin dasturiy ta'minotda pulsning kengligini o'lchashimiz uchun o'zgarishni to'xtatish funktsiyasini bajarish uchun tuzilgan. GPS TXD chiqishi to'g'ridan -to'g'ri Arduino RX kirishiga ulangan.

Ikkita kalit ishlatiladi. Yuqorida aytib o'tilganidek, bir lahzali kontaktli kalit UTC ofsetini sozlash imkonini beradi. O'rnatilgan rejimga o'tish uchun kalitni istalgan vaqtda bosish mumkin. Dastlab, displeyda "+77" noto'g'ri UTC ofset ko'rsatiladi. UTC ofsetini sozlash bo'yicha ko'rsatmalar uchun "Soat dasturlari" bo'limiga qarang.

Ikkinchi kalit - bu oddiy yoqish/o'chirish tugmasi. "O'chirish" holatida vaqt 12 soatlik formatda (AM/PM) ko'rsatiladi va "on" holatida vaqt 24 soatlik formatda ko'rsatiladi. Formatlar o'rtasida almashish uchun bu kalitni xohlagan vaqtda o'zgartirish mumkin.

Agar faqat soat funktsiyasi kerak bo'lsa, u holda RF qabul qilish modulini ulash shart emas. Agar faqat ob -havo funktsiyasi kerak bo'lsa, GPS va ikkita kalitni ulash shart emas.

8 -qadam: LCD dasturi

Men LCD interfeyslarning ikki turidan birini ishlatishga moyilman. Ulardan biri standart 4-bitli interfeys, ikkinchisi-3-simli interfeys, bu registrni ishlatadi. Men cheklangan miqdordagi kirish -chiqish pimlari bo'lgan kichik PIC mikrokontrolderlari bilan ishlayotganimda bu interfeysni ishlab chiqdim. Men ushbu loyiha uchun 4-bitli interfeysdan foydalandim, lekin umumiy Arduino LCD kutubxonasidan foydalanish o'rniga o'z LCD-fayllarim bor. Bu xotira sarfini va kodning murakkabligini kamaytiradi, shuningdek, menga shunga o'xshash loyihalar uchun kodni o'zgartirishga imkon beradi.

9 -qadam: dasturiy ta'minot

GPS birligi har xil ma'lumotlarni o'z ichiga olgan ASCII qatorlari bo'lgan NMEA-0183 standart jumlalarini chiqaradi. Ushbu dastur uchun men vaqt ma'lumotlarini olish uchun GGA jumlasini tanladim, chunki bu oldingi GPS loyihasi uchun ishlatgan jumla. NMEA jumlalaridagi axborot maydonlari vergul bilan ajratilgan, shuning uchun GGA jumlasi sarlavhasi aniqlangandan so'ng, dasturiy ta'minot odatda vergulni sanaydi va har bir kerakli GPS ma'lumoti maydoniga mos tartibni chaqiradi. Bu erda faqat vaqt haqida ma'lumot kerak va bu birinchi verguldan keyin maydonda, shuning uchun hisoblashning hojati yo'q.

Olti vaqtli raqamlar (HHMMSS) buferlanadi va ularning barchasi qabul qilingandan so'ng qayta ishlanadi. GPS ba'zi to'liq bo'lmagan xabarlarni erta chiqarishi mumkin, shuning uchun buferlash tartibi har bir belgi ASCII raqamli qiymat ekanligini tasdiqlaydi. Agar yomon belgi olingan bo'lsa, xabar o'chiriladi. Bu, kamdan -kam hollarda, normal ish paytida, ayniqsa, ketma -ket port aloqasi biroz pasayganda sodir bo'lishi mumkin. Men buni faqat bir marta ko'rganman va sodir bo'lgan narsa shundaki, vaqt bir soniya to'xtab, keyin bir soniya o'rniga ikki soniya sakrab chiqdi.

Agar dasturiy ta'minot faqat vaqtni ko'rsatish uchun tuzilgan bo'lsa, LCD displeyining birinchi qatorida mahalliy vaqt, ikkinchi qatorda esa UTC ko'rsatiladi. UTC uchun dasturiy ta'minot ASCII belgilarini to'g'ridan -to'g'ri ko'rsatish tartibiga yuboradi, to'g'ri nuqta qo'yilgan (:).

UTCni mahalliy vaqtga aylantirish uchun UTC ofsetini (vaqt zonasini) qo'llash kerak. GPS -dan UTC vaqti ASCII formatida bo'lganligi sababli, dastur ASCII soat belgilarini o'nli kasrlarga o'zgartiradi va keyin UTC ofsetini qo'shadi. UTC ofset belgisi BIT musbat BCD qiymati sifatida saqlanadi, shuning uchun u avval tamsayı qiymatiga aylantiriladi va agar belgi biti o'rnatilgan bo'lsa, inkor qilinadi. Mahalliy vaqt soatining qiymatini hisoblagandan so'ng, uni BCD ga aylantirish uchun qidiruv jadvali ishlatiladi, so'ngra BCD ko'rsatish uchun yana ASCII ga o'zgartiriladi. Qidiruv jadvali 24 soatlik UTC formatini va +/- 12 vaqt zonasini boshqarishi kerak. Buni amalga oshirish uchun, 0000 dan 2300 gacha bo'lgan UTC vaqtlari jadvaldagi o'rtadagi 24 ta yozuvni egallaydi va 12 ta yozuv oldin va 12 ta vaqt zonalarini hisobga oladi. Bir jadval 12 soatlik formatda, shuning uchun men displeyning AM/PM qismini qidirish jadvalini qo'shdim. Boshqa jadval 24 soatlik formatda. Yuqorida aytib o'tilganidek, yoqish/o'chirish tugmasi 12 soatlik yoki 24 soatlik formatni tanlash imkonini beradi.

Vaqt zonasi ishga tushirish vaqtida EEPROMdan olinadi va qisqacha ko'rsatiladi. Agar u hech bo'lmaganda bir marta o'rnatilmagan bo'lsa, sozlash tartibi chaqiriladi. O'rnatish tartibini istalgan vaqtda lahzali aloqa tugmachasini bosib chaqirish mumkin. O'rnatish tartibi displeyni "UTC OFFSET +77" holatiga o'tkazadi. Kalitni qisqa bosish qiymatni "-00" ga o'zgartiradi. Agar musbat vaqt zonasi kerak bo'lsa, boshqa qisqa bosish qiymatni "+00" ga o'zgartiradi. Uzoq bosish (> 1 soniya) sozlash rejimini keyingi bosqichga o'tkazadi. Bu vaqtda har bir qisqa bosish vaqt qiymatini maksimal 12 ga oshiradi. Istalgan vaqt zonasiga etib kelganidan so'ng, kalitni 1 soniyadan ko'proq ushlab turing va keyin qo'yib yuboring. Dasturiy ta'minot UTC qiymatini EEPROM -da saqlaydi va "OFFSET SAVED" qisqacha ko'rsatiladi. Agar kirish paytida xato qilsangiz, uni o'chirish uchun tugmani qayta bosing.

NEO-6M vaqtni chiqarish uchun yaxshi pozitsiyani tuzatishni talab qilmaydi, shuning uchun u bitta sun'iy yo'ldoshga kirishi bilan xabarlarni chiqarishi kerak. Shu vaqtgacha displeyda "DATA YO'Q" yozuvi paydo bo'ladi.

10 -qadam: ob -havo dasturlari

PIC mikrokontroller tashqi impuls yordamida taymerni yoqish/o'chirish imkoniyatiga ega. Xuddi shu kirish impulsini impulsning davomiyligi to'g'risida o'qish uchun tashqi uzilish sifatida ham ishlatish mumkin. Arduino-da aniq imkoniyat yo'q, shuning uchun men o'zgarishni to'xtatish funktsiyasidan foydalanardim. Chastotali signal pulsining bir chekkasida joriy mikrosaniyali vaqt uzilish ishlovchisi tomonidan saqlanadi. Qarama -qarshi tomonda puls kengligini aniqlash uchun o'tgan vaqt hisoblab chiqiladi.

Dasturda "DEBUG" ta'rifi mavjud bo'lib, u qabul qilingan xabarlarning xom formatini ko'rsatishga imkon beradi. RF qabul qiluvchidan ketma -ket oqim uchun Arduino kirish pinini belgilash uchun ta'rif ham mavjud. Dastur, bu ta'rifga asoslanib, registrning tegishli uzilishlar parametrlarini hisoblash uchun o'rnatiladi. Hisoblash faqat Arduino raqamli pinlari uchun ishlaydi. Buning o'rniga analog pin ishlatilishi mumkin, lekin bu registr qiymatlarini qattiq kodlashni talab qiladi.

To'xtatuvchi ishlovchisi qo'lga olingan sonning boshlang'ich zarba bo'lishi uchun etarlicha uzunligini aniqlaydi. Yuqorida aytib o'tilganidek, bir nechta xabarlar orasidagi bo'shliq 2 ms ni tashkil qiladi, shuning uchun dasturiy ta'minot qidiradi. 433 MGts tezlikdagi barcha trafik tufayli, dasturiy ta'minotning dastlabki tekshiruvi o'lchangan vaqtni kamida 1,8 m, lekin 2,4 ms dan oshmasligini ta'minlaydi. Ishga tushirish aniqlangandan so'ng, dastur sinxronlashtirish bitlarini (600us) qidiradi va ularning to'rttasi qabul qilinganligiga ishonch hosil qiladi. Ushbu testlar o'tgandan so'ng, dasturiy ta'minot 200us va 400usning mos vaqtlarini qidiradi.

Qabul qilingan bitlar baytlarga bo'linadi va har bir bayt saqlanadi. Etti bayt qabul qilingandan so'ng, xabarni qayta ishlashga ruxsat berishdan oldin tekshirish summasi tekshiriladi. Agar xom baytlar chiqsa (disk raskadrovka rejimi), baytlar ASCII belgilariga aylanadi va LCD displeyga yuboriladi. Agar namlik va harorat chiqishi talab qilinsa, u holda tegishli konvertatsiya qilinadi.

RF xabaridagi Centigrade ma'lumotlarining ikki bayti birlashtirib, 11 bitli qiymatni hosil qiladi. Paritet bitini yo'q qilish va uni yuqori qismidagi bitlar bilan hizalamoq uchun pastki qism bir oz chapga siljiydi. Ikki bayt 16-bitli so'z o'zgaruvchisiga aylantiriladi, so'ngra bit bitini moslashtirish uchun hamma narsa bir bit to'g'ri siljiydi. So'ngra matematik hisob -kitoblar uchun o'zgaruvchi so'z o'zgaruvchan nuqta o'zgaruvchisiga aylantiriladi.

Arduino -da C ++ ni PIC -dagi yig'ilish tilidan foydalanishning katta afzalligi shundaki, u matematik hisob -kitoblarni soddalashtiradi. Yuqorida aytib o'tilganidek, Centigrade konvertatsiyasi (C / 10) -100. Natijada satrga aylantiriladi va displey uchun LCDga yuboriladi. Farengeyt hisobi (C * 1.8) + 32. Natijada yana bir satrga aylantiriladi va displey uchun LCDga yuboriladi. Ikkala holatda ham String konvertatsiyasi salbiy belgini (agar kerak bo'lsa) va kasrni o'z ichiga oladi. O'nli kasrdan keyin faqat bitta belgining displeyga yuborilishini ta'minlash uchun tekshirish o'tkaziladi. Bu tekshirish kerak, chunki satr uzunligi 3 dan 5 belgigacha bo'lishi mumkin.

Menda ikkita AcuRite sensori bor, shuning uchun agar dastur faqat ob -havo funktsiyasini bajaradigan bo'lsa, ikkinchisining ma'lumotlari boshqasiga yozib qo'yilmasligi uchun dasturiy ta'minotga chek qo'shdim. Quvvat olgandan keyin olingan birinchi sensor 1 -qatorda, ikkinchisi 2 -qatorda ko'rsatiladi. Nosozliklarni tuzatish rejimidan foydalanib, men har bir sensor uchun identifikator nima ekanligini bilib olaman, shuning uchun kodni oddiy tekshirish mumkin. ulardan birining ma'lumotlarini qayta ishlashni xohladi.

Dastur batareya holatini (byte3) kuzatadi va agar batareya quvvati pastligini bildirsa, xabarni ko'rsatadi. Bu xabar sensor uchun boshqa barcha ma'lumotlarni qayta yozadi.

11 -qadam: Ko'rsatadi

Ko'rsatadi
Ko'rsatadi
Ko'rsatadi
Ko'rsatadi
Ko'rsatadi
Ko'rsatadi

Bu erda turli xil funktsiyalar uchun ba'zi misollar ko'rsatiladi. Menda yana bir nechta ko'rsatma bor, lekin mening PIC mikrokontroller loyihalarimning ko'pini veb -saytimda topishingiz mumkin: www.boomerrules.wordpress.com

Tavsiya: