Mundarija:

SONIC LED fikr -mulohazalari: 7 qadam (rasmlar bilan)
SONIC LED fikr -mulohazalari: 7 qadam (rasmlar bilan)

Video: SONIC LED fikr -mulohazalari: 7 qadam (rasmlar bilan)

Video: SONIC LED fikr -mulohazalari: 7 qadam (rasmlar bilan)
Video: ETIBORNI KUCHAYTIRADIGAN BOSHQOTIRMALAR TO'PLAMI / O'zingni sinab ko'r yangi mantiqiy savol javoblar 2024, Iyul
Anonim
SONIC LED fikr -mulohazalari
SONIC LED fikr -mulohazalari
SONIC LED fikr -mulohazalari
SONIC LED fikr -mulohazalari
SONIC LED fikr -mulohazalari
SONIC LED fikr -mulohazalari

Yana salom, Sizning robotingiz hamma narsaga duch kelganidan nafratlanasizmi? Bu muammoni hal qiladi. 8 ta ovoz sensori bilan bu juda murakkab ko'rinadi … lekin aslida men buni juda oson qildim. Men sizga Arduino haqida bilishga va "qutidan tashqarida" kontseptsiyasini ko'rsatishga yordam beradigan loyihalarni joylashtirishga harakat qilaman. Bu xabar sizga 595 kommutatsiyani, pro-minisni dasturlashtiriladigan sensor sifatida tushunishga va real vaqt rejimida boshqariladigan teskari aloqa ma'lumotlaridan keng foydalanishga yordam beradi. Agar sizga Arduino "nusxa ko'chirish va joylashtirish" sifatida yoqsa, buni o'tkazib yuborishingiz mumkin.

Men pro-minislardan foydalanishni yaxshi ko'raman. Ular taxminan 2,50 dollarni tashkil qiladi, ular to'liq ishlaydilar va sarlavhalarni o'rnatish ularni juda moslashuvchan qiladi. Sensor mikro sifatida ishlatilsa, sotib olingan sensor buyurgani o'rniga "xohlagan narsani qilish" mumkin. Faqat 2 ta sim yordamida I2C bilan ularni bir chiziqda bog'lash mumkin. Shunday qilib, MEGA -ga o'ting, menda 4 ta alohida kodning bir vaqtning o'zida atigi $ 10.00 ishlaydigan 4 ta minis bo'lishi mumkin. Bu erda men 595 orqali sonik sensorlarni ochish va real vaqtdagi masofani ko'rsatish uchun mini -dan foydalanaman. Keyin 8 bitli ma'lumotlarni anakart bilan baham ko'ring. Bu yukni ota -kartadan tushiradi va uning kodini juda oddiy qiladi.

Sonik sensorlar bilan bog'liq muammo bor … vizual javob yo'q. Sensorning o'lik og'irligi yoki ishlayotganini hech qachon bilmaysiz! Men ishonamanki, kim "BLINK" ni o'ylab topgan bo'lsa, u Eynshteyndan aqlli. Faqat ONE olib keldi va ma'lumot dunyosi miltillash bilan uzatiladi. Shunday qilib, sonik sensori real vaqtda mulohazaga muhtoj. Bu erda men har bir sensorni kuzatish uchun bir qator LEDlardan foydalanardim. Siz ularga kerak emas, datchiklarni LEDsiz qiling. Lekin tenglikni LEDda o'rnatish foydali bo'ladi.

1 -qadam: PCB tayyorlang

PCB tayyorlang
PCB tayyorlang
PCB tayyorlang
PCB tayyorlang
PCB tayyorlang
PCB tayyorlang
PCB tayyorlang
PCB tayyorlang

PCB qiling va to'ldiring. OGOHLANTIRISH … Men sonik sensorlar ulanishi uchun 4 ta kontaktli tenglikni tenglamasida xato qildim. ECHO va TRIGGER Vcc va asoslar kompyuterga ulanmoqchi edi. Ulagichlar uchun joy yetarli emas, shuning uchun men PCB-ni pinli chiqindilar bilan yasadim. Shunday qilib, siz simli ulagichni PCB ga lehimlashingiz va haqiqiy sonik sensorlarga ulashingiz mumkin. Ledlarga kelsak, men ichki chetiga sariq, tashqi tomoniga qizil chiroq qo'yaman. bu sensorlar to'g'ri o'lchanayotganini masofadan ko'rishga yordam beradi.

Bu men yaratgan FEW 2side pcb -laridan biri. Men ikkita yakkama -yakka yugurishni afzal ko'raman. Lekin LED displeyni olish uchun sizga hech bo'lmaganda yuqori kompyuter kerak. Men yuklashda tartibni ajratdim.

PCB A4-A5 chekka sarlavhasida joylashgan pro-mini uchun mo'ljallangan. Qanday bo'lmasin, A4-A5-ni Master A4-A5-ga ulang. Vcc va Grounds haqida ham unutmang.

2 -qadam: KO'P XATOLAR

KO'P XATOLAR
KO'P XATOLAR

Xatolarim uchun … Men Triggerlarni birdaniga ochishga harakat qildim (barchasi bir -biriga bog'langan) va bu yaxshi ishladi, lekin ba'zi o'zaro ta'sirlar sodir bo'ldi. Endi hamma ECHOS mikro (8) ga o'tadi va TRIGGERS 595 tomonidan o'rnatiladi. Yana uchta pin (3). Ledlarga kelsak, multipleksatsiya ishlamaydi. Har bir LED uchun to'liq ON vaqti kerak. Bu shuni anglatadiki, 7 ledli har bir qatorda o'z 595 bo'lishi kerak. 595 -ni yangilaganingizdan so'ng, LEDlar keyingi yangilashgacha yonib turadi. Bu erda ko'p sonli lampalar soniyaning o'ndan bir qismigacha faqat chiroqlarni yoritadi. Bu mening o'quvchilarimda yaxshi ishlaydi va unga maxsus mikro kerak. 8 ta sonik sensorni skanerlash va masofani o'lchash uchun vaqt yo'q. Men sinab ko'rdim va juda yomon natijalarga erishdim. Ledlarni ko'paytirish, shuningdek, satr + ustunlar tarmog'ini anglatadi va bu tenglikni tenglamasida 64+ atrofida uzatishni bildiradi.

PCB -dagi tartibsizlik tufayli men 595 -dan atigi 7 ta chiqishdan foydalandim. Masofadan turib, ularning harakati 7 yoki 8 ta chiroq borligini aniqlay olmaysiz. Siz barcha chiroqlarni bitta rezistorga bog'lab qo'yishingiz mumkin va bu ishlaydi, lekin yorug'lik diapazoni yorug'lik oqimining o'zgarishi bilan o'zgaradi. Shunday qilib, bitta chiroq uchun bitta qarshilik eng yaxshisidir. Men 595-ni yaxshi ko'raman, lekin agar ular VC va 0-chiqish pinlarini boshqa joyga ko'chirishsa yoki 18-pinli IC-ni bir tomonda BARCHA chiqishlari bo'lsa … sakkizta chiqishni ulash juda oson bo'lardi. Ammo keyin u 30 sentdan arzonga sotilmasdi.

3 -qadam: SENSORLARNI TUG'ISH

SENSORLARNI TUG'ISH
SENSORLARNI TUG'ISH
SENSORLARNI TUG'ISH
SENSORLARNI TUG'ISH
SENSORLARNI TUG'ISH
SENSORLARNI TUG'ISH
SENSORLARNI TUG'ISH
SENSORLARNI TUG'ISH

Qahva qopqog'iga sonik sensorlarni yopishtiring. erkak uyasi har bir sensorga ichkariga burilgan bo'lishi kerak. Agar siz bir vaqtning o'zida bitta pinni egsangiz, bu yaxshiroq ishlaydi. Men tebranish kamroq bo'lishi uchun 2 ta ko'pikli lentani ishlatardim. Mening sensorlarim juda yaqin va ular tenglikni tenglashtirish uchun 1/4 dyuymli bo'sh joyga muhtoj. Men ilgari sonik sensorlardan foydalanganman, ba'zida esa aniq o'lchab bo'lmaydi va buni yodda tutish kerak. Shuning uchun hammasini abadiy yopishtirmang.

Bundan tashqari, ularni ishlatishdan oldin har birida masofaviy test o'tkazishga yordam beradi. Men 20 ta partiyada yomon o'qilgan bitta sensorni olaman. Men to'lagan narx uchun yomon emas.

4 -qadam: Qattiq tel

Qattiq tel
Qattiq tel

O'ylaymanki, kompyuterdan tortib to rozetkalarga joy bo'lishi mumkin

ovozli pinlar, lekin men xonadan yugurib chiqdim. Shunday qilib, men kompyuterning uchini qattiq sim bilan uladim va faqat ayol uyalari bilan (8ea) aks -sado va tetik simlarini qildim. Men sensorlarning 8ea Vcc va 8ea asoslarini bir -biriga bog'ladim, shuning uchun ular PCB bilan faqat 2 ta aloqa o'rnatdi.

8 ta sensorlar va 8 595s bilan uno yoki pro-mini uni quvvatlantira olmaydi. Ushbu loyiha doirasida 5v tartibga solinadigan manba bo'lishi kerak. Mening robotim batareyalardan oddiy 7805 @ 1ampli. Bu barcha qurilmalar uchun barcha 5V Vcc bilan bog'liq. 7805 voltga yaqin tushadi, shuning uchun uni oziqlantirish uchun kamida 6,5 volt kerak. Bu 3,3V kuchlanishli 2 ta lityum batareya. Mening robotimda ishlatilgan matkaplar to'plamidan eski nikadlar bor va 8 ta nikad odatdagi Xitoyning 12 vattli dvigatelini 20 dollarlik tankli shassida ishlaydi.

5 -qadam: SONIC SKETCHNI YUKLASH

SONIC SKETCHNI YUKLASH
SONIC SKETCHNI YUKLASH

Eskizni yuklab oling va o'rnating. Suhbatlashishning ko'plab usullari mavjud

boshqa uno, lekin menga I2c yoqadi. chalkashlik - bu murojaat va xo'jayin/ qul. Ko'pgina sensorlarda bo'lgani kabi (2 -chi mini -ni sensor deb hisoblang), siz sensorga murojaat qilasiz va x bayt miqdorini so'raysiz. bu erda xuddi shu narsa. Ikkinchi mini -da siz yubormoqchi bo'lgan x bayt miqdorini ajratasiz. Chalkashlik shundaki, ismlar muhim emas. Agar siz ismlarni baham ko'rsangiz, bu sizga eslashga yordam beradi. Shunday qilib, eskizda men 8 sonik masofa o'lchovlarini sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4 sm qilib yuboraman. Ma'lumot bo'lsa, master faqat 8 bayt oladi va siz xohlagan baytlarga qo'ng'iroq qilishingiz mumkin. Men ularni gotR1, gotR2, get kabi o'qidim …… Baytlarning yuborilgan tartibi bir xil. Shunday qilib, bayt A, B, C ….. ismni o'zgartirish sizga har xil ma'lumotlarni beradi deb o'ylamang. Va boshqa tutish, siz faqat yuborilishi aytilgan ma'lumotlarni olishingiz mumkin. Shunday qilib, agar siz boshqa ma'lumotni xohlasangiz, siz ham masterni, ham qulni o'zgartirishingiz kerak.

6 -qadam: ALOQA

ALOQA
ALOQA

Agar siz 2 Uno -ni bir -biri bilan gaplashishni sozlashni bilsangiz, buni o'tkazib yuborishingiz mumkin. Oxirida menda ba'zi ma'lumotlar bor. Buni osonlashtirish uchun men M1 robot bazasidagi uno va S2 sonik sensorini chaqiraman. Vcc, topraklama, A4, A5 ni bir -biriga ulang.

S2 uchun eskizda #include bilan boshlanadi

Keyin yuborish uchun 8 bayt yarating. bayt R1, bayt R2, bayt L1 va boshqalar. Uno - 8 bitli mikro, shuning uchun ular "int" o'rniga "bayt" yordamida bir vaqtning o'zida 1 bayt yuborishadi.

"Setup ()" ga "Wire.begin (manzil)" ni qo'shing, bu I2c -ga bu qaysi qurilma ekanligini bildiradi. Manzil odatda sizga yoqadigan har qanday raqam - 4 - 200. bir bayt kattaligi. Bu erda men 10 raqamidan foydalanardim. Shunday qilib, S2 sensori bilan gaplashish uchun usta Wire.requestFrom (10, 8) ga qo'ng'iroq qilishi kerak. Bu manzil 10 va 8 - qancha bayt kerak. Shuningdek, 'setup ()' ga Wire.onRequest (isr anyName) qo'shing. M1 so'rovni chaqirganda, S2 sensori uzilishga javob beradi. Bu faqat funktsiyani anyName deb ataydi. Shunday qilib, bu anyName funktsiyasini yaratish kerak. Eskizga qarang va 'sendThis ()' funktsiyasini ko'ring, bu erda baytlar M1 ga yuboriladi. Baytlar yolg'iz ketadi va nomlar va yuborilgan tartibda emas. Bu erda yuboriladigan ma'lumotlarning hajmi va miqdori boshlanadi. Bu oson bayt formatida yuborish va qabul qilish mos bo'lishi kerak. Bu erda 8 bayt yuborilgan va 8 bayt qabul qilingan. Bu erda bitta eslatma, funktsiyani chaqirish () ni talab qiladi. Delay (), millis (), Serial.print () kabi. ISR (uzilish xizmati tartibi) ishlatilganda, funksiya chaqirilganda () tushadi. Wire.onRequest (sendThis ()) emas, balki Wire.onRequest (sendThis).

Menda chalkashlik xo'jayin/qul narsasi edi. Avvaliga men xo'jayin har doim usta deb o'yladim. Ammo eskizda siz master/slave -ni boshqa mikrolardan so'rashga yoki boshqa mikrolarga yuborishga o'zgartirishingiz mumkin. Agar siz yuqorida ko'rsatilgan asosiy formatga amal qilsangiz. Esda tutingki, siz faqat tayinlangan ma'lumotlarni almashasiz.

Ikkita devordan uzilgan. Isr uzilishi faqat eskiz chiziqlari orasidagi uzilishlardir. Agar siz "while yoki for" tsiklida qulflangan bo'lsangiz, pastadir chiqmaguncha hech narsa bo'lmaydi. YO'Q gap yo'q, chunki bu bir necha mikrosaniyali bo'lishi mumkin va ma'lumotlar eski.

Boshqa muammo shundaki, "ichkarida" 100% xatosiz hisoblash mavjud. Har qanday "tashqi" (simli) aloqa xatolarga yo'l qo'yiladi. Taqdim etilgan ma'lumotlarning xatosizligini va manbaga mos kelishini tekshirishning ko'plab usullari mavjud. Eng oson yo'li - nazorat yig'indisi. Yuboruvchi baytlarning umumiy miqdorini (haqiqiy qiymatlar) qo'shing va yig'indilarni yuboring, qabul qiluvchining oxiriga esa jamlarni qo'shing va ular mos keladimi -yo'qligini tekshiring. Agar ular mos kelmasa yoki ma'lumotlar to'plamini tashlasa. Albatta, bu bayt emas, balki butun sonni yuborishni o'z ichiga oladi. Shunday qilib, siz butun sonni HI baytiga va LO baytiga ajratasiz va alohida bayt sifatida yuborasiz. Keyin qabul qilgichga qo'ying.

Oson:

int x = 5696; (har qanday haqiqiy int qiymati, maksimal 65k yoki 32k salbiy)

bayt salom = x >> 8; (22)

bayt lo = x; (64)

baytlarni yuboring va boshqa uchida birlashtiring.

bayt salom = Wire.read ();

bayt lo = Wire.read ();

int newx = (salom << 8) + lo; (5696)

7 -qadam: Yopish

Yopish
Yopish
Yopish
Yopish
Yopish
Yopish
Yopish
Yopish

Yopish uchun, bu sonik sensori ona kartaga real vaqt rejimida xom masofani ko'rsatadi. Bu mikrofonni bo'shatadi va eskizni ancha murakkablashtiradi. Endi mikrob tasodifiy taxminlar o'rniga yaxshi ma'lumotlarga asoslanib, sekinlashtirish, burish, to'xtatish yoki orqaga qaytarish to'g'risida yaxshi qaror qabul qilishi mumkin. Eskizlarni simsiz yuklash va eskizni tez o'zgartirish uchun har doim robotni ulash kerak bluetooth IDE haqidagi boshqa xabarimni ko'ring. Buni ko'rganingiz uchun tashakkur. eski

Tavsiya: