Talaan ng mga Nilalaman:

SONIC LED FEEDBACK: 7 Mga Hakbang (na may Mga Larawan)
SONIC LED FEEDBACK: 7 Mga Hakbang (na may Mga Larawan)

Video: SONIC LED FEEDBACK: 7 Mga Hakbang (na may Mga Larawan)

Video: SONIC LED FEEDBACK: 7 Mga Hakbang (na may Mga Larawan)
Video: Beware of sharks... in the pool? 🐟 #shorts #shark #animation 2024, Hulyo
Anonim
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK

Kumusta ulit, Mapoot na ang iyong robot ay tumatakbo sa lahat? Aayusin nito ang problemang iyon. Sa 8 sonic sensor ay mukhang kumplikado ito … ngunit sa totoo lang napakadali ko ito. Sinusubukan kong mag-post ng mga proyekto na makakatulong sa iyong malaman ang tungkol sa Arduino at ipakita ang isang konsepto na 'nasa labas ng kahon'. Tutulungan ka ng post na ito na maunawaan ang 595 paglipat, mga pro-mini bilang isang programmable sensor, at ang mahusay na paggamit ng feedback na pinangunahan ng real time. Kung nasiyahan ka sa Arduino bilang isang 'kopya at i-paste at plug-in' maaari mo lamang itong laktawan.

Gusto kong gumamit ng mga pro-mini. Ang mga ito ay humigit-kumulang na $ 2.50, gumagana bilang isang buong tinatangay ng uno, at ang pag-install ng mga header ay ginagawang napaka-kakayahang umangkop. Ginamit bilang isang sensor micro maaari mo itong gawin 'gawin kung ano ang gusto mo' sa halip na kung ano ang idinidikta ng isang biniling sensor. Sa I2C na gumagamit lamang ng 2 wires maaari silang mai-bind lahat sa isang linya. Kaya lumipat sa MEGA Maaari akong magkaroon ng 4 na mini na tumatakbo sa 4 na magkakahiwalay na mga linya ng code nang sabay, sa $ 10.00 lamang. Dito gumagamit ako ng isang mini upang mai-pop ang mga sonic sensor sa pamamagitan ng isang 595 at ipakita ang realtime led distansya. Pagkatapos ibahagi lamang ang 8bits ng data sa mother board. Inaalis nito ang pagkarga sa ina board at ginagawang napakasimple ng kanyang code.

Mayroong isang problema sa mga sonic sensor … walang visual feedback. Hindi mo malalaman kung ang sensor ay isang patay na timbang lamang o gumagana! Naniniwala ako kung sino ang nagmula sa 'BLINK' na mas matalino kaysa kay Einstine. ISANG pinangunahan lamang at ang isang mundo ng impormasyon ay naipapasa ng kisap-mata. Kaya't ang isang sonic sensor ay nangangailangan ng realtime feedback. Dito ginamit ko ang isang hanay ng mga leds upang subaybayan ang bawat sensor. Hindi mo kailangan ang mga ito, gawin lamang ang mga sensor nang walang mga leds. Ngunit upang magkaroon ng mga leds sa PCB ay kapaki-pakinabang.

Hakbang 1: GUMAWA ng PCB

GUMAWA NG PCB
GUMAWA NG PCB
GUMAWA NG PCB
GUMAWA NG PCB
GUMAWA NG PCB
GUMAWA NG PCB
GUMAWA NG PCB
GUMAWA NG PCB

gumawa ng PCB at punan. Pag-iingat… Nagkamali ako sa PCB sa 4 na koneksyon para sa mga sonik sensor na isaksak. Ang ECHO at TRIGGER Vcc at bakuran ay papasok sa pcb. Walang sapat na silid para sa mga konektor kaya ginawa ko lang ang PCB na may mga pin-out. Kaya maaari kang maghinang ng isang konektor ng wire sa PCB at i-plug sa aktwal na mga sonic sensor. Tulad ng para sa mga leds inilagay ko ang mga dilaw na leds sa loob ng gilid at pula sa labas. tinutulungan ka nitong makita sa malayo kung tama ang pagsukat ng mga sensor.

Ito ang isa sa FEW 2side pcb na nagawa ko. Mas gugustuhin kong gumawa ng 2 ea solong panig at magpatakbo ng jumper. Ngunit upang makuha ang humantong display kailangan mo ng hindi bababa sa nangungunang pcb. Pinaghiwalay ko ang layout sa pag-download.

Ang PCB ay para sa isang pro-mini na may A4-A5 sa loob ng header ng gilid. Alinmang paraan ikonekta lamang ang A4-A5 sa Master A4-A5. Huwag kalimutan ang Vcc at Grounds din.

Hakbang 2: MARAMING MALI

MARAMING MALI
MARAMING MALI

Ngayon para sa aking mga pagkakamali … Sinubukan kong i-pop ang lahat ng Trigger nang sabay-sabay (lahat ay magkatali) at ang sorta na ito ay gumana nang maayos ngunit ang ilang mga pakikipag-ugnayan ay naganap. Kaya ngayon lahat ng ECHOS ay pupunta sa micro (8) at ang mga TRIGGERS ay itinakda ng isang 595. Tatlong iba pang mga pin (3). Tulad ng para sa mga leds, hindi gagana ang multiplexing. Kailangan mo ng isang buong ON oras para sa bawat humantong. Nangangahulugan ito na ang bawat hilera ng 7 leds ay dapat magkaroon ng sarili nitong 595. Kapag na-update mo ang 595, ang mga leds ay mananatiling naiilawan hanggang sa susunod na pag-update. Kung saan multiplexing ang humantong ilaw lamang para sa ikasampu ng isang segundo. Ito ay gumagana nang maayos sa aking mga mambabasa at nangangailangan ito ng isang nakalaang micro. Walang oras para sa pag-scan ng 8 sonic sensor at pagsukat ng distansya. Sinubukan ko at nakakuha ng napakahirap na mga resulta. Ang pag-multiplex ng mga leds ay nangangahulugan din ng isang grid ng row + na haligi at nangangahulugan iyon sa paligid ng 64+ feed throughs sa PCB.

Gumamit lamang ako ng 7 output mula sa 595 dahil sa kalat sa PCB. Sa malayo hindi mo masasabi kung mayroong 7 o 8 leds na galaw lamang nila. Maaari kang matukso na itali ang lahat ng mga leds sa isang solong risistor at ito ay gumagana, ngunit ang ningning ng array ay nagbabago sa dami ng mga leds na lite. Kaya't isang risistor bawat humantong ay pinakamahusay. Gustung-gusto ko lang ang 595 ngunit kung inilipat lamang nila ang Vcc at 0-out na mga pin o gumawa ng 18 pin ic na LAHAT ng mga output sa parehong panig … ang pagkonekta sa lahat ng walong output ay magiging napakadali. Ngunit hindi ito magbebenta ng mas mababa sa 30 cents.

Hakbang 3: MOUNT SENSORS

MOUNT SENSORS
MOUNT SENSORS
MOUNT SENSORS
MOUNT SENSORS
MOUNT SENSORS
MOUNT SENSORS
MOUNT SENSORS
MOUNT SENSORS

Pandikit ang mga sonic sensor sa takip ng kape. ang male jack ay kailangang baluktot sa loob ng bawat sensor. Mas mahusay itong gagana kung yumuko ka ng isang pin nang paisa-isa. Gumamit ako ng 2 side foam tape para lamang mas kaunti ang panginginig ng boses. Masyadong malapit ang aking mga sensor at kailangan nila ng isang 1/4 pulgadang espasyo upang mas mahusay na maitugma ang PCB. Gumamit ako ng mga sonic sensor bago at kung minsan ay nabigo ang isang upang sukatin nang tumpak at kailangan mong tandaan ito. Kaya't huwag silang GLUE nang permanente.

Nakakatulong din ito upang magpatakbo ng isang mabilis na pagsubok sa distansya sa bawat isa bago mo gamitin ang mga ito. Nakukuha ko ang isang sensor na may mahinang pagbabasa sa isang pangkat na 20. Hindi masama sa halagang binayaran ko.

Hakbang 4: HARD WIRE

HARD WIRE
HARD WIRE

Akala ko magkakaroon ng puwang para sa mga jack at plug mula sa PC hanggang sa

sonic pin ngunit tumakbo ako sa labas ng silid. Kaya't matigas kong nag-wire ang pagtatapos ng pcb at gumawa lamang ng echo at pag-trigger ng mga wire sa mga babaeng jacks (8ea). Itinali ko ang 8ea Vcc at 8ea na mga bakuran ng mga sensor kaya't ito ay gumawa lamang ng 2 koneksyon sa PCB para sa kanila.

Na may 8 sensor at 8 595s na isang uno o pro-mini HINDI maaring ipagana ito. Dapat mayroong isang 5v na kinokontrol na mapagkukunan bilang bahagi ng proyektong ito. Ang aking robot ay may isang simpleng 7805 @ 1amp mula sa mga baterya. Nakakonekta ito sa lahat ng 5v Vcc para sa lahat ng mga aparato. ang 7805 ay bumaba tungkol sa isang volt kaya kailangan mo ng hindi bababa sa 6.5 volts upang pakainin ito. Iyon ay 2 mga baterya ng lithium sa 3.3v. Ang aking robot ay may mga lumang nicad mula sa ginamit na mga pack ng drill at 8 na mga nicad ang nagpapatakbo ng tipikal na China na nakatuon sa 12v motor sa $ 20 tank type chassis.

Hakbang 5: I-download ang Sonic SKETCH

I-download ang Sonic SKETCH
I-download ang Sonic SKETCH

I-download ang sketch at i-install. Maraming paraan upang makausap

ibang uno pero gusto ko ng I2c. ang pagkalito ay tinutugunan at master / alipin. Tulad ng karamihan sa mga sensor (isipin ang ika-2 mini bilang isang sensor) tinutugunan mo ang sensor at humingi ng x halaga ng mga byte. parehong bagay dito Sa ika-2 mini na itinabi mo x halaga ng mga byte na nais mong ipadala. Ang pagkalito ay hindi mahalaga ang mga pangalan. Tinutulungan ka lamang nitong tandaan kung ibinabahagi mo ang mga pangalan. Kaya't sa sketch ay ipinapadala ko ang 8 mga sukat ng distansya ng sonik sa cm bilang sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Ang master ay nakakakuha lamang ng 8 bytes kung data at maaari mong tawagan ang mga byte na iyon kahit anong gusto mo. Nabasa ko sila bilang gotR1, gotR2, nakuha….. Ang ipinadala na order ng bytes ay pareho. Kaya byte A, B, C….. huwag isipin sa pamamagitan ng pagbabago ng pangalan ay magbibigay sa iyo ng iba't ibang data. At ang iba pang mga catch, makakatanggap ka lamang ng data na sinabi na ipapadala. Kaya't kung nais mo ng ibang data dapat mong baguhin ang BOTH master at alipin.

Hakbang 6: KOMUNIKASYON

KOMUNIKASYON
KOMUNIKASYON

Maaari mong laktawan ito kung alam mo kung paano i-set up ang 2 Uno upang makausap ang bawat isa. Mayroon akong ilang mga tidbits ng impormasyon sa dulo. Upang gawing madali tatawagin ko ang uno sa base ng robot na M1 at ang sonik sensor bilang S2. Ikonekta ang Vcc, ground, A4, A5 sa bawat isa.

Sa sketch para sa S2 nagsisimula ito sa # isama

Pagkatapos ay likhain ang 8 bytes upang maipadala. byte R1, byte R2, byte L1 atbp. Ang Uno ay isang 8bit micro kaya't nagpapadala sila ng 1byte nang sabay-sabay gamit ang 'byte' sa halip na 'int' ay tama.

Sa 'setup ()' idagdag ang 'Wire.begin (address)' sinasabi nito sa I2c kung aling aparato ito. Ang address ay karaniwang anumang bilang na gusto mo sa pagitan ng 4 - 200. ang laki ng isang byte. Dito ko ginamit ang numero 10. Kaya upang makausap ang sensor na ito S2 dapat tawagan ng master ang Wire.requestFrom (10, 8). Ito ang address 10 at ang 8 ay kung ilan ang gusto ng mga byte. Gayundin sa 'setup ()' idagdag ang Wire.onRequest (isr anyName). Kapag tinawag ng M1 ang kahilingan ang S2 sensor ay tumutugon sa nakagambala. Tinatawag lang nito ang pagpapaandar anyName. Kaya't ang pagpapaandar na anyName na ito ay kailangang likhain. Tingnan ang sketch at tingnan ang pagpapaandar na 'sendThis ()' Dito talaga ipinadala ang mga byte sa M1. Ang mga byte lamang ay pumupunta at HINDI ang mga pangalan at sa order na ipinadala. Dito nagsisimula ang laki at dami ng data upang ipadala. Sa ganitong madaling format ng bytes dapat tumugma ang pagpapadala at pagtanggap. Dito ipinadala ang 8 bytes at natanggap ang 8 bytes. Ang isang tala dito ay pagtawag sa isang pagpapaandar ay nangangailangan ng (). Tulad ng pagkaantala (), millis (), Serial.print (). Kapag gumagamit ng isang ISR (nakagambala na gawain sa serbisyo) na pagtawag sa pagpapaandar ay bumaba ang (). Kaya Wire.onRequest (sendThis) hindi Wire.onRequest (sendThis ()).

Ang pagkalito na mayroon ako ay ang panginoon / alipin na bagay. Sa una akala ko master ang LALAKING master. Ngunit sa loob ng sketch maaari mong ilipat ang master / alipin upang humiling mula sa iba pang mga micros o ipadala sa iba pang mga micros. Hangga't nasunod mo ang pangunahing format na nakabalangkas sa itaas. Tandaan … nagbabahagi ka LANG ng data na naitalaga.

Dalawa sa labas ng dingding. Nakagambala lamang ang isr sa pagitan ng mga linya ng sketch. Kung naka-lock ka sa isang 'habang o para sa' loop, walang nangyayari hanggang sa lumabas ang loop. WALANG malaking deal dahil maaaring ito ay ilang microseconds at ang data ay luma na.

Ang iba pang mga problema ay, 'sa loob' ng isang micro mayroong 100% error libreng pagkalkula. Anumang 'labas' (wires) na komunikasyon ay napapailalim sa mga pagkakamali. Maraming mga paraan upang suriin na ang naihatid na data ay walang error at tumutugma sa pinagmulan. Ang pinakamadaling paraan ay ang pag-checkum. Idagdag lamang ang mga kabuuan ng pagpapadala ng mga byte (aktwal na mga halaga) at ipadala ang mga kabuuan at sa pagtanggap na idagdag ang mga kabuuan at tingnan kung tumutugma ang mga ito. Kung tugma sila ok o itapon ang hanay ng data kung hindi. Siyempre nagsasangkot ito ng pagpapadala ng isang halaga ng integer at hindi mga byte. Kaya't hinati mo lang ang integer sa HI byte at LO byte at ipadala bilang magkakahiwalay na byte. Pagkatapos ay magkakasama sa tatanggap.

MADALI:

int x = 5696; (anumang wastong int halaga, ang max ay 65k o 32k negatibo)

byte hi = x >> 8; (22)

byte lo = x; (64)

ipadala ang mga byte at pagsamahin sa kabilang dulo ….

byte hi = Wire.read ();

byte lo = Wire.read ();

int newx = (hi << 8) + narito; (5696)

Hakbang 7: PAGSARADO

PAGSARA
PAGSARA
PAGSARA
PAGSARA
PAGSARA
PAGSARA
PAGSARA
PAGSARA

Upang isara, ang sonic sensor na ito ay nagbibigay sa board ng ina ng hilaw na data ng distansya sa real time. Pinapalaya nito ang micro at ginagawang mas kumplikado ang sketch. Ang micro ay maaari na ngayong gumawa ng isang mahusay na desisyon na mabagal, lumiko, tumigil, o baligtarin batay sa mahusay na data sa halip na mga random na hula. Tingnan ang aking iba pang post tungkol sa bluetooth IDE upang mag-upload ng mga sketch nang walang mga wire at kinakailangang ikonekta ang iyong robot sa lahat ng oras para sa isang mabilis na pagbabago lamang sa iyong sketch. Salamat sa pagtingin nito. oldmaninsc.

Inirerekumendang: