Mündəricat:

Bir Arduinodan Digərinə Sayısal Məlumat Göndərin: 16 Addım
Bir Arduinodan Digərinə Sayısal Məlumat Göndərin: 16 Addım

Video: Bir Arduinodan Digərinə Sayısal Məlumat Göndərin: 16 Addım

Video: Bir Arduinodan Digərinə Sayısal Məlumat Göndərin: 16 Addım
Video: Say sistemləri 2024, Iyul
Anonim
Bir Arduinodan Rəqəmsal Məlumat Göndərin
Bir Arduinodan Rəqəmsal Məlumat Göndərin

Giriş

David Palmer, CDIO Tech. Aston Universitetində.

Heç bir nömrəni bir Arduinodan digərinə göndərməyiniz lazım idi? Bu Təlimat necə olduğunu göstərir.

Serial Monitor terminalına göndərmək üçün bir sıra nömrələr yazaraq işlərini asanlıqla test edə bilərsiniz və nömrələrin ikinci Arduino ilə əlaqəli ikinci bir Serial monitorda geri çıxdığını görə bilərsiniz. Bluetooth bağlantısından da istifadə edə bilərsiniz.

Nə edir

İki Arduino proqramının (Arduinoda eskizlər danışır) inkişaf etdirilməsi lazımdır, biri Arduino Serial Monitoru ilə işləyən ana kompüterə qoşulmaq üçün bir Master proqramı, Masterdən serial mesajını almaq, kodunu deşifr etmək və geri göndərmək üçün Slave rolunu oynamaq. Qul, isteğe bağlı olaraq, istifadə etdiyi ikinci bir IDE -nin Serial Monitorunda işlədiyi nömrələri göstərə bilər. İşlərin ilk növbədə işlənməsinə kömək edə bilər və öz tələblərinizə uyğun olaraq proqramlarda hər hansı bir dəyişiklik etmək qərarına gəlsəniz sizə kömək edə bilər.

Avadanlıq

  • 2 Arduino
  • 2 USB çıxışı
  • yamaq telləri (lazım olduqda)
  • Arduino IDE ilə yüklənmiş 1 PC/noutbuk (Arduino.cc saytından pulsuz yüklənə bilər)

Addım 1: Quraşdırma - Əvvəlcə Avadanlığınızı Qurun

Quraşdırma - Əvvəlcə Avadanlığınızı Qurun
Quraşdırma - Əvvəlcə Avadanlığınızı Qurun
Quraşdırma - Əvvəlcə Avadanlığınızı Qurun
Quraşdırma - Əvvəlcə Avadanlığınızı Qurun

2 Arduino -nu kompüterinizdəki 2 USB portuna qoşun.

İpucu, onları M və S (usta və kölə) olaraq etiketləmək yaxşı bir fikirdir ki, sonra qarışıqlığa düşməyəsiniz (2 fotoşəkildə göstərildiyi kimi.)

Addım 2: Quraşdırma - Ekranınızı qurun

Quraşdırma - Ekranınızı qurun
Quraşdırma - Ekranınızı qurun

Ən yaxşısı, ekranınızın olması üçün qurmaqdır

  • solda Master proqramı ilə yüklənmiş IDE və
  • sağdakı Kölə ilə.

Buradakı ekran görüntüsündə göstərildiyi kimi, Maser və Slave üçün Serial Monitörleri sol və sağda saxlayın.

Addım 3: Master Sonunu qurun, Sonra Birlikdə Bağlayın - 1 -ci hissə

Master Sonunu Qurun, Sonra Birlikdə Bağlayın - 1 -ci hissə
Master Sonunu Qurun, Sonra Birlikdə Bağlayın - 1 -ci hissə

Master End Serial Monitorunuzu iki ədəd göndərmək üçün qurduğunuzda, burada gördüyünüz kimi həmişə başlanğıc və son, ayırıcı simvolları və virgül ayırıcı xarakterindən istifadə etməlisiniz.

İndi 2 Arduino -nu serial üzərində birləşdirməlisiniz. Bu iki yamaqlı tel ilə aparılır.

Yaşıl və sarıdan istifadə etdim

  • Əvvəlcə sarı rəng alın, bu bir Arduino -da D6 -ya, ikincisində D7 -yə qoşulmalıdır
  • Sonra yaşıl telin əksi, birinci D7, ikinci Arduino D6.

Alternativ olaraq, HC -05 kimi bir cüt Bluetooth modulu kimi bir şeyiniz varsa - bunlar da yuxarıdakı tellərlə eyni təsiri təmin etməyə çalışacaq.

Addım 4: Master Sonunu Qurun, Sonra Birlikdə Bağlayın - 2 -ci hissə

Master Sonunu Qurun, Sonra Birlikdə Bağlayın - 2 -ci hissə
Master Sonunu Qurun, Sonra Birlikdə Bağlayın - 2 -ci hissə
Master Sonunu Qurun, Sonra Birlikdə Bağlayın - 2 -ci hissə
Master Sonunu Qurun, Sonra Birlikdə Bağlayın - 2 -ci hissə

Proqram Serial kitabxanasından istifadə edirik. Əlavə məlumatı bu linkdən əldə etmək olar

Proqramların hər hansı birinin 7-ci sətrində çağırıldığını görə bilərsiniz. Rəqəmsal 7 və 6 pinlərini TX və RX olaraq konfiqurasiya edir (ötürür və alır). Məlumat, Master Arduino -dan yaşıl tel vasitəsilə Qulun içərisinə gedəcək və ikinci Arduino -dakı Slave proqramı işini bitirdikdən sonra yenidən sarı teldən keçəcəkdir. Eyni təsvirin altındakı (Serial Monitor pəncərəsində) ötürdüyümüz məlumatların indi burada təsvir olunan döngədən uğurla keçdiyini və tam ədədlər cütü gözəl bir şəkildə ayrıldığı üçün yenidən PC -yə qayıtdığını görə bilərsiniz.

Addım 5: Eskizlərə / Proqramlara Baxış - Proqramın Strukturu

Eskizlərə / Proqramlara Baxış - Proqramın Strukturu
Eskizlərə / Proqramlara Baxış - Proqramın Strukturu
Eskizlərə / Proqramlara Baxış - Proqramın Strukturu
Eskizlərə / Proqramlara Baxış - Proqramın Strukturu

Layihə Bütün Arduino eskizlərində olduğu kimi 3 əsas hissədən ibarətdir:

  • Bəyannamələr
  • Quraşdırma
  • Əsas döngə

Tez -tez olduğu kimi, burada 'Funksiyaların' əlavə olunduğu 4 -cü hissədən istifadə etdik. Funksiyalardan istifadə ilə tanış deyilsinizsə, "Arduino funksiyaları" üçün Google -a müraciət edə bilərsiniz və bu linkdəki nümunə kimi izahat saytlarını tapa bilərsiniz: www.tutorialspoint.com/arduino/arduino_functions…..

Proqramı daha idarə olunan bloklara ayırmaq üçün nişanlardan da istifadə etdik.

İstifadə etdiyimiz üç blok yuxarıdakı IDE pəncərələrinin hər bir təsvirinin yuxarı hissəsində görünə bilər:

  • sadəRxTx0330Master
  • ümumi
  • qeydlər

Bunlar əslində proqramın qovluğundakı ayrı fayllardır, bu Slave proqram fayllarının bu Windows Explorer görünüşündə görə bilərsiniz.

Bunu etməyimizin çox yaxşı bir səbəbi var.

  • Proqramı hazırlayarkən başa düşdük ki, Usta proqramının çoxu Qulla eyni idi.
  • Bütün ortaq hissələri "ümumi" adlandırdığımız bir nişana çəkməyi sona çatdırdıq və sonra hər dəfə bir hissəni düzəltdikdə (sınadıqdan sonra yaxşı işlədiyindən məmnun olduq) bütün nişanı kopyalayıb yapışdırdıq Ustadan Quladək, ya da viza.
  • Dizayn ümumi olduğu üçün qeydlər də eyni olur.

Funksiyaların heç biri quraşdırmadan çağırılmır, hamısı loopdan çağırılır, buna görə də onları quraşdırmadan sonra, lakin loopdan əvvəl yaratdıq.

Addım 6: Yuxarıdan aşağıya Dizayn

Eskizinizi nə etmək istədiyinizin tərifi ilə tərtib etmək yaxşı bir fikirdir.

Bunu əldə etdikdən sonra, bu işləri eskiz etməyə başlaya bilərsiniz. Ümumiyyətlə, hələ necə edəcəyinizi bilmədiyiniz bir detal varsa, onu bir funksiya halına gətirin və funksiyanın yaradılmasını daha sonra tərk edin.

Bu, bir çox Universitetdə öyrədilən və CDIO adlanan yaxşı dizayn fəlsəfəsinə uyğundur (Əgər bunu hələ bilmirsinizsə, Google -dan istifadə edərək bunu izah edəcək saytlar tapa bilərsiniz: https://www.cdio.org/s.) Bu, əsasən deyir: Konsepsiyanı aydınlaşdırmadan Dizaynı işə salmayın. Dizaynı aydınlaşdırana qədər Tətbiqə başlamayın. Tətbiqi aydınlaşdırmadan əvvəl onun fəaliyyət göstərəcəyini gözləməyin. Əvvəlcə C, sonra D, I və O. Hər bir sonrakı mərhələdə təkrarlayırsınız (döngə (lər) in arxasına dönün, buna görə də ilk Dizayn döngənizdən məmnun olduqdan sonra yenə də Konsepsiyaya cavab verdiyini yoxlayın və yeniləyin. ehtiyacınız varsa C. və sair, belə ki, Əməliyyat etməli olsanız da, bütün yolları yuxarıya çəkin və yenidən C -nin, sonra D -nin necə göründüyünə baxın və hamısını düzəldin və yoxlayın. Proqramlaşdırma eskizləri ilə yuxarıdan aşağıya tərtib etsəniz bu eyni şəkildə işləyir.

Addım 7: Konsepsiya və Dizayn - 1 -ci hissə

Konsepsiya və Dizayn - 1 -ci hissə
Konsepsiya və Dizayn - 1 -ci hissə
Konsepsiya və Dizayn - 1 -ci hissə
Konsepsiya və Dizayn - 1 -ci hissə

Buradakı Konsepsiya 'qeydlər' sekmesinde qeyd olunan kontur tələblərinə bənzəyir.

Dizayn, qeydlər sekmesine uyğun gələn və bu şəkildə gördüyünüz kimi görünə biləcək bir döngənin erkən bir versiyasına bənzəyə bilər

Şərhləri əvvəlcə döngənin başına kopyalayaraq necə başlamaq istədiyimi görün və sonra bunları edəcək əmrlərlə boşluqları doldurmağa başlayın.

Şəkildə ekranın aşağısında gördüyünüz kimi bu əslində OK tərtib edir. Bu, CDIO D mərhələsindən I-ə çatır və kodu inkişaf etdirdikcə bu D-I döngəsinə davam etmək yaxşı bir fikirdir.

Növbəti mərhələyə keçməyin vaxtı gəldi, orada edəcəyimizi söyləyən bir şərh var: // hardware USB -dən bir şey alacağıq, sonra bunu proqram serial kanalına ötürəcəyik. Bunun baş verməsi üçün bu kodu yazırıq - burada sarı vurgulayıcıda göstərilən 133 - 138 sətirləri

Addım 8: Konsepsiya və Dizayn - 2 -ci hissə

Konsepsiya və Dizayn - 2 -ci hissə
Konsepsiya və Dizayn - 2 -ci hissə
Konsepsiya və Dizayn - 2 -ci hissə
Konsepsiya və Dizayn - 2 -ci hissə

Burada təqdim etdiyimiz iki ilk iki funksiya (recv () və tran () aparat limanından qəbul etməyi və proqram portuna ötürməni yerinə yetirməkdir - bu səbəbdən onları göstərilən 'hw' və ya 'sw' parametrləri ilə çağırırıq.

Onlara əlavə olaraq, newData adlı qlobal bir dəyişən üzərində bir test əlavə etdik. Bu, "void recv ();" funksiyası daxilində quracağımız bir bayraqdır. Mesaj alındıqda bu dəyişən yalandan doğruya işarələnir. Bunu yalnız 134 -cü sətirdə (bayraq == doğru) alınmışsa bir mesaj ötürmək üçün edirik. Və "işimiz bitdi" mesajımızı ötürdükdən sonra 137 -ci sətirdə bayrağı yenidən yalana çeviririk.

Yenə də kompilyasiyanı yoxlaya bilərik (D -dən I -yə) və bu dəfə 'göstərilməmiş' səhv mesajımız var. Bu bizə recv () elan etmədiyimizi söyləyir; funksiyası. Bunu daha sonra etməyi planlaşdırırıq, buna görə də hələlik təmiz bir kompilyasiya əldə etməyimiz üçün, aşağıda göstərildiyi kimi bir kukla və ya yer tutucu funksiyası yaratmalıyıq.

Yenə də kompilyasiyanı yoxlaya bilərik (D -dən I -ə) və bu dəfə tran () üçün başqa 'elan edilməmiş' bir səhv mesajımız var; funksiyası. Bunun üçün oxşar bir kötük yaratmaq lazımdır. Yenə də kompilyasiyanı yoxlaya bilərik (D -dən I -ə) və bu dəfə bu işləri mükəmməl tapacağıq; indiyə qədər çox yaxşıdır.

Addım 9: Əsas döngəni bitirin: A) USB -dən alma, B) Qul Arduino -dan alma

Əsas döngəni bitirin: A) USB -dən alma, B) Slave Arduino -dan alma
Əsas döngəni bitirin: A) USB -dən alma, B) Slave Arduino -dan alma
Əsas döngəni bitirin: A) USB -dən alma, B) Slave Arduino -dan alma
Əsas döngəni bitirin: A) USB -dən alma, B) Slave Arduino -dan alma

Bu hissəni bitirmək üçün əlavə etdiyimiz son bir parça var ki, bu da bəzi ayıklama kodu əlavə etməkdir.

Burada və niyə etdiyimizi başa düşmək üçün istinad edilə bilən eskizləri düzəltmək üçün başqa bir təlimat var. "Arduino eskizləri işləyənə qədər necə qurulacaq və sınaqdan keçiriləcək" təlimatına baxın.

Beləliklə, bu hata ayıklama xətləri [136-139 göstərilir] əsas döngəyə əlavə olunur və budur ki, debug dəyişənini doğru və Kompilyasiya (I) edərək Master sonunda sınaya bilərsiniz. Arduino bağlaya bilərsiniz, Yükləyə, Serial Monitoru aça və Serial Monitora geri gələnlərin burada göstərildiyi kimi olub olmadığını görə bilərsiniz ("DEBUG MODE" mesajının əlavə olunduğunu görürsünüzmü?)

Addım 10: Slave Arduino -da Məlumatların Alınması və İşlənməsi

Slave Arduino -da Məlumatların Alınması və İşlənməsi
Slave Arduino -da Məlumatların Alınması və İşlənməsi
Slave Arduino -da Məlumatların Alınması və İşlənməsi
Slave Arduino -da Məlumatların Alınması və İşlənməsi

Qul Arduinodan qəbul

İkinci kanal üçün lazım olan kodu əsas döngəyə, proqram serial qəbuledicisini göstərildiyi kimi əlavə edin - 149-155 sətirləri.

Quruluşun yuxarıda Master işi üçün yazdıqlarımıza əsaslandığını görə bilərsinizmi?

Ayrıca bir kompilyator xətası, başqa bir elan edilməmiş bir funksiya aldığımızı görəcəksiniz - bu dəfə parseData (); - buna görə də səhvsiz bir test tərtibini işə salmadan əvvəl bunun üçün də bir qaralama hazırlamalıyıq.

Slave Arduino -da məlumatların işlənməsi

Arduino, göstərildiyi kimi bir Slave cihazı olaraq konfiqurasiya olunarsa, lazım olan əsas loop kodunu əlavə edin - 163 -dən 174 -ə qədər xətlər. Onun quruluşunun birinci kanalın quruluşuna çox bənzədiyini görə bilərsinizmi?

Və bu dəfə tamamilə yaxşı tərtib etdiyini tapmalısan.

Addım 11: Qəbul etmə funksiyasını yazın

Qəbul funksiyasını yazın
Qəbul funksiyasını yazın

Qəbul funksiyası - void recv (char from) {} - iki əsas işdən ibarətdir.

USB kanalından bir simvol simvolu almaq üçün 1 və

2 Arduino -dan Arduino kanalına birini almaq üçün.

Birincisi üçün istifadə etməliyik, çünki Arduino'nun qurğusunda quraşdırılmış UART, ikincisi üçün standart Arduino Kitabxanası: proqram UART istifadə edir.

Bir funksiyaya kod əlavə etməyə başladıqda - sadəcə bir kötük yerinə bir şey edən bir funksiya yaratmaq üçün - dəyişdirdiyi kötükləri silməyi və ya şərh etməyi unutmamalıyıq. Əks təqdirdə bir kompilyasiya xətası alırıq: 'void lrec (char)' yenidən.

Səhv etməyə çalışın və sonra ondan qurtulmaq üçün yuxarıda təklif olunan yollardan birini sınayın.

Sarı rəngdə 75-88 -ci sətirlərdə göstərdiyimizə bənzəyən bir funksiya ilə başlayın.

İndiyə qədər bilirsiniz ki, koda sahib olmaq üçün Kompilyasiya əməliyyatını sınamalısınız. Daha əvvəl etdiyimiz kimi, bu sahədə elan edilməyən bir növ səhv alır: Bu səhvdən keçmişi tərtib etməyimiz üçün əvvəlcə başqa bir saplamaya ehtiyacımız olacaq, buna görə əvvəlki kimi əlavə edin və indi səhvsiz bir kompilyasiya əldə edə biləcəyinizə əmin olun.

İndi recv () funksiyası üçün yazdığımız kodu nəzərdən keçirək.

Olduqca təmizdir, yuxarıda göstərilən funksiyanın iki hissəsini çıxarmaq üçün 'if' şərtinin istifadəsini görə bilərsiniz.

'Sw' hissəsinin və 'hw' hissəsinin içindəki kod eyni formadadır və burada təsvir edəcəyəm.

Hər vəziyyətdə bir cüt xəttin birincisi, bir müddət döngəsinin başlanğıcıdır. While ilə tanış deyilsinizsə, izahat və nümunələr üçün Arduino.cc/Reference saytına baxa bilərsiniz. Burada 'daxili' Serial 'funksiyası heç bir xarakter (lər) almadığını və newData dəyişəninin söndürüldüyünü (yəni newData == yanlış şərt doğrudur) gözləyirik. Bir xarakter - və ya birdən çox xarakter alındıqda, bu cütlükdəki ikinci sətrə "düşəcək". Bundan sonra recAstringChar (char) çağırılacaq; cari xarakteri idarə etmək funksiyası. Bu cərgələr daha sonra qəbul edilməsini tələb edən hər hansı bir simvol olduqda (və ya uzun müddət) alternativ olacaq. Hamısı tamamlandıqda, vəziyyət sona çatır, if və ya başqa bir səviyyənin sona çatmasına icazə verilir və öz növbəsində rec (char) icazə verilir; sona çatdırmaq funksiyası. Beləliklə, artıq tam bir mesaj alındı.

Addım 12: Alma alt funksiyasını yazın - 1 -ci hissə

Alma alt funksiyasını yazın - 1 -ci hissə
Alma alt funksiyasını yazın - 1 -ci hissə
Alma alt funksiyasını yazın - 1 -ci hissə
Alma alt funksiyasını yazın - 1 -ci hissə

İndi recAstringChar (char) adlı funksiyanı yazmalıyıq;. 50 -ci sətrin yuxarı hissəsindəki şərhdən görürsünüz ki, işi gələn serial mesajının surətləri ilə iki buferi yeniləməkdir. [Hamısını işə salmağa çalışarkən məlum oldu ki, öyrəndiyim bir şey iki fərqli tampona ehtiyacım olduğunu - və ya heç olmasa bəzi problemləri həll etməyin ən asan yoludur, buna görə də 2 tampon ehtiyacına çevrildi. Sadəcə onları düzəltdim.] Bir tamponu çağırdım: aldıData, digəri isə: qabul edilmişChars.

Tamponlar qlobal dəyişənlərdir, buna görə modul səviyyəsində elan olunur, ümumi nişanın 9 və 10 -cu sətirlərinə baxın. Bu funksiyanın daxilində elan edilmiş digər dəyişənlər var ki, bu səbəbdən burada 51-54-cü sətirlərdə göstərilən yerli sahəyə malikdir. Bu, qlobal və yerli əhali arasındakı fərqləri izah etmək üçün bir yer deyil, ancaq bu barədə daha çox məlumatı https://www.arduino.cc/glossary/en/ Yerli və Qlobal altında tapa bilərsiniz.

Məlumat növləri və növ dəyişdiriciləri haqqında hər şeyi öyrənə bilərsiniz: statik, boolean, byte, const, char burada göstərilən

Bu funksiyadakı əsas proqram axını burada 56 -cı sətirdə if və 74 -cü sətirdə ona uyğun olanı tərəfindən idarə olunur. Bu iki ssenari ilə əlaqədardır

a) Alınan mesaj başlayanda [74 -cü sətirdən]. Bu startMarker görüldükdə baş verir - bu '<' xarakteri olaraq təyin edilmişdir, buna görə də eskizi sınayanda hər zaman simlimizi həmin xarakterlə başlayırıq. Bunu etməsək, heç bir şey alındığı kimi işlənməyəcək, 'Serial Monitor' klaviatura istəyinə cəfəngiyat yazdığımız kimi hamısı nəzərə alınmayacaq.

b) bütün digər simvolları, nə olursa olsun, qəbul edən [ancaq 56 -dan 73 -ə qədər sətirlər], ancaq simvollarla yalnız etibarlı bir başlanğıc baş verdikdən sonra məşğul olurlar (a '>' a -da olduğu kimi alınmışdır.)

Bu sətirlərdə (74 -dən 78 -ə qədər) alınan <tamponlardan birinə (alınanDatalar [0]) qoyuruq, digərində yox. Tampon göstəricisini (dəyişən: char ndx) ndx ++ xəttindəki artımdan sonrakı əmrdən (++) istifadə edərək növbəti ehtiyat tampon mövqeyinə (alınanData [1]) işarə etmək üçün düzəldirik; və davam edən bayrağı doğru olaraq təyin edirik.

Funksiyanın bu hissəsindəki proqram axını burada 57 -ci sətirdə if və 65 -ci sətirdə ona uyğun olan başqa tərəfindən idarə olunur. Bu iki ssenari ilə əlaqədardır

a) Alınan mesaj bitdikdə [65 -ci sətirdən]. Bu, endMarker ləkələnəndə baş verir -> olaraq təyin olunur, buna görə də eskizimizi sınayanda hər zaman simlimizi həmin xarakterlə bitiririk. Son xarakter alındıqda baş verənlərdən biri, qlobal bayrağın (texniki olaraq dəyişkən) yeni Məlumatın, funksiyanın bitdiyi kimi doğru olaraq təyin edilməsidir ki, alt funksiyamızı çağıran funksiya (zəng funksiyası: recv (char);) etibarlı yeni məlumatların tamamlandığını 'bilə bilər'.

b) [digər sətirlərdən 57 -dən 64 -ə qədər] nə olursa olsun. Bu, hər iki tamponda onları cərgələrdə səliqəli şəkildə park edir.

Addım 13: Alma alt funksiyasını yazın - 2 -ci hissə

Alma alt funksiyasını yazın - 2 -ci hissə
Alma alt funksiyasını yazın - 2 -ci hissə
Alma alt funksiyasını yazın - 2 -ci hissə
Alma alt funksiyasını yazın - 2 -ci hissə

2 tamponun doldurulduqda necə göründüyünə bir nümunə verməyə kömək edə bilər. Enter daxil etsək, tamponlarda simvollar göstəriləcək:

Beləliklə, indi ilk yazdığımız kimi eyni simvol olan bir buferə və yalnız iki dəyərə və ayırıcı vergülə sahib olan bir tamponumuz olduğunu görə bilərsiniz. İndi Serial Monitor klaviaturasında yazdığımız simvolları ala biləcək bir kodumuz var, bəzi sətirləri yazaraq nə olduğunu görmək üçün CDIO I mərhələsindən O-ya keçə bilərik. Kodu Arduino Master -a yükləyin, Serial Monitoru açın və daxil etmək kimi etibarlı bir şey yazmağa çalışın. Serial Monitor ekranında burada göstərilən kimi bir əks -səda alırsınızmı?

Addım 14: Göndərmə və Təhlil Funksiyalarını yazın

Göndərmə və təhlil funksiyalarını yazın
Göndərmə və təhlil funksiyalarını yazın
Göndərmə və təhlil funksiyalarını yazın
Göndərmə və təhlil funksiyalarını yazın

Əvvəlcə ötürmə üçün

İndi bir sim aldıq, ötürmə funksiyasını yaza bilərik: tran (char); sapını dəyişdirmək üçün. Bu, Ustadan Slave Arduinoya bir sim göndərməyimizə imkan verəcək.

Bu yeni funksiyanı sınamaq üçün hər iki cihazın qoşulduğundan və birlikdə bağlandığından əmin olun.

Bu funksiyanı 117 ilə 133 -cü sətirlərdə göstərildiyi kimi daxil edin. Bildiyiniz kimi, biri USB kanalına (hardware UART) ötürmək üçün, biri də digər Arduino -ya (proqram UART.) Ötürmək üçün iki hissədən ibarətdir. -Pulsuz və eskizi dərhal yükləyib nə baş verdiyini görə bilərsiniz. Bu dəfə göndərəcəyəm. Göstərilən nəticəni əldə edirsiniz?

Ekran görüntüsü maraqlıdır, çünki Alınan sim… əvvəlki kimi düzgün görünməlidir və Göndərilən sətir… indi düzgün görünməlidir. Ancaq unutmayın ki, Integer dönüşüm işləməyib. Bunun işləməsi üçün əlavə etmək üçün hələ bir az daha kod var.

Addım 15: Göndərmə və Təhlil Funksiyalarını yazın

Göndərmə və təhlil funksiyalarını yazın
Göndərmə və təhlil funksiyalarını yazın
Göndərmə və təhlil funksiyalarını yazın
Göndərmə və təhlil funksiyalarını yazın

Sonra təhlil üçün

Bu, sayısal sətirləri çıxarmaq üçün alınan sətri təhlil edən və onları tam ədədlərə çevirən bir kod parçasıdır. Bu boş parseData (); əsas döngənin funksiyası

Ayrıştırma kötüyünü 98 - 113 sətirlərində göstərilən kodla əvəz edin. Yükləyin və 2 tam ədəd ilə yaşadığımız problemin artıq həll olunduğunu görək. Gəlin cəhd edək.

Bəli, işləyir, göstərildiyi kimi tapılan tam ədədlər 49 və 98 -dir.

Addım 16: Final

Final!
Final!

Bu məlumatlar PC -dən Master -dən qula və Master -dən yenidən PC -yə döndü. Həm Master, həm də slave uclarına yüklənmiş ümumi versiyanın bitmiş versiyası ilə və hazırda debug rejimi söndürüldükdə, burada göstərildiyi kimi hər iki ucunda düzgün şəkildə alınan məlumatları görə bilirik.

Tövsiyə: