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

SONIC LED САНАЛ: 7 алхам (зурагтай)
SONIC LED САНАЛ: 7 алхам (зурагтай)

Видео: SONIC LED САНАЛ: 7 алхам (зурагтай)

Видео: SONIC LED САНАЛ: 7 алхам (зурагтай)
Видео: ОРХИДЕИ В ПУСТОЙ ВАЗЕ - ЛАЙФХАКИ, ТОНКОСТИ И ОШИБКИ СОДЕРЖАНИЯ, ПЕРЕВОДА И ЩАДЯЩЕЙ АДАПТАЦИИ В ОС! 2024, Долдугаар сарын
Anonim
SONIC LED САНАЛ ХЭРЭГ
SONIC LED САНАЛ ХЭРЭГ
SONIC LED САНАЛ ХЭРЭГ
SONIC LED САНАЛ ХЭРЭГ
SONIC LED САНАЛ ХЭРЭГ
SONIC LED САНАЛ ХЭРЭГ

Дахиад сайн уу, Таны робот бүх зүйлтэй таарч байгааг үзэн яддаг уу? Энэ нь энэ асуудлыг шийдэх болно. 8 дууны мэдрэгчтэй бол энэ нь төвөгтэй харагдаж байна … гэхдээ үнэндээ би үүнийг маш хялбар болгосон. Би танд Arduino -ийн талаар сурч, "хайрцагнаас гадуур" үзэл баримтлалыг харуулахад туслах төслүүдийг оруулахыг хичээдэг. Энэхүү бичлэг нь 595 свич, мини програмчлагдах мэдрэгч, бодит цагийн удирдлагатай санал хүсэлтийг маш сайн ашиглахад туслах болно. Хэрэв та Arduino-г 'хуулж буулгах, залгах' дуртай бол үүнийг алгасаж болно.

Би pro-minis ашиглах дуртай. Тэд ойролцоогоор 2.50 долларын үнэтэй, бүрэн утгаараа ажилладаг бөгөөд толгойг суурилуулах нь тэднийг маш уян хатан болгодог. Мэдрэгчийн микро болгон ашигласан бол худалдаж авсан мэдрэгчийн заасны оронд "хүссэн зүйлээ хийх" боломжтой болно. Зөвхөн 2 утас ашиглан I2C -ийн тусламжтайгаар тэдгээрийг нэг мөрөнд холбож болно. Тиймээс MEGA дээгүүр яваарай, би 4 тусдаа кодын 4 мөрийг нэг дор 10,00 доллараар ажиллуулж болно. Энд би мини ашиглан 595 -ээр дууны мэдрэгчийг асааж, бодит цагийн удирдан зайг харуулна. Дараа нь 8bit өгөгдлийг эх хавтантай хуваалцаарай. Энэ нь эх хавтан дээрх ачааллыг бууруулж, кодыг нь маш энгийн болгодог.

Дууны мэдрэгчтэй холбоотой асуудал байна … харааны санал байхгүй байна. Мэдрэгч нь зүгээр л үхсэн жин эсвэл ажиллаж байгаа эсэхийг та хэзээ ч мэдэхгүй! 'BLINK' -ийг гаргаж ирсэн хүн Эйнстинээс ухаантай гэдэгт би итгэдэг. Зүгээр л НЭГ хөтөлж, мэдээллийн ертөнц анивчдаг. Тиймээс sonic мэдрэгч нь бодит цагийн санал хүсэлтийг шаарддаг. Энд би мэдрэгч бүрийг хянахын тулд олон тооны LED -ийг ашигласан. Тэд танд хэрэггүй, мэдрэгчийг ледгүйгээр хий. Гэхдээ ПХБ дээр LED байрлуулах нь ашигтай байдаг.

Алхам 1: ПХБ хийх

ПХБ хийх
ПХБ хийх
ПХБ хийх
ПХБ хийх
ПХБ хийх
ПХБ хийх
ПХБ хийх
ПХБ хийх

ПХБ хийж хүн амаа дүүргэх. АНХААРУУЛГА … Би дууны мэдрэгчийг залгахын тулд 4 зүү холболт дээр ПХБ дээр алдаа гаргав. ECHO болон TRIGGER Vcc болон үндэслэлүүд нь pcb -д залгах гэж байсан. Холбогчдод хангалттай зай байхгүй тул би ПХБ-ийг зүүгээр хийсэн. Тиймээс та ПХБ -д утсан холбогчийг гагнаж, жинхэнэ дууны мэдрэгчийг залгаж болно. Удирдагчдын хувьд би дотроо шар лед, гадна талд нь улаан лед тавьдаг. Энэ нь мэдрэгчийг зөв хэмжиж байгаа эсэхийг алсаас харахад тусална.

Энэ бол миний хийсэн цөөхөн 2 хажуугийн компьютерийн нэг юм. Би ганцаараа 2 тал хийж, харайлт хийхийг илүүд үздэг. Гэхдээ LED дэлгэц авахын тулд танд дор хаяж дээд PCB хэрэгтэй болно. Би татаж авахдаа байршлыг нь салгасан.

ПХБ нь ирмэгийн толгой хэсэгт A4-A5 хэмжээтэй мини-д зориулагдсан. Аль ч тохиолдолд A4-A5-ийг Master A4-A5-тэй холбоно уу. Vcc болон Grounds -ийг бас мартаж болохгүй.

Алхам 2: ОЛОН АЛДАА

ОЛОН АЛДАА
ОЛОН АЛДАА

Алдааныхаа төлөө … Би Triggers -ийг нэг дор оруулахыг оролдсон (бүгд хоорондоо уясан), энэ нь сайн ажилласан боловч зарим харилцан үйлдэл гарсан. Тиймээс одоо бүх ECHOS микро (8) руу очдог бөгөөд TRIGGERS нь 595. Гурван тээглүүр (3) -ээр тохируулагддаг. Ледүүдийн хувьд мултиплекс хийх нь ажиллахгүй болно. Удирдлага бүрийн хувьд танд бүтэн асаах цаг хэрэгтэй. Энэ нь 7 ледийн эгнээ тус бүр өөрийн гэсэн 595 байх ёстой гэсэн үг юм. 595 -ийг шинэчилсний дараа ледүүд дараагийн шинэчлэлт хүртэл асна. Хаана LED -ийг мултиплекс хийх нь зөвхөн аравны нэг секундэд л гэрэлтдэг. Энэ нь миний уншигчдад сайн ажилладаг бөгөөд түүнд зориулагдсан микро хэрэгтэй. 8 дууны мэдрэгчийг сканнердах, зайг хэмжих цаг байхгүй. Би хичээж, маш муу үр дүнд хүрсэн. Ледүүдийг олон талт болгох нь эгнээ + баганын сүлжээ гэсэн үг бөгөөд энэ нь ПХБ -д ойролцоогоор 64+ тэжээл дамжуулах болно гэсэн үг юм.

ПХБ дээр эмх замбараагүй байдлаас болж би 595 -аас ердөө 7 гаралтыг ашигласан. Зөвхөн тэдний хөдөлгөөнөөр 7 эсвэл 8 лед байгаа эсэхийг алсаас нь ялгах боломжгүй юм. Та бүх ледүүдийг нэг резистортой холбохыг хүсч магадгүй, гэхдээ энэ нь ажилладаг, гэхдээ ледийн тооноос хамаарч массивын гэрэлтэлт өөрчлөгддөг. Тиймээс нэг LED тутамд нэг эсэргүүцэл хийх нь хамгийн сайн арга юм. Би зүгээр л 595-т дуртай, гэхдээ хэрэв тэд зүгээр л Vcc ба 0 гаралтын зүүг хөдөлгөж эсвэл нэг талдаа БҮХ гаралттай 18 зүү ic хийвэл … бүх найман гаралтыг холбох нь маш хялбар байх болно. Гэхдээ дараа нь 30 центээс бага үнээр зарагдахгүй.

Алхам 3: Мэдрэгчийг холбоно уу

Мэдрэгчийг холбох
Мэдрэгчийг холбох
Мэдрэгчийг холбох
Мэдрэгчийг холбох
Мэдрэгчийг холбох
Мэдрэгчийг холбох
Мэдрэгчийг холбох
Мэдрэгчийг холбох

Дууны мэдрэгчийг кофены таганд наа. эрэгтэй үүрийг мэдрэгч бүрт дотогш нь нугалах хэрэгтэй. Хэрэв та нэг зүүг нэг удаа нугалбал энэ нь илүү үр дүнтэй байх болно. Би чичиргээ багатай болохоор 2 талын хөөсөн соронзон хальс ашигласан. Миний мэдрэгчүүд хэт ойрхон байгаа бөгөөд ПХБ -тэй илүү сайн нийцэхийн тулд тэдэнд 1/4 инчийн зай хэрэгтэй болно. Би өмнө нь дууны мэдрэгч ашиглаж байсан бөгөөд заримдаа нарийвчлалтай хэмжиж чаддаггүй тул та үүнийг санаж байх хэрэгтэй. Тиймээс бүгдийг нь үүрд наалдуулж болохгүй.

Энэ нь ашиглахаасаа өмнө тус бүр дээр хурдан зайн туршилт хийхэд тусалдаг. Би тааруухан уншдаг нэг мэдрэгчийг 20 ширхэгээр авдаг. Миний төлсөн үнийн хувьд тийм ч муу биш.

Алхам 4: ХАТУУ УТАС

ХАТУУ УТАС
ХАТУУ УТАС

Компьютерээс залгуур руу залгуур, залгуур хийх зай байх болно гэж би бодсон

sonic pins гэхдээ би өрөөнөөс гүйж гарлаа. Тиймээс би pcb -ийн төгсгөлийг хатуу утсаар холбож, зөвхөн эмэгтэй үүрэнд (8ea) цуурай, гох утас хийсэн. Би мэдрэгчийн 8ea Vcc ба 8ea суурийг хооронд нь холбосон тул энэ нь ПХБ -д зөвхөн 2 холболт хийсэн.

8 мэдрэгч, 8 595-ийн тусламжтайгаар uno эсвэл pro-mini нь үүнийг асааж чадахгүй. Энэ төслийн хүрээнд 5V -ийн зохицуулалттай эх үүсвэр байх ёстой. Миний робот нь батерейнаас 7805 @ 1amp энгийн. Энэ нь бүх төхөөрөмжүүдийн 5V Vcc -тэй холбогддог. 7805 нь вольт орчим унадаг тул түүнийг тэжээхэд дор хаяж 6.5 вольт хэрэгтэй. Энэ нь 3.3V хүчдэлтэй 2 литийн батерей юм. Миний робот хуучин өрөмдлөгийн багцаас хуучин никадтай бөгөөд 8 никад нь 20 долларын үнэтэй танкийн явах эд ангитай Хятад улсын 12в хөдөлгүүртэй.

Алхам 5: SONIC SKETCH -ийг ТАТАХ

SONIC SKETCH -ийг ТАТАХ
SONIC SKETCH -ийг ТАТАХ

Ноорогыг татаж аваад суулгана уу. Ярилцах олон арга бий

өөр нэг зүйл, гэхдээ би I2c -т дуртай. төөрөгдөл бол хандлага ба эзэн/ боол юм. Ихэнх мэдрэгчийн нэгэн адил (2 -р мини -г мэдрэгч гэж бодоорой) та мэдрэгч рүү хандаж, x байтын хэмжээг асууна. энд ижил зүйл. 2 -р мини дээр та илгээхийг хүсч буй x байтын хэмжээг хойшлуулав. Төөрөгдөл бол нэр нь хамаагүй. Хэрэв та нэрсийг хуваалцвал энэ нь танд санахад тусална. Ноорог зураг дээр би 8 sonic зайны хэмжилтийг см -ээр sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4 гэж илгээдэг. Хэрэв өгөгдөл байгаа бол мастер ердөө 8 байт авдаг бөгөөд та хүссэн байтаа дуудаж болно. Би тэдгээрийг gotR1, gotR2, got гэж уншсан …. Байтын илгээсэн дараалал ижил байна. Тиймээс байт A, B, C….. нэрийг өөрчилснөөр танд өөр өгөгдөл өгнө гэж битгий бодоорой. Нөгөө нэг зүйл бол та зөвхөн илгээгдсэн өгөгдлийг хүлээн авах боломжтой. Тиймээс, хэрэв та өөр өгөгдөл авахыг хүсч байвал хоёулаа хоёулаа хоёуланг нь өөрчлөх хэрэгтэй.

Алхам 6: ХАРИЛЦАА

ХАРИЛЦАА
ХАРИЛЦАА

Хэрэв та 2 Uno -ийг хоорондоо ярихаар тохируулахаа мэддэг бол үүнийг алгасаж болно. Төгсгөлд нь надад зарим мэдээлэл байна. Үүнийг хялбар болгохын тулд би M1 робот баазын дууны болон дууны мэдрэгчийг S2 гэж нэрлэх болно. Vcc, ground, A4, A5 -ийг хооронд нь холбоно уу.

S2 -ийн ноорог дээр #include гэж эхэлдэг

Дараа нь илгээх 8 байтыг үүсгэнэ үү. байт R1, байт R2, байт L1 гэх мэт. Uno бол 8 битийн бичил биет тул 1 байтыг 'int' биш 'байт' ашиглан илгээдэг нь зөв юм.

'Setup ()' хэсэгт 'Wire.begin (address)' гэж оруулна уу, энэ нь I2c -ийг ямар төхөөрөмж болохыг хэлж өгнө. Хаяг нь ихэвчлэн 4 - 200. нэг байтын хэмжээтэй дуртай тоо юм. Энд би 10 дугаарыг ашигласан. Тиймээс S2 мэдрэгчтэй ярихын тулд мастер Wire.requestFrom (10, 8) руу залгах ёстой. Энэ бол хаяг 10, 8 нь хичнээн байт болохыг хүссэн тоо юм. Мөн 'setup ()' хэсэгт Wire.onRequest (isr anyName) нэмнэ үү. M1 хүсэлтийг дуудахад S2 мэдрэгч нь тасалдалтай хариу үйлдэл үзүүлдэг. Энэ нь зүгээр л функцийг anyName гэж нэрлэдэг. Тиймээс энэ anyName функцийг бий болгох шаардлагатай байна. Ноорогыг хараад 'sendThis ()' функцийг харна уу. Энд байтууд M1 рүү илгээгддэг. Байт дангаараа очдог бөгөөд нэр, илгээсэн дарааллаар нь БИШ. Эндээс илгээх мэдээллийн хэмжээ, хэмжээ эхэлдэг. Байтын энэ хялбар форматаар илгээх ба хүлээн авах нь таарч байх ёстой. Энд 8 байт илгээсэн, 8 байт хүлээн авсан байна. Функцийг дуудах нэг тэмдэглэл бол () шаарддаг. Delay (), millis (), Serial.print () гэх мэт. ISR (тасалдлын үйлчилгээний горим) ашиглах үед функцийг дуудах нь () -ийг унагадаг. Тиймээс Wire.onRequest (sendThis) биш Wire.onRequest (sendThis ()).

Надад байсан төөрөгдөл бол эзэн/боолын асуудал байв. Эхлээд би мастерыг үргэлж Багш гэж боддог байсан. Гэхдээ ноорог дотор та мастер/боолыг өөр микро төхөөрөмжөөс хүсэлт гаргах эсвэл өөр микро руу илгээх боломжтой. Дээр дурдсан үндсэн форматыг дагаж мөрдсөн л бол. Санаж байна уу … Та зөвхөн өгөгдсөн өгөгдлийг хуваалцдаг.

Хананаас хоёр ширхэг цэвэрлэх зүйл. Isr тасалдал нь зөвхөн ноорог шугамын хооронд тасалдаг. Хэрэв та 'while or for' гогцоонд түгжигдсэн бол давталт гарах хүртэл юу ч болохгүй. Энэ нь хэдхэн микросекунд байж болох бөгөөд өгөгдөл нь хуучирсан тул том асуудал биш юм.

Нөгөө нэг асуудал бол "дотор" микро 100% алдаагүй тооцоо байдаг. Аливаа "гаднах" (утас) харилцаа холбоо алдаатай байдаг. Хүргэсэн өгөгдөл алдаагүй, эх сурвалжтай таарч байгаа эсэхийг шалгах олон арга бий. Хамгийн хялбар арга бол хяналтын дүн юм. Илгээж буй байтын нийлбэрийг (бодит утга) нэмж, нийлбэрийг илгээж, хүлээн авагчийн төгсгөлд нийлбэрийг нэмээд таарч байгаа эсэхийг үзээрэй. Хэрэв тэд таарч байвал эсвэл өгөгдлийн багцыг хаяхгүй бол. Мэдээжийн хэрэг, энэ нь байт биш бүхэл тоо илгээдэг. Тиймээс та бүхэл тоог HI байт ба LO байт болгон хувааж, тусдаа байтаар илгээнэ үү. Дараа нь хүлээн авагч дээр тавь.

Хялбар:

int x = 5696; (ямар ч хүчин төгөлдөр int утга, хамгийн их нь 65k эсвэл 32k сөрөг байна)

байт сайн уу = x >> 8; (22)

байт lo = x; (64)

байтуудыг илгээж, өөр төгсгөлд нэгтгэнэ үү.

байт сайн уу = Wire.read ();

байт lo = Wire.read ();

int newx = (сайн уу << 8) + хар; (5696)

Алхам 7: ХААХ

ХААЛТ
ХААЛТ
ХААЛТ
ХААЛТ
ХААЛТ
ХААЛТ
ХААЛТ
ХААЛТ

Үүнийг хаахын тулд энэ дууны мэдрэгч нь эх хавтангийн бодит зайн мэдээллийг бодит цаг хугацаанд өгдөг. Энэ нь микрофоныг чөлөөлж, ноорогыг арай төвөгтэй болгодог. Микро одоо санамсаргүй таамаглалын оронд сайн өгөгдөл дээр үндэслэн удаашруулах, эргүүлэх, зогсоох эсвэл буцаах зөв шийдвэр гаргах боломжтой боллоо. Утасгүй ноорог байршуулах, ноорогоо хурдан өөрчлөхийн тулд роботыг байнга холбох шаардлагатай bluetooth IDE -ийн тухай миний бусад нийтлэлийг үзнэ үү. Үүнийг үзсэнд баярлалаа. Oldmaninsc.

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