Агуулгын хүснэгт:
- Алхам 1: Цаг агаарын мэдрэгч
- Алхам 2: RF хүлээн авагч
- Алхам 3: RF антен
- Алхам 4: RF холбооны протокол
- Алхам 5: Цагийн мэдээлэл
- Алхам 6: Цагийн бүсүүд
- Алхам 7: Схем
- Алхам 8: LCD програм хангамж
- Алхам 9: Цагны програм хангамж
- Алхам 10: Цаг агаарын програм хангамж
- Алхам 11: Дэлгэц
Видео: Arduino 3-in-1-ийг ашиглан цаг, цагийг харуулах: 11 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
By Boomer48Follow More by the müəllif:
Би PIC микроконтроллерт дуртай, ассемблер хэл дээр програмчлах дуртай. Үнэндээ өнгөрсөн хоёр жилийн хугацаанд би энэ хослол дээр үндэслэн вэбсайтдаа 40 орчим төсөл оруулсан. Саяхан би АНУ -ын дуртай үйлдвэрлэгчдээс зарим эд ангиудыг захиалж байхдаа ATMEGA328 процессорын чипээс ердөө 1.20 долларын үнэтэй програмчлалын кабель бүхий Arduino Nano -г олж харлаа. Тиймээс би хэдийг нь худалдаж авсан. Дараа нь би Arduino IDE -ийг татаж аваад 'C ++' програмчлалын тухай ой санамжаа арчив.
Энэхүү төсөл нь цаг хэмжихэд GPS ашигладаг цагны цуглуулга бөгөөд ердийн AcuRite мэдрэгчээс цаг агаарын мэдээг тайлдаг RF хүлээн авагч юм. Үр дүн нь цаг, температурыг бага хэмжээгээр харуулах явдал юм. GPS цаг, цаг агаарын горимыг тусад нь файл хэлбэрээр тохируулсан байдаг тул үндсэн горимд орж, зөвхөн цагийн функц эсвэл цаг агаарын функцийг хийхээр тохируулах боломжтой. Хэрэв та зөвхөн нэг функцийг хүсч байвал үндсэн горимын дээд хэсэгт тохирох "#тодорхойлох" -ыг тайлбарлахгүй.
Хэрэв хоёуланг нь хоёуланг нь ашигладаг бол LCD -ийн дээд мөрөнд орон нутгийн цаг, доод талын шугам нь Цельсийн болон Фаренгейтийн чийгшил, температурыг харуулдаг. Хэрэв зөвхөн цагийн функцийг ашигладаг бол дээд мөрөнд орон нутгийн цаг, доод мөрөнд UTC харагдана. Хэрэв зөвхөн цаг агаарын функцийг ашигладаг бол дээд мөр нь хүлээн авсан эхний мэдрэгчийг, доод мөр нь хүлээн авсан бусад мэдрэгчийг харуулна. Би цаг агаарын хоёр мэдрэгчтэй учраас энэ чадварыг нэмсэн.
Алхам 1: Цаг агаарын мэдрэгч
Энд ашигладаг AcuRite цаг уурын мэдрэгч нь температур, чийгшлийн мэдээллийг 16 секунд тутамд илгээдэг. Ар талд нь 000592TXR загварын дугаарыг харуулсан боловч ихэвчлэн 06002M загвар гэж сурталчилдаг. Энэхүү мэдрэгчийг цаг уурын станцын янз бүрийн загварт ашигладаг тул олоход хялбар байдаг тул би eBay дээрээс 20 доллараас бага үнээр авах боломжтой болсон. AcuRite нь цаг агаарын зарим станцуудад ижил төстэй харагдах мэдрэгчийг зардаг боловч тэд ижил харилцааны протоколыг дагаж мөрддөг байж магадгүй юм. Вэб дээр зөвхөн 00606 температур мэдрэгч нь ижил мессежийн форматыг ашигладаг боловч чийгийн байт буруу байна.
Дээр үзүүлсэн эхний долгионы хэлбэрээс харахад цаг агаарын мэдээг тасралтгүй илгээдэг бөгөөд дараалсан зурвасуудын хооронд 2 м зайтай байдаг. Дээр үзүүлсэн хоёр дахь долгионы хэлбэр нь битийн үргэлжлэх хугацаа, хэв маягийг харахын тулд нэг зурвасын хэсгийг өргөжүүлдэг. Ойролцоогоор 600us өндөр, дараа нь 600us бага байдаг дөрвөн синхрончлолын бит байдаг. Өгөгдлийн битийг 400us -ийн өндөр, дараа нь 200us -ийн доод (1) эсвэл 200 -ийн дараа 400 -ийн доод (0) -ээр илэрхийлнэ.
Зурвасын формат нь 7 байт өгөгдлөөс бүрдэнэ. Эхний хоёр байт нь мэдрэгчийн ID бөгөөд тэдгээр нь өөрчлөгддөггүй (өөрөөр хэлбэл өнхрөх кодыг ашигладаггүй). Сүүлчийн байт нь эхний зургаан байтын нэмэлт нэмэлт шалгалтын нийлбэр юм. Гурав дахь байт нь батерейны түвшний үзүүлэлт бөгөөд хэрэв зай сайн байвал үргэлж 44 hex байх ёстой. Дөрөв дэх байт нь чийгшил бөгөөд энэ нь 0-ээс 99 хүртэлх хэмжигдэхүүнгүй утга юм. 4, 5, 6-р байтын хамгийн чухал бит нь паритет бит бөгөөд хэмжилтийн нэг хэсэг биш гэдгийг санах нь зүйтэй. үнэт зүйлс. 5 ба 6-р байтууд нь масштабтай температур (Цельсийн) бөгөөд доод 5 битийн 5 битийн 6 битийн доод 7 битүүдтэй нийлж 11 битийн утгыг бий болгоно. Температурыг үргэлж эерэг тоогоор илэрхийлдэг бөгөөд масштабыг ашиглах үед зөвхөн сөрөг болдог. Хэмжээ нь (C / 10) - 100. Температурын нарийвчлал нь аравны нэг градусын хэмжээтэй байдаг тул 10 -т хуваах шаардлагатай. Дамжуулсан утгыг эерэг байлгахын тулд мэдрэгч 100 -г нэмсэн тул хасах шаардлагатай.
Алхам 2: RF хүлээн авагч
Миний энэ төсөлд ашигладаг RF модуль бол RXB6 юм. Энэ бол хүсээгүй супер нөхөн төлжих хүлээн авагчтай харьцуулахад супер гетеродин хүлээн авагч юм. Хэрэв та тэнд байгаа хямд RF модулийг харвал дамжуулагч ба хүлээн авагч самбарыг ихэвчлэн хамтад нь цуглуулдаг болохыг олж мэдэх болно. Эдгээр багц хүлээн авагчдын ихэнх нь супер нөхөн төлжих хэлбэртэй байдаг тул супер гетеродин хүлээн авагчаас хамаагүй бага гүйцэтгэлийн шинж чанартай байдаг. Энэ төслийн хувьд бидэнд зөвхөн хүлээн авах модуль хэрэгтэй, учир нь бид цаг агаарын мэдрэгчийн дамжуулагчаас дохио авах болно.
Алхам 3: RF антен
RXB6 нь антентай байдаггүй. Та мушгиа хэлбэртэй антенныг маш хямд худалдаж авах боломжтой боловч өөрөө антен хийх нь бас хялбар байдаг. Үнэн хэрэгтээ, хэрэв та хэтэрхий гоёмсог байхыг хүсэхгүй байгаа бол талхны холбогч кабелийг модулийн антенны зүү дээр шургуулж болно. Хамгийн тохиромжтой нь шулуун утастай антенн нь 1/4 долгионы урттай бөгөөд ойролцоогоор 6.8 инч хүртэл ажилладаг. Эхэндээ би холбогч утсыг хийж, электроникийн цех маань хонгилд байгаа ч гэсэн гаднах мэдрэгчээ авахад асуудал гараагүй.
Өөр нэг боломж бол өөрөө спираль антен хийх явдал юм. Вэб дээр энэ талаар олон янзын төлөвлөгөө байдаг, гэхдээ дээрх зураг дээр үзүүлсэн нь миний хийсэн зүйл юм. Би Ethernet кабелийн хаягдал хэсгээс хатуу цөмт утас ашиглаж, 5/32 инчийн өрөмдлөгийн битийн гуяны эргэн тойронд ороосон. RF хавтан дээр гагнах үзүүрээс бусад тусгаарлагчийг үлдээгээрэй. Танд 20 эргэлт хэрэгтэй болно. Та мөн 7/32 инчийн өрмийн бит ашиглаж, 17 эргэлтийг боож болно. Эдгээрийн аль нэг нь таны мэдрэгчийн хувьд тохирох мужид тохирсон байх болно. Жинхэнэ түлхүүр бол сайн RF хүлээн авагчтай байх явдал юм. AcuRite мэдрэгч нь бас нэлээд хүчтэй дамжуулагчтай.
Алхам 4: RF холбооны протокол
Мэдээлэл дамжуулах хэд хэдэн өөр модуляцийн техникүүд байдаг боловч эдгээр мэдрэгчүүд нь хамгийн энгийн OOK (унтраах-унтраах) эсвэл ASK (далайц-ээлжийн түлхүүр) -ийг ашигладаг. Энэ жишээн дээр бид 0/1 өгөгдлийн битүүдтэй харьцаж байгаа тул далайц нь бүрэн эсвэл бүрэн унтраалттай байна. Тиймээс, бидний зорилгын үүднээс OOK ба ASK нь ижил байдаг, учир нь OOK нь RF зөөгчийг дүүрсэн эсвэл бүрэн унтраасан гэсэн үг юм. Зурвасын форматыг ихэвчлэн дамжуулагч төхөөрөмжийн үйлдвэрлэгч тодорхойлдог бөгөөд тэд дамжуулах хурд, бит форматлах хэв маяг, мессежийн уртыг бараг ашигладаг. 433 МГц-ийн зурвас нь ухаалаг тоолуур гэх мэт дамжуулалтаар дүүрсэн тул програм хангамжийг зөвхөн бидний ашиглахыг хүссэн зурвасын форматаар шүүж тохируулах шаардлагатай байна.
Алхам 5: Цагийн мэдээлэл
Цахилгаан тасарсны дараа автоматаар дахин асах цаг хугацааны үнэн зөв мэдээллийг олж авахын тулд би хямд GPS төхөөрөмж ашигладаг. Надад NMEA стандарт өгүүлбэрийг гаргадаг хэд хэдэн GPS нэгж (дэлгэцгүй) байгаа боловч надад байгаа нэгжийн хамгийн жижиг нь хамгийн хямд нь NEO-6M юм. NEO-6M модуль нь TTL түвшний цуваа портыг ашигладаг тул Arduino-тэй ажиллахад хялбар байдаг. Ганц бодит ялгаа нь NMEA стандарт нь 4800 цуваа дамжуулалтын хурдыг тодорхойлдог боловч NEO-6M нь анхдагчаар 9600 baud байдаг. Та дамжуулалтын хурдыг өөрчлөхийн тулд үнэгүй "u-center" програмыг ажиллуулж болно, гэхдээ би үүнийг үйлдвэрийн тохиргоонд үлдээсэн. GPSInfo (Globalsat -ээс гаргасан) хэмээх үнэгүй хэрэгслийн програм байдаг бөгөөд энэ нь компьютер дээрх GPS мэдээллийг харахад маш тохиромжтой байдаг. Та GPS төхөөрөмжийг стандарт USB -ээс TTL кабельд холбож шалгах эсвэл компьютер ашиглан тохируулах боломжтой. Модуль дээрх GPS чип нь 3.3 вольт (самбар дээрх хүчдэлийн зохицуулагчаар) ажилладаг гэдгийг санаарай, хэрэв та түүний RXD порт руу холбогдохыг хүсвэл 5 вольтоос түвшин доошоо шилжих хэрэгтэй. TXD порт нь Arduino эсвэл компьютерт шууд холбогдох боломжтой.
Алхам 6: Цагийн бүсүүд
GPS -ийн цагийг харуулах нь UTC (Universal Time Coordinated) -ийг харуулахыг хүсч байвал хийхэд хялбар зүйл юм. NMEA -ийн өгүүлбэрүүд нь ASCII тэмдэгтүүдээс бүрдэх бөгөөд тэдгээрийг шууд LCD дэлгэц дээр гаргах боломжтой. Цагийн хэсэг нь HHMMSS. FF форматтай байна (цаг, минут, секунд, бутархай секунд). Бидний цагны хувьд бутархай хэсэг нь ашиггүй тул бидний шийдэх ёстой зүйл бол зургаан тэмдэгт юм. Асуудал нь хэрэв та хүсвэл орон нутгийнхаа цаг болон 12 цагийн AM/PM формат руу хөрвүүлэх шаардлагатай байна. Гэхдээ заримдаа асуудлууд нь амьдралыг сонирхолтой болгодог тул програм хангамжийн энэ хэсэг нь яг үнэндээ ийм байдаг.
Цагийн бүсийн тухайд та эдгээрийн ердөө 24 нь UTC байршлын зүүн талд (+ бүс), 12 нь UTC байршлын баруун талд (- бүс) байх болно гэж та бодож магадгүй юм. Чухамдаа бутархай хэдэн цаг, 12 цагийн "хязгаар" -аас хэтэрсэн хосууд байдаг. Хэрэв та эдгээр газруудын аль нэгэнд амьдардаг бол миний програм хангамж зөвхөн бүтэн 24 цагийн бүсийг эзэлдэг тул уучлалт гуйж байна. Бидний зарим нь зуны цагийн хуваарийг жилийн аль нэг цагт ашигладаг боловч үүнийг програм хангамжид автоматаар тооцдоггүй. Энэ нь ирээдүйн огнооны хайлтын хүснэгт, програм хангамжийн нарийн төвөгтэй байдал, жилийн хэдэн долоо хоног солигдсон тохиолдолд програм хангамжийг шинэчлэх шаардлагатай болно. Үүний оронд тоног төхөөрөмж нь цагийн бүсийг хялбархан тохируулах боломжийг олгодог түр зуурын холбоо барих унтраалга ашигладаг (UTC офсет).
Алхам 7: Схем
Схемийг дээр үзүүлсэн бөгөөд 4 битийн 1602 LCD интерфэйсийн холболтыг багтаасан болно. RF хүлээн авагчийн цуваа өгөгдөл нь дижитал логик түвшинд байдаг тул Arduino өгөгдлийн оролтын зүүтэй шууд холбогддог. Зүү нь програм хангамжид өөрчлөлт хийх тасалдлын функцийг гүйцэтгэхийн тулд тохируулагдсан бөгөөд ингэснээр бид импульсийн өргөнийг хэмжих боломжтой болно. GPS TXD гаралт нь Arduino RX оролттой шууд холбогддог.
Ашигласан хоёр унтраалга байдаг. Өмнө дурьдсанчлан, түр зуурын холбоо барих унтраалга нь UTC офсетыг тохируулах боломжийг олгодог. Шилжүүлэгчийг хүссэн үедээ дарж тохируулсан горимд оруулах боломжтой. Эхэндээ дэлгэц дээр "+77" гэсэн буруу UTC офсетыг харуулна. UTC офсет тохируулах зааврыг "Цагийн програм хангамж" хэсгээс үзнэ үү.
Хоёр дахь унтраалга нь асаах/унтраах энгийн унтраалга юм. "Off" байрлалд цагийг 12 цагийн форматаар (AM/PM), "on" байрлалд 24 цагийн форматаар харуулна. Форматуудын хооронд шилжихийн тулд энэ шилжүүлэгчийг хүссэн үедээ өөрчилж болно.
Хэрэв та зөвхөн цагийн функцийг хүсч байвал RF хүлээн авагчийн модулийг холбох шаардлагагүй болно. Хэрэв зөвхөн цаг агаарын функцийг хүсч байвал GPS болон хоёр унтраалгыг холбох шаардлагагүй болно.
Алхам 8: LCD програм хангамж
Би хоёр төрлийн LCD интерфэйсийн аль нэгийг ашиглах хандлагатай байдаг. Нэг нь стандарт 4 битийн интерфэйс, нөгөө нь ээлжийн бүртгэлийг ашигладаг 3 утастай интерфэйс юм. Хязгаарлагдмал тооны оролтын/зүү бүхий жижиг PIC микроконтроллертой ажиллахдаа би энэ интерфэйсийг зохион бүтээсэн. Би энэ төслийн 4 битийн интерфэйсийг ашигласан боловч Arduino-ийн ерөнхий LCD номын санг ашиглахын оронд өөрийн LCD оруулах файлтай болсон. Энэ нь санах ойн хэрэглээ, кодын нарийн төвөгтэй байдлыг бууруулдаг бөгөөд үүнтэй төстэй тодорхой төслүүдийн кодыг өөрчлөх боломжийг олгодог.
Алхам 9: Цагны програм хангамж
GPS нэгж нь төрөл бүрийн мэдээлэл агуулсан ASCII мөрүүд болох NMEA-0183 стандарт өгүүлбэрүүдийг гаргадаг. Энэхүү програмын хувьд би цаг хугацааны мэдээллийг авахын тулд GGA өгүүлбэрийг сонгосон, учир нь энэ бол миний өмнөх GPS төсөлд ашиглаж байсан өгүүлбэр юм. NMEA өгүүлбэр дэх мэдээллийн талбарыг таслалаар тусгаарладаг тул GGA өгүүлбэрийн толгойг илрүүлсний дараа програм хангамж нь таслалыг тоолж, GPS мэдээллийн хүссэн талбар бүрт тохирох горимыг дуудах болно. Энд зөвхөн цаг хугацааны мэдээлэл хэрэгтэй бөгөөд энэ нь эхний таслалаас хойшхи талбарт байгаа тул тоолох шаардлагагүй болно.
Зургаан цагийн цифрийг (HHMMSS) буферлаж, бүгдийг хүлээн авсны дараа боловсруулдаг. GPS нь зарим дутуу зурвасуудыг эрт гаргаж болох тул буфер горим нь тэмдэгт бүр нь ASCII тоон утга болохыг баталгаажуулдаг. Хэрэв муу тэмдэгт хүлээн авсан бол зурвасыг устгах болно. Энэ нь ердийн ажиллагааны үед, ялангуяа цуваа портын холбоо бага зэрэг буурсан тохиолдолд тохиолддог. Би үүнийг ганцхан удаа л харсан бөгөөд болсон бүх зүйл бол цаг нэг хором зогсоод дараа нь нэг секундын оронд хоёр секунд үсрэх явдал юм.
Хэрэв програм хангамж нь зөвхөн цаг харуулахаар тохируулагдсан бол LCD -ийн эхний мөрөнд орон нутгийн цаг, хоёр дахь мөрөнд UTC харагдана. UTC -ийн хувьд програм хангамж нь ASCII тэмдэгтүүдийг дэлгэцийн горим руу шууд илгээдэг бөгөөд хоёр цэгийг (:) зохих ёсоор оруулсан болно.
UTC -ийг орон нутгийн цагаар хөрвүүлэхийн тулд UTC офсет (цагийн бүс) ашиглах ёстой. GPS -ээс авах UTC цаг нь ASCII форматтай байдаг тул програм хангамж нь ASCII цагийн тэмдэгтүүдийг аравтын бутархай болгон хөрвүүлээд дараа нь UTC офсетыг нэмдэг. UTC офсет нь тэмдэгтийн бит бүхий BCD эерэг утга хэлбэрээр хадгалагддаг тул эхлээд бүхэл тоо болгон хөрвүүлээд дараа нь тэмдгийн битийг тохируулсан бол үгүйсгэдэг. Орон нутгийн цагийн цагийн утгыг тооцоолсны дараа хайх хүснэгтийг ашиглан BCD болгон хөрвүүлж, дараа нь BCD -ийг ASCII болгон хөрвүүлнэ. Хайлтын хүснэгт нь 24 цагийн UTC формат, +/- 12 цагийн бүсийг зохицуулах шаардлагатай. Үүнийг хийхийн тулд 0000-2300 цагийн хооронд UTC цагийн хуваарь нь цагийн бүсийг тооцохын тулд хүснэгтийн өмнөх 24 оруулга, өмнөх 12 оролттой 12 орцыг эзэлдэг. Нэг хүснэгт нь 12 цагийн форматтай тул дэлгэцийн AM/PM хэсгийг хайх хүснэгтийг нэмж орууллаа. Нөгөө хүснэгт нь 24 цагийн форматтай байна. Өмнө дурьдсанчлан асаах/унтраах товчлуур нь 12 эсвэл 24 цагийн форматыг сонгох боломжийг олгодог.
Цагийн бүсийг эхлүүлэх явцад EEPROM -ээс татаж аваад товч харуулна. Хэрэв үүнийг дор хаяж нэг удаа тохируулаагүй бол тохиргооны горимыг дуудна. Түр зуурын холбоо барих товчлуурыг дарж тохируулах горимыг хүссэн үедээ дуудаж болно. Тохиргооны горим нь дэлгэцийг "UTC OFFSET +77" болгож эхлүүлнэ. Шилжүүлэгчийг богино дарахад утга нь "-00" болж өөрчлөгдөнө. Хэрэв эерэг цагийн бүс шаардлагатай бол өөр богино дарахад утгыг "+00" болгон өөрчлөх болно. Удаан дарвал (> 1 секунд) тохиргооны горимыг дараагийн алхам руу шилжүүлэх болно. Энэ үед товч дарах бүр нь хамгийн ихдээ 12 хүртэлх цагийн утгыг нэмэгдүүлнэ. Хүссэн цагийн бүсэд хүрсний дараа унтраагуурыг 1 секундээс удаан дарж, дараа нь суллана. Програм хангамж нь UTC утгыг EEPROM дээр хадгалж, "OFFSET SAVED" товчлуурыг харуулна. Хэрэв та нэвтрэх явцад алдаа гаргасан бол гараад дахин тохируулахын тулд унтраалгыг дахин дарна уу.
NEO-6M нь цаг гаргахын тулд сайн байрлалыг засах шаардлагагүй тул нэг хиймэл дагуул авсан даруйдаа мессеж гаргах ёстой. Энэ хүртэл дэлгэцэн дээр "ДАТА ҮГҮЙ" гэсэн бичиг гарч ирнэ.
Алхам 10: Цаг агаарын програм хангамж
PIC микроконтроллер нь гадны импульс ашиглан таймерыг асаах/унтраах боломжтой. Үүнтэй ижил оролтын импульсийг импульсийн үргэлжлэх хугацааг унших дохио өгөх гадаад тасалдал болгон ашиглаж болно. Arduino-д яг ийм чадвар байхгүй тул би өөрчлөлтийг таслах функцийг ашигласан. RF -ийн мессежийн импульсийн нэг ирмэг дээр одоогийн микросекундийг таслагч зохицуулагч хадгалдаг. Эсрэг ирмэг дээр импульсийн өргөнийг тодорхойлохын тулд өнгөрсөн хугацааг тооцоолно.
Програм хангамж нь хүлээн авсан мессежийн өгөгдлийн форматыг харуулах боломжийг олгодог "DEBUG" гэсэн тодорхойлолттой. RF хүлээн авагчаас цуваа дамжуулалт хийх Arduino оролтын зүүг тодорхойлох тодорхойлолт бас бий. Энэхүү тодорхойлолтыг үндэслэн програмын өөрчлөлтийн бүртгэлийн зохих тохиргоог тооцоолохоор тохируулагдсан болно. Тооцоолол нь зөвхөн Arduino дижитал тээглүүр дээр ажилладаг. Үүний оронд аналог зүү ашиглаж болох боловч энэ нь регистрийн утгыг хатуу кодлох шаардлагатай болно.
Тасалдлын зохицуулагч нь авсан тоо нь эхлэх импульс болох хангалттай урт эсэхийг тодорхойлдог. Өмнө дурьдсанчлан, олон мессеж хоорондын зай 2 мс байдаг тул програм хангамжийг хайж олох болно. 433 МГц давтамжтай ачаалал ихтэй тул програм хангамжийн анхны скрининг нь хэмжсэн хугацаа нь дор хаяж 1.8 мс боловч 2.4 мс-ээс ихгүй байгаа эсэхийг шалгадаг. Эхлэлийг илрүүлсний дараа програм хангамж нь синхрончлолын битүүдийг (600us) хайж, тэдгээрийн дөрөвийг хүлээн авсан эсэхийг шалгадаг. Эдгээр туршилтыг давсны дараа програм хангамж нь 200us ба 400us -ийн тохирох хугацааг хайж олох болно.
Хүлээн авсан битүүд нь байт болж, байт бүр хадгалагдана. Долоон байт хүлээн авсны дараа нэмэлт боловсруулалт хийхээс өмнө мессежийн дүнг баталгаажуулдаг. Хэрэв түүхий байтыг гаргавал (дибаг хийх горим) байтыг ASCII тэмдэгт болгон хөрвүүлж, LCD дэлгэц рүү илгээнэ. Хэрэв чийгшил, температурын гаралтыг хүсч байвал зохих хөрвүүлэлтийг хийнэ.
RF-ийн мессеж дэх Centigrade өгөгдлийн хоёр байтыг нэгтгэж 11 битийн утга үүсгэнэ. Доод хэсгийг нь зүүн тийш нь нэг тийш нь чиглүүлж, паритет битийг арилгаж, дээд хэсгийн битүүдтэй уялдуулна. Хоёр байтыг 16 битийн үгийн хувьсагч болгож, дараа нь бүх зүйлийг нэг битээр сольж эцсийн битийн тохируулгыг авна. Дараа нь математик тооцооллын хувьд хувьсагч гэдэг үгийг хөвөгч цэгийн хувьсагч болгон хөрвүүлнэ.
Arduino дээр C ++ -ийг PIC дээрх угсрах хэлтэй харьцуулахад ашиглах нэг том давуу тал нь математикийн тооцооллыг хялбарчлах явдал юм. Өмнө дурьдсанчлан Centigrade хөрвүүлэлт нь (C / 10) -100 байна. Үр дүнг мөр болгон хөрвүүлж LCD дэлгэц рүү илгээнэ. Фаренгейтийн тооцоо нь (C * 1.8) + 32. Үр дүнг дахин мөр болгон хөрвүүлж LCD дэлгэц рүү илгээнэ. Аль ч тохиолдолд String хувиргалт нь сөрөг тэмдэг (зохих тохиолдолд) болон аравтын бутархайг агуулдаг. Аравтын бутархайн аравтын бутархууны араас ганцхан тэмдэгтийг дэлгэц рүү илгээсэн эсэхийг шалгахын тулд чек хийдэг. Мөр нь 3-5 тэмдэгтээс бүрдэх боломжтой тул энэ шалгалт шаардлагатай болно.
Надад AcuRite -ийн хоёр мэдрэгч байгаа тул хэрэв програм хангамж зөвхөн цаг агаарын функцийг хийхээр тохируулагдсан бол нэг өгөгдөл нь нөгөө өгөгдлийг дарж бичихгүй байхын тулд би програмыг шалгаж үзсэн. Цахилгаан ассаны дараа хүлээн авсан анхны мэдрэгчийг 1 -р мөрөнд, нөгөөхийг нь 2 -р мөрөнд харуулна. Дебаг хийх горимыг ашигласнаар би мэдрэгч бүрийн ID гэж юу болохыг харах боломжтой болно. Тэдний нэгээс өгөгдлийг боловсруулахыг хүссэн.
Програм хангамж нь батерейны статусыг (byte3) хянадаг бөгөөд хэрэв энэ нь батерей бага байгааг илтгэж байвал мессежийг харуулдаг. Энэ зурвас нь тухайн мэдрэгчийн бусад бүх өгөгдлийг дарж бичдэг.
Алхам 11: Дэлгэц
Төрөл бүрийн функцүүдийн зарим жишээг энд харуулав. Надад хэд хэдэн зааварчилгаа байгаа боловч миний ихэнх PIC микроконтроллерийн төслүүдийг www.boomerrules.wordpress.com вэбсайтаас олж болно.
Зөвлөмж болгож буй:
DIY Visuino ашиглан M5StickC ESP32 дээр цагийг хэрхэн харуулах вэ - Хялбар хийх: 9 алхам
DIY нь Visuino ашиглан M5StickC ESP32 дээр цагийг хэрхэн харуулах вэ - Хялбар хийх: Энэхүү гарын авлагад бид ESP32 M5Stack StickC -ийг Arduino IDE, Visuino ашиглан хэрхэн яаж LCD дэлгэц дээр харуулах талаар сурах болно
R16 DS1307 ашиглан TM1637 LED дэлгэц дээр Arduino харуулах цаг: 8 алхам
TM1637 LED дэлгэц дээрх Arduino дэлгэцийн цаг RTC DS1307 ашиглан: Энэ заавар дээр бид RTC DS1307 модуль, LED дэлгэц TM1637, Visuino ашиглан цагийг хэрхэн харуулах талаар сурах болно
Arduino ашиглан аналог цаг ба дижитал цагийг LED зурвасаар хэрхэн яаж хийх вэ: 3 алхам
Arduino ашиглан LED зурвас ашиглан аналог цаг, дижитал цаг хэрхэн хийх вэ: Өнөөдөр бид аналог цаг хийх болно. Led Strip бүхий дижитал цаг, Arduino -тэй MAX7219 Dot модуль нь тухайн орон нутгийн цагийн бүсийг тохируулах болно. Аналог цаг нь илүү урт LED зурвас ашиглах боломжтой тул хананд өлгөж урлагийн уран бүтээлч болно
Интернет цаг: NTP протокол бүхий ESP8266 NodeMCU ашиглан OLED ашиглан огноо, цагийг харуулах: 6 алхам
Интернет цаг: ESP8266 NodeMCU ашиглан NTP протокол ашиглан OLED ашиглан огноо, цагийг харуулах: Сайн байна уу залуусаа, энэ зааварчилгаанд бид интернэтээс цаг авах интернет цаг бүтээх болно, ингэснээр энэ төслийг ажиллуулахад RTC шаардлагагүй болно. интернет холболт ажиллаж байгаа бөгөөд энэ төслийн хувьд танд esp8266 хэрэгтэй бөгөөд энэ нь
Ханан дээр цагийг харуулдаг цагийг хэрхэн бүтээх вэ: 6 алхам
Ханан дээр цагийг харуулдаг цагийг хэрхэн яаж бүтээх вэ: Энэхүү зааварчилгаа нь проектор цаг хэрхэн бүтээхийг танд харуулав. Энэхүү төхөөрөмж нь ханан дээр цаг гаргах боломжийг олгодог. Жижиг LCD сэрүүлэгтэй цаг дээр суурилсан (тийм ч жижиг биш, гэхдээ та үүнийг төлөвлөж, ажиллах боломжгүй болно), энэ бол задлах сайн арга юм