Мазмуну:

Сандык маалыматтарды бир Arduinoдон экинчисине жөнөтүү: 16 кадам
Сандык маалыматтарды бир Arduinoдон экинчисине жөнөтүү: 16 кадам

Video: Сандык маалыматтарды бир Arduinoдон экинчисине жөнөтүү: 16 кадам

Video: Сандык маалыматтарды бир Arduinoдон экинчисине жөнөтүү: 16 кадам
Video: 8 инструментов в Excel, которыми каждый должен уметь пользоваться 2024, Ноябрь
Anonim
Сандык маалыматтарды бир Arduinoдон экинчисине жөнөтүү
Сандык маалыматтарды бир Arduinoдон экинчисине жөнөтүү

Киришүү

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

Сизге качандыр бир сандарды бир Ардуинодон экинчисине жөнөтүү керек беле? Бул көрсөтмө кантип көрсөтөт.

Сиз Serial Monitor терминалына жөнөтүү үчүн бир катар сандарды терүү менен анын иштешин оңой эле текшере аласыз жана сандар экинчи Arduino менен туташкан экинчи Сериялык монитордо кайра кайтып келгенин көрө аласыз. Сиз Bluetooth шилтемесин колдоно аласыз.

Ал эмне кылат

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

Жабдуулар

  • 2 Arduino
  • 2 USB кабели
  • патч зымдары (талапка ылайык)
  • 1 PC/ноутбук Arduino IDE менен жүктөлгөн (Arduino.cc веб -сайтынан бекер жүктөп алууга болот)

1 -кадам: Орнотуу - Аппаратты биринчи орнотуңуз

Орнотуу - Биринчи аппараттык жабдууну орнотуңуз
Орнотуу - Биринчи аппараттык жабдууну орнотуңуз
Орнотуу - Биринчи аппараттык жабдууну орнотуңуз
Орнотуу - Биринчи аппараттык жабдууну орнотуңуз

2 Arduinosту компьютериңиздеги 2 USB портуна сайыңыз.

Кеңеш, кийинчерээк чаташпаш үчүн аларды M жана S (кожоюн жана кул) деп белгилөө жакшы идея (бул жерде 2 сүрөттө көрсөтүлгөндөй).

2 -кадам: Орнотуу - Экранды орнотуу

Орнотуу - Экраныңызды орнотуңуз
Орнотуу - Экраныңызды орнотуңуз

Эң жакшы нерсе - экранды сизде бар кылып орнотуу

  • IDE сол жактагы Master программасы менен жүктөлгөн
  • бул оң жакта Кул менен.

Бул жердеги скриншотто көрсөтүлгөндөй Maser жана Slave сериялык мониторлорун сол жана оң жагында кармаңыз.

3 -кадам: Master Endди орнотуңуз, анан бирге туташыңыз - 1 -бөлүк

Master End орнотуңуз, анан бирге туташыңыз - 1 -бөлүк
Master End орнотуңуз, анан бирге туташыңыз - 1 -бөлүк

Master End сериялык мониторун эки номерди жөнөтүү үчүн койгонуңузда, бул жерде көрүнүп тургандай, сиз ар дайым баштоо жана аяктоо, бөлүү белгилерин жана үтүр бөлгүч белгисин колдонушуңуз керек.

Эми сиз 2 Arduino -ны сериал аркылуу бириктиришиңиз керек. Бул эки жамаачы зым менен жасалат.

Мен жашыл жана сары түстөрдү колдондум

  • Адегенде сары түстү алыңыз, бул бир Arduino D6ге, экинчиси D7ге туташтырылышы керек
  • Андан кийин жашыл зым үчүн карама -каршы, D7 биринчи жана D6 экинчи Arduino боюнча.

Же болбосо, эгерде сизде Bluetooth модулдарынын жуптары сыяктуу жеткиликтүү бир нерсе болсо - HC -05 сыяктуу - булар да сизге жогорудагы зымдарга окшош эффект берүү үчүн иштейт.

4 -кадам: Master Endди орнотуңуз, анан бирге туташыңыз - 2 -бөлүк

Master End орнотуңуз, анан бирге туташыңыз - 2 -бөлүк
Master End орнотуңуз, анан бирге туташыңыз - 2 -бөлүк
Master End орнотуңуз, анан бирге туташыңыз - 2 -бөлүк
Master End орнотуңуз, анан бирге туташыңыз - 2 -бөлүк

Биз Программалык Сериялык китепкананы колдонобуз. Кошумча маалымат бул шилтеме менен жеткиликтүү

Сиз аны программалардын 7-сабында чакырылганын көрө аласыз. Бул санарип 7 жана 6 казыктарын TX жана RX катары конфигурациялайт (берүү жана алуу). Мына ушинтип маалыматтар жаш Ардуинодон Кулга жашыл зым аркылуу өтөт жана экинчи Ардуинодогу Кул программасы өз ишин аяктаганда, кайра сары зым аркылуу өтөт. Ошол эле сүрөттүн асты жагында (Сериялык Монитор терезесинде), биз берген маалыматтар азыр бул жерде сүрөттөлгөн циклди ийгиликтүү айланып өткөнүн көрө аласыз жана жуптар бүтүндөй сандар жакшы бөлүнгөндө кайра ЖКга кайтып келишет.

5 -кадам: Эскиздерге / Программаларга сереп - Программанын структурасы

Эскиздерге / Программаларга сереп - Программанын структурасы
Эскиздерге / Программаларга сереп - Программанын структурасы
Эскиздерге / Программаларга сереп - Программанын структурасы
Эскиздерге / Программаларга сереп - Программанын структурасы

Бардык Arduino эскиздериндей эле 3 негизги бөлүк бар:

  • Декларациялар
  • Орнотуу
  • Башкы Loop

Көбүнчө, биз бул жерде "Функцияларды" кошуу болгон 4 -бөлүмдү колдондук. Эгерде сиз Функцияларды колдонуу менен тааныш болбосоңуз, анда "Arduino функциялары" үчүн Googleга кайрылсаңыз болот жана бул шилтемедеги мисал сыяктуу түшүндүрмө сайттарын таба аласыз: www.tutorialspoint.com/arduino/arduino_functions…..

Биз ошондой эле программаны башкарылуучу блокторго бөлүү үчүн өтмөктөрдү колдондук.

Биз колдонгон үч блокту IDE терезелеринин ар бир иллюстрациясынын жогору жагынан көрүүгө болот:

  • simpleRxTx0330Мастер
  • жалпы
  • ноталар

Бул, чындыгында, программанын папкасынын ичиндеги өзүнчө файлдар, бул Windows Explorerдин Slave программасынын файлдарынын көрүнүшүндө көрүнүп тургандай.

Муну кылганыбыздын абдан жакшы себеби бар.

  • Биз программаны түзүп жатканда, Мастер үчүн программанын көбү Кулга окшош экенин түшүндүк.
  • Биз бардык жалпы бөлүктөрдү "жалпы" деп атаган табулатурага түшүрүү менен аяктадык, андан кийин ар бир бөлүгүн мүчүлүштүктөрдү оңдогондон кийин (аны сынап көрүп, жакшы иштегенине канааттанганбыз) ошол өтмөктүн баарын көчүрүп, чаптап койдук. Мастерден Кулга чейин же виза тескерисинче.
  • Эскертмелер өтмөктөрү да окшош болуп калат, анткени дизайн жалпы.

Функциялардын эч бири орнотуудан чакырылган эмес, бардыгы циклден чакырылган, ошондуктан биз аларды орноткондон кийин, бирок циклден мурун жаратканбыз.

6 -кадам: Жогорудан Дизайн

Эскизди эмне кылгыңыз келгенин аныктоо менен баштап долбоорлоо жакшы идея.

Муну алгандан кийин, сиз эскизди ошол нерселерди жасай баштасаңыз болот. Жалпысынан, эгерде сиз кантип жасоону билбей турган деталдар болсо, аны жөн гана функция кылып, функцияны түзүүнү кийинчерээк калтырыңыз.

Бул CDIO деп аталган көптөгөн университеттерде окутулган жакшы дизайн философиясына ылайык келет (эгер сиз муну билбесеңиз, аны Google аркылуу ачып, аны түшүндүрө турган сайттарды таба аласыз: https://www.cdio.org/s.) Бул негизинен мындай дейт: Дизайнды түшүнүктү так ала электе баштабаңыз. Дизайн түшүнүктүү болмоюнча ишке ашырууну баштабаңыз. Колдонмоңузду так ала электе анын иштешин күтпөңүз. Адегенде C, андан кийин D, I жана O. Ар бир кийинки этапта сиз кайталап турасыз (циклдин (лордун) тегерегине кайтыңыз, андыктан сиз алгачкы Дизайн циклине кайра кубанып, анын Концепцияга дал келгенин текшериңиз жана жаңыртыңыз Эгер керек болсо, С. Ж.б. Программалоо эскиздери менен, эгер сиз жогорудан төмөн дизайнга ээ болсоңуз, ошол эле иштейт.

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 () аппараттык порттон кабыл алуу жана программалык камсыздоо портуна берүү, демек, аларды "hw" же "sw" көрсөтүлгөн параметрлер менен чакыруу.

Алардан тышкары, биз 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) Кул Ардуинодон алуу

Бул бөлүктү бүтүрүү үчүн биз кошкон акыркы бир бөлүгү бар - бул кээ бир мүчүлүштүктөрдү оңдоо кодун кошуу.

Мүчүлүштүктөрдү оңдоо боюнча дагы бир инструкция бар, бул жерде биз эмне кылганыбызды жана эмне үчүн экенин түшүнүү үчүн берилиши мүмкүн. "Ардуинонун эскиздерин иштей электе кантип курууга жана сынап көрүүгө болот" инструкциясын караңыз.

Ошентип, бул мүчүлүштүктөрдү оңдоо линиялары [136-139 көрсөтүлгөн] кийинки циклге негизги циклге кошулат жана мына, сиз аларды мүчүлүштүктөрдү оңдоо жана Compiling (I) кылып текшере аласыз. Сиз Arduino -ны туташтыра аласыз, Жүктөө, Сериялык Мониторду ачуу жана Сериялык Мониторго кайтып келген нерсенин бул жерде көрсөтүлгөндөй экенин текшерүү ("DEBUG MODE" билдирүүсү кошулганын көрүп жатасызбы?)

10 -кадам: Кул Ардуинодо маалыматтарды алуу жана иштетүү

Кул Ардуинодо маалыматтарды алуу жана иштетүү
Кул Ардуинодо маалыматтарды алуу жана иштетүү
Кул Ардуинодо маалыматтарды алуу жана иштетүү
Кул Ардуинодо маалыматтарды алуу жана иштетүү

Кул Ардуинодон алуу

Экинчи канал үчүн керектүү кодду негизги циклге, программалык камсыздоонун сериялык алуучусун көрсөтүлгөндөй кошуңуз - 149дан 155ке чейин.

Сиз структуранын Master иши үчүн жогоруда жазгандарыбызга негизделгенин көрө аласызбы?

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

Маалыматтарды Slave Arduino менен иштетүү

Ардуино үчүн керектүү негизги цикл кодун кошуңуз, эгерде ал көрсөтүлгөндөй кул системасы катары конфигурацияланган болсо - 163-174 -саптар. Анын структурасы биринчи каналдын түзүлүшүнө абдан окшош экенин көрө аласызбы?

Жана бул жолу ал таптакыр сонун жыйнагын табышы керек.

11 -кадам: Алуу функциясын жазыңыз

Алуу функциясын жазыңыз
Алуу функциясын жазыңыз

Алуу функциясы - void recv (char from) {} - эки негизги жумушка ээ.

1 USB каналынан бир катар белгилерди алуу үчүн, жана

2 Arduino каналынан Arduino каналына бирин алуу.

Биринчиси үчүн биз аны колдонушубуз керек, анткени ал Arduino'до орнотулган UART аппаратын колдонот, экинчисинде стандарттык Arduino Library: UART программалык камсыздоону колдонот.

Функцияга кодду кошо баштаганда - жөн гана стубдун ордуна бир нерсе кылган функцияны түзүү үчүн - биз алмаштырып жаткан стубту алып салууну же комментарий берүүнү унутпашыбыз керек. Болбосо, биз компиляция катасын алабыз: 'void lrec (char)' рефинфинициясы.

Аракет кылып, катаны алыңыз, андан кийин андан арылуу үчүн жогоруда сунушталган жолдордун бирин колдонуп көрүңүз.

Сары түстөгү 75тен 88ге чейинки саптарды көрсөткөн функцияга баштаңыз.

Азырынча сиз кодуңуз бар болгондо Compile операциясын колдонушуңуз керек экенин билесиз. Бул сизге мурунку каталар сыяктуу ката кетирет: функция аталышы бул чөйрөдө жарыяланган эмес. Бизге бул катаны түзүүгө уруксат берүү үчүн алгач дагы бир стуб керек болот, андыктан мурункудай кошуп, эми катасыз компиляция ала алаарыңызды текшериңиз.

Эми биз recv () функциясы үчүн жазган кодду карап көрөлү.

Бул абдан таза, сиз жогоруда айтылган функциянын эки бөлүгүн чыгаруу үчүн 'if' шартын колдонууну көрө аласыз.

'Sw' бөлүгүнүн жана 'hw' бөлүгүнүн ичиндеги код бир формада, мен аны бул жерде сүрөттөп берем.

Ар бир учурда жуптардын биринчиси - бул убакыт циклинин башталышы. Эгерде сиз бул убакытты билбесеңиз, анда аны Arduino.cc/Reference сайтынан карап, түшүндүрмөлөрдү жана мисалдарды ала аласыз. Бул жерде "күтөбүз" деп күтөбүз, ал эми курулган "Сериал" функциясы эч кандай тамга (лар) алган жок жана newData өзгөрмөсү өчүрүлгөндүктөн (б.а. newData == жалган шарт туура). Белги - же бир эмес, бир нече белгини алгандан кийин, бул жуптун экинчи сабына "түшөт". Андан кийин recAstringChar (char) чакырылат; учурдагы белгини иштетүү функциясы. Бул жуп сызыктар кезектешип калат (же канча убакытка чейин), дагы деле кабыл алууну талап кылган белгилер бар. Баары бүткөндөн кийин, абал аяктайт, эгерде if кийинки деңгээлге чейин, ал эми өз кезегинде rec (char) уруксат берет; аягына чыгаруу функциясы. Ошентип, азыр толук билдирүү алынды.

12 -кадам: Алуу суб -функциясын жазыңыз - 1 -бөлүк

Receive Sub -функциясын жазыңыз - 1 -бөлүк
Receive Sub -функциясын жазыңыз - 1 -бөлүк
Receive Sub -функциясын жазыңыз - 1 -бөлүк
Receive Sub -функциясын жазыңыз - 1 -бөлүк

Биз азыр recAstringChar (char) деп аталган функцияны жазышыбыз керек;. Сиз комментарийден анын үстүндөгү 50 -сапка карайсыз, анын милдети келген сериялык билдирүүнүн көчүрмөсү менен эки буферди жаңыртуу. [Мунун баарын ишке ашырууга аракет кылып жатканда, мен эки башка буферге муктаж экенимди билдим - же жок дегенде бул кээ бир көйгөйлөрдү чечүүнүн эң оңой жолу, демек, ал 2 буферге муктаж болуп калды. Мен аларды жөн эле жасадым.] Мен бир буферге чалдым: acceptData, экинчиси: receiveChars.

Буферлер глобалдык өзгөрмөлөр, ошондуктан алар модулдун деңгээлинде жарыяланат, жалпы өтмөктүн 9 жана 10 -саптарын караңыз. Бул функциянын ичинде жарыяланган башка өзгөрмөлөр бар, ошондуктан бул жерде 51-54-саптарда көрсөтүлгөн жергиликтүү масштабга ээ. Бул глобалдыктар менен жергиликтүү тургундардын ортосундагы айырмачылыктарды түшүндүрө турган жер эмес, бирок бул жөнүндө көбүрөөк маалымат бар https://www.arduino.cc/glossary/en/ Local and Global.

Дайындардын түрлөрү жана өзгөрткүчтөрү жөнүндө баарын биле аласыз: статикалык, логикалык, байт, const, char https://www.arduino.cc/reference/en/#variables, бул жерде көрсөтүлгөн.

Бул функциядагы негизги программанын агымы бул жердеги 56 -сапта if тарабынан көзөмөлдөнөт, ал эми 74 -сапта башка тиешелүү. Бул эки сценарийди камтыйт

а) [74 -саптан] алынган билдирүү башталганда. Бул startMarker байкалганда болот - бул "<" белгиси катары аныкталган, ошондуктан биз эскизди текшергенде дайыма сапты ошол белгиден баштайбыз. Эгерде биз андай кылбасак, анда эч нерсе кабыл алынбайт, биз "Serial Monitor" клавиатурасынын чакырыгына маанисиз сөздөрдү жазып жаткандай эле, баары эске алынбайт.

б) [56дан 73кө чейинки саптар], алар кандай гана болбосун, башка бардык белгилерди алат, бирок алар жарактуу башталыш болгондон кийин гана белгилер менен иштешет (а '>' адагыдай кабыл алынган).)

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

Функциянын бул бөлүгүндөгү программанын агымы бул жердеги 57 -сапта if тарабынан контролдонот, ал эми ага туура келген башка 65 -сапта. Бул эки сценарийди камтыйт

а) [65 -саптан] алынган билдирүү аяктаганда. Бул endMarker байкалганда болот -> деп аныкталат, ошондуктан биз эскизибизди сынап көргөндө биз дайыма жипибизди ошол мүнөз менен бүтүрөбүз. Акыркы белгини алганда боло турган нерселердин бири-бул глобалдык желек (техникалык жактан өзгөрмөлүү) newData функциянын бүтүшү менен туура коюлгандыгы, ошондуктан биздин субфункцияны чакырган функция (чакыруу функциясы: recv (char);) жарактуу жаңы маалыматтардын толук кабыл алынганын "биле алат".

б) [57ден 64кө чейинки саптар], алар кандай гана болбосун, башка бардык белгилерди алат. Бул аларды эки буфердин катарына тыкан тыкан токтотот.

13 -кадам: Алуу суб -функциясын жазыңыз - 2 -бөлүк

Receive Sub -функциясын жазыңыз - 2 -бөлүк
Receive Sub -функциясын жазыңыз - 2 -бөлүк
Receive Sub -функциясын жазыңыз - 2 -бөлүк
Receive Sub -функциясын жазыңыз - 2 -бөлүк

Бул 2 буфер толтурулганда кандай болгонун мисал келтирүүгө жардам бериши мүмкүн. Эгерде биз кирүүнү киргизе турган болсок, анда буферлерде символдор көрсөтүлмөк:

Эми биз көрө аласыз, бизде биринчи терилген тамгалар менен бирдей буфер бар, жана эки маани жана ажыратуучу үтүр бар бир буфер. Азыр бизде Serial Monitor клавиатурасында терилген символдорду ала турган кээ бир коддор бар, биз CDIO I фазасынан Ого жылып, кээ бир саптарды терип, эмне болуп жатканын көрө алабыз. Кодду Master Arduinoго жүктөңүз, Сериялык Мониторду ачыңыз жана кирүү сыяктуу жарактуу нерсени терип көрүңүз. Сиз Serial Monitor экранында бул жерде көрсөтүлгөндөй жаңырык аласызбы?

14 -кадам: берүү жана анализдөө функцияларын жазыңыз

Берүү жана анализдөө функцияларын жазыңыз
Берүү жана анализдөө функцияларын жазыңыз
Берүү жана анализдөө функцияларын жазыңыз
Берүү жана анализдөө функцияларын жазыңыз

Биринчи берүү үчүн

Эми биз сап алдык, биз берүү функциясын жаза алабыз: tran (char); анын бутагын алмаштыруу. Бул бизге Мастерден Кул Ардуиного сап жөнөтүүгө мүмкүндүк берет, Ошентип, бул жаңы функцияны текшерүү үчүн эки түзмөк тең сайылып, туташтырылганын текшериңиз.

Бул функцияны бул жерде 117ден 133 -сапка чейин көрсөтүлгөндөй киргизиңиз. Белгилүү болгондой, ал эки бөлүктөн турат, бири USB каналына (UART аппараттык), экинчиси Arduino (UART программалык камсыздоо). Бул катаны түзүшү керек. -бекер, жана эскизди дароо жүктөп, эмне болорун көрө аласыз. Бул жолу мен жөнөтөм. Сиз көрсөтүлгөн натыйжаны аласызбы?

Скриншот кызыктуу, анткени Алынган сап… мурдагыдай туура көрүнүшү керек, ал эми Берилген сап … эми туура көрүнүшү керек. Бирок, Integer конверсиясы иштебегенин эске алыңыз. Бул иштөө үчүн дагы бир аз кодду кошуу керек.

15 -кадам: берүү жана анализдөө функцияларын жазыңыз

Берүү жана анализдөө функцияларын жазыңыз
Берүү жана анализдөө функцияларын жазыңыз
Берүү жана анализдөө функцияларын жазыңыз
Берүү жана анализдөө функцияларын жазыңыз

Андан кийин талдоо үчүн

Бул сандык жарым -жартылай саптарды алуу үчүн алынган сапты талдап, аларды бүтүн сандарга айландырган код. Бул боштук parseData (); негизги циклдин функциясы

Талдоо стубун 98 - 113 -саптарда көрсөтүлгөн кодго алмаштырыңыз. Аны жүктөп бериңиз жана 2 бүтүн сан менен болгон көйгөйүбүз эми чечилгенин карап көрөлү. Кел аракет кылалы.

Ооба, ал иштейт, көрсөтүлгөндөй, табылган бүтүн сандар 49 жана 98.

16 -кадам: Финал

Finale!
Finale!

Бул маалыматтар компьютерден Мастер аркылуу кул аркылуу кайра Мастер аркылуу кайра ЖКга айланды. Мастердин жана кулдун учуна жүктөлгөн жалпы версиясы жана мүчүлүштүктөрдү оңдоо режими азыр өчүрүлгөндө, биз бул жерде көрсөтүлгөндөй эки учунда тең туура келген маалыматтарды көрө алабыз.

Сунушталууда: