Агуулгын хүснэгт:

Тоон өгөгдлийг нэг Arduino -аас нөгөө рүү илгээх: 16 алхам
Тоон өгөгдлийг нэг Arduino -аас нөгөө рүү илгээх: 16 алхам

Видео: Тоон өгөгдлийг нэг Arduino -аас нөгөө рүү илгээх: 16 алхам

Видео: Тоон өгөгдлийг нэг Arduino -аас нөгөө рүү илгээх: 16 алхам
Видео: #3 Outseal Arduino PLC-г хэрхэн програмчлах вэ - Contacts & Relays 2024, Долдугаар сарын
Anonim
Тоон өгөгдлийг нэг Arduino -аас нөгөө рүү илгээх
Тоон өгөгдлийг нэг Arduino -аас нөгөө рүү илгээх

Танилцуулга

Дэвид Палмер, CDIO Tech. Астоны их сургуульд.

Танд нэг Arduino -аас нөгөө рүү хэд хэдэн дугаар илгээх шаардлагатай байсан уу? Энэхүү зааварчилгаа нь хэрхэн яаж хийхийг харуулж байна.

Та үүнийг Serial Monitor терминал руу илгээхийн тулд хэд хэдэн тооны мөр оруулснаар хялбархан шалгаж болно, мөн хоёр дахь Arduino -тэй холбогдсон хоёр дахь цуваа монитор дээр дугаарууд гарч ирэх болно. Та Bluetooth холбоосыг ашиглаж болно.

Энэ нь юу хийдэг вэ

Arduino -ийн хоёр програмыг (Arduino -ийн тойм хэлээр ярьдаг) хөгжүүлэх шаардлагатай бөгөөд нэг нь Arduino Serial Monitor -ийг ажиллуулж буй компьютерт холбогдох мастер програм, нөгөө нь Мастераас цуваа мессеж хүлээн авах, декодлох, буцааж илгээх Боолын үүргийг гүйцэтгэх ёстой. Боол нь хэрэв та үүнийг ашиглахыг хүсвэл IDE -ийн хоёрдахь сериал монитор дээр харьцуулж буй дугаараа харуулах боломжтой. Энэ нь эхний ээлжинд аливаа зүйлийг ажиллуулахад тусалж болох бөгөөд хэрэв та өөрийн шаардлагад нийцүүлэн хөтөлбөрт ямар нэгэн өөрчлөлт хийхээр шийдсэн бол танд туслах болно.

Тоног төхөөрөмж

  • 2 Ардуино
  • 2 USB залгуур
  • нөхөх утас (шаардлагатай бол)
  • Arduino IDE ачаалагдсан 1 компьютер/зөөврийн компьютер (Arduino.cc вэбсайтаас үнэгүй татаж авах боломжтой)

Алхам 1: Тохируулах - Эхлээд тоног төхөөрөмжөө тохируулна уу

Тохируулах - Эхлээд тоног төхөөрөмжөө тохируулна уу
Тохируулах - Эхлээд тоног төхөөрөмжөө тохируулна уу
Тохируулах - Эхлээд тоног төхөөрөмжөө тохируулна уу
Тохируулах - Эхлээд тоног төхөөрөмжөө тохируулна уу

2 Arduino -ийг компьютер дээрх 2 USB порт руу залгаарай.

Зөвлөгөө, дараа нь асуудалд орохгүйн тулд тэдгээрийг M ба S (эзэн ба боол) гэж нэрлэх нь зүйтэй юм (энд байгаа 2 зураг дээр үзүүлсэн болно.)

Алхам 2: Тохируулах - Дэлгэцээ тохируулна уу

Тохируулах - Дэлгэцээ тохируулна уу
Тохируулах - Дэлгэцээ тохируулна уу

Хамгийн сайн зүйл бол дэлгэцээ өөртөө тохируулах явдал юм

  • IDE нь зүүн талд Мастер програмаар ачаалагдсан ба
  • Энэ нь баруун талд байгаа Боолтой.

Дэлгэцийн зураг дээр үзүүлсэн шиг Maser ба Slave -ийн цуваа мониторуудыг зүүн болон баруун талд байлга.

Алхам 3: Мастер төгсгөлийг тохируулаад дараа нь хамтдаа холбоно уу - 1 -р хэсэг

Мастер төгсгөлийг тохируулж, дараа нь хамтдаа холбоно уу - 1 -р хэсэг
Мастер төгсгөлийг тохируулж, дараа нь хамтдаа холбоно уу - 1 -р хэсэг

Master End Serial Monitor -ийг хоёр дугаар илгээхээр тохируулахдаа та энд харуулсан шиг эхлэл, төгсгөл, тусгаарлагч тэмдэг, таслал тусгаарлагч тэмдэгтийг үргэлж ашиглах ёстой.

Та одоо 2 Arduino -г цувралаар холбох хэрэгтэй. Үүнийг хоёр нөхөх утсаар хийдэг.

Би ногоон, шар өнгийг ашигласан

  • Эхлээд шарыг аваарай, энэ нь нэг Arduino -д D6, хоёрдугаарт D7 -т залгагдах ёстой
  • Дараа нь ногоон утсан дээр эсрэгээр, эхнийх нь D7, хоёр дахь нь Arduino дээр D6 байна.

Эсвэл, хэрэв танд HC -05 гэх мэт хос Bluetooth модуль гэх мэт ямар нэгэн зүйл байгаа бол дээрх утаснуудын адил эффект өгөх болно.

Алхам 4: Мастер төгсгөлийг тохируулаад дараа нь хамтдаа холбоно уу - 2 -р хэсэг

Мастер төгсгөлийг тохируулж, дараа нь хамтдаа холбоно уу - 2 -р хэсэг
Мастер төгсгөлийг тохируулж, дараа нь хамтдаа холбоно уу - 2 -р хэсэг
Мастер төгсгөлийг тохируулж, дараа нь хамтдаа холбоно уу - 2 -р хэсэг
Мастер төгсгөлийг тохируулж, дараа нь хамтдаа холбоно уу - 2 -р хэсэг

Бид Програм хангамжийн цуваа номын санг ашиглаж байна. Дэлгэрэнгүй мэдээллийг https://www.arduino.cc/en/Reference/Libraries линкээр авах боломжтой.

Та үүнийг аль ч програмын 7-р мөрөнд дуудсан байгааг харж болно. Энэ нь дижитал 7 ба 6 тээглүүрийг TX ба RX (дамжуулах ба хүлээн авах) хэлбэрээр тохируулдаг. Ийнхүү өгөгдөл нь Мастер Ардуиногоос ногоон утсаар дамжин Боол руу шилжих бөгөөд хоёр дахь Arduino дахь Slave програм дууссаны дараа шар утсаар дамжин өнгөрөх болно. Үүнтэй ижил зургийн доод талд (Цуваа мониторын цонхонд) бидний дамжуулсан өгөгдөл энд тайлбарласан гогцоог амжилттай давж, бүхэл тоонууд хоорондоо маш сайн тусгаарлагдсан тул компьютерт буцаж ирснийг харж болно.

Алхам 5: Ноорог / Програмын тойм - Хөтөлбөрийн бүтэц

Ноорог / Хөтөлбөрүүдийн тойм - Хөтөлбөрийн бүтэц
Ноорог / Хөтөлбөрүүдийн тойм - Хөтөлбөрийн бүтэц
Ноорог / Хөтөлбөрүүдийн тойм - Хөтөлбөрийн бүтэц
Ноорог / Хөтөлбөрүүдийн тойм - Хөтөлбөрийн бүтэц

Байршил Бүх Arduino ноорогуудын адил 3 үндсэн хэсгээс бүрдэнэ.

  • Тунхаглалууд
  • Тохиргоо
  • Гол гогцоо

Ихэнх тохиолдолд бид энд "Функц" -ийн нэмэлт болох 4 -р хэсгийг ашигласан болно. Хэрэв та Функцийг ашиглах талаар сайн мэдэхгүй байгаа бол Google -ээс "Arduino функц" -ийг хайж олох боломжтой бөгөөд та энэ линк дээрх жишээ шиг тайлбар сайтуудыг олох болно: www.tutorialspoint.com/arduino/arduino_functions…..

Бид мөн табуудыг ашиглан програмыг илүү удирдах боломжтой блок болгон хуваасан.

Бидний ашигласан гурван блокыг дээрх IDE цонхны зураг бүрийн дээд талд харж болно.

  • энгийнRxTx0330 мастер
  • нийтлэг
  • тэмдэглэл

Эдгээр нь үнэндээ програмын хавтас доторх тусдаа файлууд бөгөөд үүнийг Windows Explorer -ийн Slave програмын файлуудаас харж болно.

Бид үүнийг хийх болсон маш сайн шалтгаан бий.

  • Хөтөлбөрийг боловсруулж байхдаа бид Мастерын ихэнх хөтөлбөр нь Боолынхтой адилхан болохыг ойлгосон.
  • Бид бүх нийтлэг хэсгүүдийг таб руу татаж дуусгаснаар бид үүнийг "нийтлэг" гэж нэрлээд дараа нь нэг хэсгийг нь дибаг хийх бүртээ (туршиж үзээд, сайн ажиллаж байгаад сэтгэл хангалуун байсан) тэр табыг бүхэлд нь хуулж буулгасан. Мастераас Боол хүртэл, эсвэл эсрэгээр.
  • Тэмдэглэлийн табууд нь ижил төстэй байдаг, учир нь загвар нь ерөнхий юм.

Аль ч функцийг тохиргооноос дууддаггүй, бүгдийг нь давталтаас дууддаг тул бид тэдгээрийг тохируулсны дараа харин давталтын өмнө үүсгэсэн.

Алхам 6: Доошоо чиглэсэн дизайн

Ноорогоо юу хийхийг хүсч байгаагаа тодорхойлж эхэлснээр дизайн хийх нь зүйтэй.

Үүнийг авсны дараа та эдгээр зүйлийг зурах ажлыг эхлүүлж болно. Ерөнхийдөө хэрэв та яаж хийхээ мэдэхгүй байгаа нарийн ширийн зүйл байгаа бол үүнийг функц болгож, функцийг бий болгохыг сүүлд нь үлдээгээрэй.

Энэ нь CDIO гэж нэрлэгддэг олон их дээд сургуулиудад заадаг сайн дизайны философийг дагаж мөрддөг (хэрэв та үүнийг мэдэхгүй бол Google -ээс хайж олох боломжтой бөгөөд үүнийг тайлбарлах сайтуудыг хайж олох боломжтой: https://www.cdio.org/s.) Энэ нь үндсэндээ: Үзэл баримтлалыг тодорхой болгохоос өмнө дизайныг бүү эхлүүл. Дизайныг тодорхой болгох хүртэл хэрэгжилтийг бүү эхлүүл. Хэрэгжилтийг тодорхой болгохоос өмнө үүнийг ажиллана гэж бүү бодоорой. Эхлээд C, дараа нь D, I, O. Дараагийн үе шат бүрт та давталт хийнэ (давталтын эргэн тойронд буцаж очоорой), ингэснээр та анхны дизайныхаа давталтад сэтгэл хангалуун байгаа бөгөөд энэ нь үзэл баримтлалтай нийцэж байгаа эсэхийг шалгаарай. Хэрэв танд хэрэгтэй бол C гэх мэт. Тэгэхээр та үйл ажиллагаагаа явуулах шаардлагатай байсан ч гэсэн дээд тал руугаа буцаж очоод С одоо хэрхэн харагдаж байгааг дахин харна уу, дараа нь D бид хоёр, мөн бүгдийг хийж, шалгана уу. Шаардлагатай бол өөрчилнө. Програмчлалын эскизийн хувьд хэрэв та дээрээс доош дизайн хийвэл энэ нь яг адилхан ажилладаг.

Алхам 7: Үзэл баримтлал ба дизайн - 1 -р хэсэг

Үзэл баримтлал ба дизайн - 1 -р хэсэг
Үзэл баримтлал ба дизайн - 1 -р хэсэг
Үзэл баримтлал ба дизайн - 1 -р хэсэг
Үзэл баримтлал ба дизайн - 1 -р хэсэг

Энд байгаа үзэл баримтлал нь 'тэмдэглэл' таб дээр заасан тойм шаардлагууд шиг харагдаж байна.

Дизайн нь тэмдэглэлийн хүснэгтэд нийцсэн давталтын анхны хувилбар шиг харагдаж магадгүй бөгөөд энэ зураг дээрх шиг харагдаж магадгүй юм

CTRL-C тайлбарыг эхлээд давталтын толгой руу хуулж, дараа нь эдгээр зүйлийг хийх командуудаар хоосон зайг бөглөж эхлэхийг би хүсч байна.

Энэ нь үнэндээ OK -ийг хөрвүүлдэг бөгөөд та үүнийг зурагны дэлгэцийн доод хэсэгт харж болно. Энэ нь CDIO-ийн D үе шатнаас I хүртэлх түвшинд хүрч байгаа бөгөөд кодыг боловсруулж байх үед энэ D-I давталтыг үргэлжлүүлэн хийх нь зүйтэй юм.

Дараагийн шат руу орох цаг боллоо, тэнд бид: // тоног төхөөрөмжийн USB -ээс ямар нэгэн зүйл хүлээж аваад програм хангамжийн цуваа суваг руу дамжуулах болно гэсэн тайлбар байна. Үүнийг хийхийн тулд бид энэ кодыг бичдэг - энд 133-138 -р мөрүүдийг шар тодруулагчаар харуулав

Алхам 8: Үзэл баримтлал ба дизайн - 2 -р хэсэг

Үзэл баримтлал ба дизайн - 2 -р хэсэг
Үзэл баримтлал ба дизайн - 2 -р хэсэг
Үзэл баримтлал ба дизайн - 2 -р хэсэг
Үзэл баримтлал ба дизайн - 2 -р хэсэг

Бидний танилцуулж буй эхний хоёр функц нь техник хангамжийн портуудаас хүлээн авах, програм хангамжийн порт руу дамжуулах (recv () ба tran () функцүүд юм.

Тэднээс гадна бид newData нэртэй дэлхийн хувьсагчийн тестийг нэмсэн. Энэ бол "void recv ();" функц дотор байрлуулах туг юм. Зурвас хүлээн авсны дараа энэ хувьсагчийг худал гэж үнэн гэж тэмдэглэнэ. Бид үүнийг хийдэг бөгөөд ингэснээр бид зөвхөн 134 -р мөрөнд (туг == үнэн) хүлээн авсан тохиолдолд л мессеж дамжуулдаг. Тэгээд бид "ажил хийгдсэн" гэсэн мессежээ дамжуулсны дараа 137 -р мөрөн дэх тугийг худал болгож буцааж цэвэрлэнэ.

Дахин бид хөрвүүлэлтийг шалгаж болно (D -ээс I хүртэл), энэ удаад бидэнд "зарлаагүй" алдааны мэдэгдэл байна (харуулав). Энэ нь бид recv () зарлаагүй гэдгээ бидэнд хэлж байна; функц. Бид үүнийг дараа хийхээр төлөвлөж байгаа тул цэвэрхэн эмхэтгэлийг авахын тулд одоохондоо бид доор харуулсны дагуу дамми эсвэл орлуулагч функцийг бий болгох хэрэгтэй.

Дахин бид хөрвүүлэлтийг шалгаж болно (D -ээс I хүртэл), энэ удаад бид өөр "зарлаагүй" алдааны мессежийг tran (); функц. Үүнтэй ижил стаб үүсгэх шаардлагатай. Дахин бид хөрвүүлэлтийг шалгаж болно (D -ээс I хүртэл), энэ удаа бид энэ ажлыг төгс төгөлдөр олох болно; Одоогоор маш сайн.

Алхам 9: Үндсэн гогцоог дуусгах: A) USB -ээс хүлээн авах, B) Боол Ардуиногоос хүлээн авах

Үндсэн гогцоог дуусгах: A) USB -ээс хүлээн авах, B) Боол Ардуиногоос хүлээн авах
Үндсэн гогцоог дуусгах: A) USB -ээс хүлээн авах, B) Боол Ардуиногоос хүлээн авах
Үндсэн гогцоог дуусгах: A) USB -ээс хүлээн авах, B) Боол Ардуиногоос хүлээн авах
Үндсэн гогцоог дуусгах: A) USB -ээс хүлээн авах, B) Боол Ардуиногоос хүлээн авах

Энэ хэсгийг дуусгахын тулд бидний оруулсан нэг эцсийн хэсэг байгаа бөгөөд энэ нь дибаг хийх код нэмэх явдал юм.

Энд юу хийснээ, яагаад гэдгийг ойлгохын тулд ноорог зурах талаархи өөр нэг зааварчилгаа байдаг. "Arduino -ийн ноорогуудыг ажиллах хүртэл хэрхэн бүтээх, турших" зааврыг үзнэ үү.

Тиймээс эдгээр дибаг хийх шугамуудыг [136-139 харуулав] үндсэн гогцоонд нэмж оруулна, тэгээд та дибаг хийх хувьсагчийг үнэн болгож Compiling (I) болгосноор тэдгээрийг Master төгсгөлд туршиж үзэх боломжтой. Та Arduino -ийг холбож, байршуулж, Цуваа мониторыг нээж, Цуваа монитор руу буцаж орж ирж буй зүйл энд үзүүлсэн шиг байгаа эсэхийг шалгаарай ("Дебаг хийх горим" гэсэн мессежийг нэмж оруулсан байна уу?)

Алхам 10: Slave Arduino дахь өгөгдлийг хүлээн авах, зохицуулах

Боол Ардуино дахь өгөгдлийг хүлээн авах, зохицуулах
Боол Ардуино дахь өгөгдлийг хүлээн авах, зохицуулах
Боол Ардуино дахь өгөгдлийг хүлээн авах, ашиглах
Боол Ардуино дахь өгөгдлийг хүлээн авах, ашиглах

Боол Ардуиногоос хүлээн авч байна

Хоёрдахь сувгийн шаардлагатай кодыг үндсэн давталтад нэмж оруулна уу.

Мастерын хэргийн талаар дээр бичсэн зүйл дээр үндэслэн бүтэц нь сул байгааг та харж байна уу?

Мөн бид хөрвүүлэгчийн алдаа, өөр зарлаагүй функцтэй болохыг олж харах болно - энэ удаад parseData (); - Тиймээс бид алдаагүй тестийн эмхэтгэлийг ажиллуулахаасаа өмнө үүнд зориулж стоб хийх хэрэгтэй.

Slave Arduino дахь өгөгдлийг зохицуулах

Хэрэв Arduino -ийг Slave төхөөрөмж хэлбэрээр тохируулсан бол 163 -аас 174 хүртэлх мөрүүдийг оруулна уу.

Мөн та энэ удаад маш сайн эмхэтгэсэн байх ёстой.

Алхам 11: Хүлээн авах функцийг бичнэ үү

Хүлээн авах функцийг бичнэ үү
Хүлээн авах функцийг бичнэ үү

Хүлээн авах функц - void recv (char from) {} - хоёр үндсэн ажилтай.

USB сувгаас тэмдэгтүүдийн мөрийг хүлээн авах 1 ба

2 Arduino -аас Arduino суваг руу нэгийг хүлээн авах.

Эхнийх нь бид Arduino -ийн бүтээсэн UART техник хангамжийг ашигладаг тул хоёрдугаарт стандарт Arduino Library: UART програм хангамжийг ашиглах шаардлагатай болно.

Бид функцэд код нэмж эхэлмэгц зүгээр л нэг stub -ийн оронд ямар нэгэн зүйл хийдэг функцийг бий болгохын тулд орлуулж буй стобоо устгах эсвэл тайлбар хийхээ санаж байх хэрэгтэй. Үгүй бол бид хөрвүүлэлтийн алдааг олж авдаг: 'void lrec (char)' -ийг дахин шинэчлэх.

Алдаа гаргаж, дараа нь арилгахын тулд дээр дурдсан аргуудын аль нэгийг туршиж үзээрэй.

Бидний энд харуулсан 75-88 -р мөрүүдийг шараар харуулсан функцээс эхэл.

Кодтой болсноор Compile үйлдлийг туршиж үзэх шаардлагатай болно гэдгийг та одоо мэдэж байна. Энэ нь танд урьд өмнө байсан алдаануудын адил энэ хүрээнд зарлаагүй функцын нэрийг өгөх болно. Энэ алдааг эмхэтгэхийн тулд бидэнд өөр нэг ступ хэрэгтэй болно, тиймээс өмнөх шигээ нэмж оруулаад одоо алдаа гаргахгүйгээр эмхэтгэх боломжтой байгаа эсэхийг шалгаарай.

Одоо recv () функцэд зориулж бичсэн кодоо авч үзье.

Энэ нь маш цэвэрхэн бөгөөд дээр дурдсан функцийн хоёр хэсгийг гаргахын тулд 'if' нөхцлийг ашиглаж байгааг харж болно.

'Sw' хэсэг ба 'hw' хэсгийн доторх код нь ижил хэлбэртэй бөгөөд би үүнийг энд тайлбарлах болно.

Тухайн тохиолдол бүрийн хос мөрүүдийн эхнийх нь хэсэг хугацааны давталтын эхлэл юм. Хэрэв та энэ хугацааны талаар сайн мэдэхгүй байгаа бол тайлбар, жишээг Arduino.cc/Reference сайтаас хайж олох боломжтой. Энд бид 'суулгагдсан' Цуваа 'функц ямар ч тэмдэгт аваагүй байхад, мөн newData хувьсагчийг унтраасан тул (өөрөөр хэлбэл newData == худал нөхцөл үнэн) хүлээж байна. Тэмдэгт буюу хэд хэдэн дүрийг хүлээж авмагц энэ хосын хоёр дахь мөрөнд "унах" болно. Энэ нь дараа нь recAstringChar (char) руу залгах болно; одоогийн тэмдэгтийг зохицуулах функц. Дараа нь хүлээн авах шаардлагатай тэмдэгтүүд байх үед (эсвэл урт хугацаанд) энэ хос мөрүүд ээлжлэн солигдоно. Тэд бүгдийг хийсний дараа төлөв дуусч, if эсвэл өөр түвшний түвшинг дуусгахыг зөвшөөрч, эргээд rec (char) зөвшөөрөх; дуусгах функц. Тиймээс одоо бүрэн зурвас хүлээн авлаа.

Алхам 12: Хүлээн авах дэд функцийг бичих - 1 -р хэсэг

Хүлээн авах дэд функцийг бичих - 1 -р хэсэг
Хүлээн авах дэд функцийг бичих - 1 -р хэсэг
Хүлээн авах дэд функцийг бичих - 1 -р хэсэг
Хүлээн авах дэд функцийг бичих - 1 -р хэсэг

Бид одоо recAstringChar (char) нэртэй функцийг бичих хэрэгтэй;. Та 50 -р мөрийн дээд хэсэгт бичсэн тайлбараас түүний үүрэг бол ирж буй цуваа мессежийн хуулбар бүхий хоёр буферийг шинэчлэх явдал юм. [Би энэ бүхнийг шийдэх гэж оролдож байх үед нэг зүйл олж мэдсэн нь надад хоёр өөр буфер хэрэгтэй байсан, эсвэл наад зах нь энэ нь зарим асуудлыг шийдэх хамгийн хялбар арга байсан тул 2 буфер хэрэгтэй болж хувирсан юм. Би тэднийг дөнгөж хийсэн.] Би нэг буфер гэж нэрлэв: хүлээн авсанData, нөгөө нь:

Буферууд нь дэлхийн хувьсагчид тул тэдгээрийг модулийн түвшинд зарладаг бөгөөд нийтлэг табын 9, 10 -р мөрийг үзнэ үү. Энэ функц дотор зарлагдсан өөр хувьсагчууд байдаг тул 51-54-р мөрөнд орон нутгийн хамрах хүрээг харуулсан болно. Энэ бол дэлхийн болон орон нутгийн иргэдийн ялгааг тайлбарлах газар биш боловч https://www.arduino.cc/glossary/en/ дээрээс Орон нутгийн болон Глобал хэсэгт энэ талаар дэлгэрэнгүй мэдээлэл байгаа болно.

Та энд өгөгдлийн төрөл болон төрөл өөрчлөгчдийн талаар бүгдийг мэдэх боломжтой: статик, логик, байт, const, char https://www.arduino.cc/reference/en/#variables энд харуулав.

Энэ функцийн програмын үндсэн урсгалыг энд байгаа 56 -р мөрөөр, 74 -р мөрөнд харгалзах өөрөөр хянана. Энэ нь хоёр хувилбартай холбоотой юм.

a) Хүлээн авсан мессеж эхлэх үед [74 -р мөрөөс]. Энэ нь startMarker -ийг анзаарах үед тохиолддог бөгөөд үүнийг '<' тэмдэгт гэж тодорхойлсон байдаг тул ноорогыг туршиж үзэх болгондоо бид тэмдэгт мөрөө үргэлж эхэлдэг. Хэрэв ингэхгүй бол юу ч хүлээж аваагүй болно, гэхдээ бид 'Serial Monitor' гарны мөрөнд утгагүй зүйл бичиж байгаа шиг бүгдийг үл тоомсорлох болно.

b) [56-73 -р мөр] нь бусад бүх тэмдэгтүүдийг ямар ч байсан хүлээн авдаг боловч тэдгээр нь зөвхөн хүчин төгөлдөр эхлэлийг хийсний дараа тэмдэгтүүдтэй харьцдаг (дээрх 'а' шиг 'а' хүлээн авсан болно.)

Эдгээр мөрөнд (74 -өөс 78 хүртэл) бид хүлээн авсан <ийг буферуудын аль нэгэнд (Бид буфер заагчийг (хувьсагч: char ndx) ndx ++ мөрөнд нэмэгдсэн дараах командыг ашиглан (++) дараагийн нөөц буферийн байрлалыг (хүлээн авсанData [1]) зааж өгөхөөр тохируулдаг;, мөн бид явагдаж буй тугийг үнэн болгож тохируулсан.

Функцийн энэ хэсгийн програм хангамжийн урсгалыг энд байгаа 57 -р мөрөнд харгалзах 65 -р мөрөнд харгалзана. Энэ нь хоёр хувилбартай холбоотой

a) Хүлээн авсан мессеж дуусахад [65 -р мөрөөс]. Энэ нь endMarker -ийг> гэж тодорхойлсон үед тохиолддог бөгөөд иймээс бид ноорогоо туршиж үзэх болгондоо мөрөө тэр тэмдэгтээр төгсгөдөг. Төгсгөлийн тэмдэгтийг хүлээн авахад тохиолддог нэг зүйл бол дэлхийн далбаа (техникийн хувьд хувьсах) newData нь функц дуусахтай зэрэгцэн үнэн байдаг бөгөөд ингэснээр бидний дэд функцийг дуудсан функц (дуудлагын функц: recv (char);) хүчин төгөлдөр шинэ өгөгдлийг бүрэн хүлээн авсныг "мэдэх" боломжтой.

b) [57 -оос 64 -р мөрүүд] бусад бүх тэмдэгтүүдийг ямар ч хамаагүй хүлээн авдаг. Энэ нь тэднийг буферуудын аль алинд нь эгнээгээр нь цэвэрхэн зогсооно.

Алхам 13: Хүлээн авах дэд функцийг бичих - 2 -р хэсэг

Хүлээн авах дэд функцийг бичих - 2 -р хэсэг
Хүлээн авах дэд функцийг бичих - 2 -р хэсэг
Хүлээн авах дэд функцийг бичих - 2 -р хэсэг
Хүлээн авах дэд функцийг бичих - 2 -р хэсэг

2 буфер нь хүн амтай болсны дараа ямар байдгийг жишээгээр тайлбарлахад тус болно. Хэрэв бид enter -ийг оруулах гэж байгаа бол буферууд нь дараах тэмдэгтүүдийг харуулна.

Одоо та бидний оруулсан анхны тэмдэгтүүдтэй яг адилхан буфер, хоёр утга, тусгаарлах таслалтай нэг буфер байгааг одоо та харж байна. Одоо бидэнд Serial Monitor гар дээр бичсэн тэмдэгтүүдийг хүлээн авах код байгаа бөгөөд бид CDIO I үеэс O рүү шилжиж, хэдэн мөр бичиж, юу болсныг харах боломжтой болно. Кодыг Master Arduino руу оруулаад, Цуваа мониторыг нээгээд enter гэх мэт хүчин төгөлдөр зүйл бичиж оруулна уу. Цуваа дэлгэцийн дэлгэц дээр энд үзүүлсэн шиг цуурай ирдэг үү?

Алхам 14: Дамжуулах ба задлах функцийг бичнэ үү

Дамжуулах ба задлах функцийг бичнэ үү
Дамжуулах ба задлах функцийг бичнэ үү
Дамжуулах ба задлах функцийг бичнэ үү
Дамжуулах ба задлах функцийг бичнэ үү

Эхлээд дамжуулагчийн хувьд

Тиймээс одоо бид мөр хүлээн авлаа, бид дамжуулах функцийг бичиж болно: tran (char); түүний ишийг солих. Энэ нь бидэнд Мастераас Боол Ардуино руу утас илгээх боломжийг олгоно.

Энэхүү шинэ функцийг туршихын тулд хоёр төхөөрөмжийг хоёуланг нь холбож, холбосон эсэхийг шалгаарай.

Энэ функцийг энд 117 -аас 133 -р мөрөнд үзүүлсэн шиг оруулна уу. Үүнийг нэг хэсэг нь USB суваг руу (UART техник хангамж) дамжуулах, нөгөө нь Arduino (програм хангамж UART.) Дамжуулах гэсэн хоёр хэсэгтэй. Энэ нь алдааг эмхэтгэх ёстой. -үнэгүй, та тэр даруй ноорогоо байршуулж, юу болохыг харах боломжтой. Энэ удаад би илгээх болно. Та үзүүлсэн үр дүнг авч байна уу?

Дэлгэцийн зураг нь сонирхолтой юм, учир нь Хүлээн авсан мөр нь өмнөх шигээ зөв харагдах ёстой бөгөөд дамжуулсан мөр нь одоо зөв харагдах ёстой. Гэсэн хэдий ч бүхэл тоог хөрвүүлэх нь ажиллахгүй байгааг анхаарна уу. Үүнийг ажиллуулахын тулд жаахан нэмж код оруулах шаардлагатай хэвээр байна.

Алхам 15: Дамжуулах ба задлах функцийг бичнэ үү

Дамжуулах ба задлах функцийг бичнэ үү
Дамжуулах ба задлах функцийг бичнэ үү
Дамжуулах ба задлах функцийг бичнэ үү
Дамжуулах ба задлах функцийг бичнэ үү

Дараа нь Parse -ийн хувьд

Энэ бол тоон хэсэгчилсэн мөрүүдийг авахын тулд хүлээн авсан мөрийг задлан шинжилж, тэдгээрийг бүхэл тоо болгон хувиргадаг код юм. Энэ бол хүчин төгөлдөр бус parseData (); үндсэн давталтын функц

Шинжилгээний стобыг 98 - 113 -р мөрөнд үзүүлсэн кодоор орлуулна уу. Байршуулаарай, 2 бүхэл тоон утгатай холбоотой асуудал одоо шийдэгдсэн эсэхийг харцгаая. Оролдоод үзье.

Тийм ээ, энэ нь ажилладаг бөгөөд харуулсан шиг олсон бүхэл тоо нь 49 ба 98 байна.

Алхам 16: Финал

Финал!
Финал!

Энэхүү өгөгдөл нь PC -ээс Master -ээс боол руу дамжиж, Master -ээр дамжин дахин PC рүү шилжсэн. Мастер ба боолын төгсгөлд нийтлэг бэлэн хувилбарыг байршуулж, дибаг хийх горимыг унтраасан тохиолдолд бид энд үзүүлсэн шиг хоёр төгсгөлд зөв хүлээн авсан өгөгдлийг харах боломжтой болно.

Зөвлөмж болгож буй: