Përmbajtje:

PERMBLEDHJE SONIC LED: 7 hapa (me fotografi)
PERMBLEDHJE SONIC LED: 7 hapa (me fotografi)

Video: PERMBLEDHJE SONIC LED: 7 hapa (me fotografi)

Video: PERMBLEDHJE SONIC LED: 7 hapa (me fotografi)
Video: ЗЛОДЕИ И ИХ ДЕТИ В ШКОЛЕ! Каждый ЗЛОЙ РОДИТЕЛЬ такой! Родительское собрание 2024, Nëntor
Anonim
PERMBLEDHJE SONIC LED
PERMBLEDHJE SONIC LED
PERMBLEDHJE SONIC LED
PERMBLEDHJE SONIC LED
PERMBLEDHJE SONIC LED
PERMBLEDHJE SONIC LED

Përshëndetje përsëri, E urreni që roboti juaj has në gjithçka? Kjo do ta rregullojë atë problem. Me 8 sensorë zërit kjo duket e komplikuar … por në fakt e bëra këtë shumë lehtë. Unë përpiqem të postoj projekte që ju ndihmojnë të mësoni rreth Arduino dhe të tregoni një koncept 'jashtë kutisë'. Ky postim do t'ju ndihmojë të kuptoni ndërrimin 595, pro-minis si një sensor të programueshëm dhe përdorimin e madh të reagimeve në kohë reale. Nëse ju pëlqen Arduino si një 'kopjoni dhe ngjisni dhe shtoni', thjesht mund ta kaloni këtë.

Më pëlqen të përdor pro-minis. Ato kushtojnë rreth 2.50 dollarë, punojnë si një uno e plotë dhe instalimi i titujve i bën ata shumë fleksibël. Përdorur si një mikro sensor ju mund ta bëni atë 'të bëjë atë që dëshironi' në vend të asaj që dikton një sensor i blerë. Me I2C duke përdorur vetëm 2 tela ato mund të lidhen së bashku të gjitha në një linjë. Pra, lëvizni mbi MEGA unë mund të kem 4 miniera që drejtojnë 4 rreshta të veçantë të kodit të gjithë në të njëjtën kohë, me vetëm 10,00 dollarë. Këtu përdor një mini për të nxjerrë sensorët zanorë përmes një 595 dhe për të treguar distancën e udhëhequr në kohë reale. Pastaj thjesht ndani 8 bit të dhëna me bordin amë. Kjo heq ngarkesën nga bordi amë dhe e bën kodin e saj shumë të thjeshtë.

Ekziston një problem me sensorët e zërit … pa reagime vizuale. Asnjëherë nuk e dini nëse sensori është vetëm një peshë e vdekur apo punon! Unë besoj se kush ka dalë ndonjëherë me 'BLINK' është më i zgjuar se Einstine. Vetëm NJ ONE udhëhequr dhe një botë informacioni transmetohet nga pulsimi. Pra, një sensor zërit ka nevojë për reagime në kohë reale. Këtu kam përdorur një sërë ledsh për të monitoruar secilin sensor. Ju nuk keni nevojë për to, thjesht bëni sensorë pa llamba. Por të kesh udhëzime në PCB është e dobishme.

Hapi 1: B MNI PCB

BAKJ PCB
BAKJ PCB
BAKJ PCB
BAKJ PCB
BAKJ PCB
BAKJ PCB
BAKJ PCB
BAKJ PCB

bëni PCB dhe populloni. KUJDES … Kam bërë një gabim në PCB në lidhjet 4 pin që sensorët zërit të lidhen. ECHO dhe TRIGGER Vcc dhe bazat do të lidheshin me PCB. Nuk ka vend të mjaftueshëm për lidhëset, kështu që unë thjesht bëra PCB me dalje. Kështu që ju mund të lidhni një lidhës teli me PCB dhe të futeni në sensorët e zërit aktual. Sa për leds kam vënë led të verdhë në skajin e brendshëm dhe të kuq në pjesën e jashtme. kjo ju ndihmon të shihni në distancë nëse sensorët janë duke matur saktë.

Ky është një nga disa PCB të dyfishtë që kam bërë ndonjëherë. Unë do të preferoja të bëja 2 ea anë të vetme dhe të vrapoja kërcyesit. Por për të marrë ekranin led ju duhet të paktën PCB -ja e lartë. Unë e ndaja paraqitjen në shkarkim.

PCB është për një mini-pro me A4-A5 brenda kokës së skajit. Sido që të jetë, lidhni A4-A5 me Master A4-A5. Mos harroni edhe Vcc dhe Grounds.

Hapi 2: SHUM gabime

SHUME GABIME
SHUME GABIME

Tani për gabimet e mia … Unë u përpoqa t'i hapja Shkaktarët menjëherë (të gjithë të lidhur së bashku) dhe kjo lloj funksionoi mirë, por disa ndërveprime u zhvilluan. Pra, tani të gjithë ECHOS shkojnë te mikro (8) dhe TRIGGERS janë vendosur nga një 595. Tre kunja të tjerë (3). Sa për leds, multipleximi nuk do të funksionojë. Keni nevojë për një kohë të plotë ON për secilin led. Kjo do të thotë që çdo rresht prej 7 led duhet të ketë 595 -n e vet. Pasi të keni përditësuar 595, led -et qëndrojnë të ndezur deri në përditësimin tjetër. Aty ku multipleximi i led -it ndriçon vetëm atë të dhjetën e sekondës. Kjo funksionon mirë tek lexuesit e mi dhe ka nevojë për një mikro të dedikuar. Nuk ka kohë për skanimin e 8 sensorëve zërit dhe matjen e distancave. Unë u përpoqa dhe mora rezultate shumë të dobëta. Multipleksimi i leds do të thotë gjithashtu një rrjet rresht + kolonë dhe kjo do të thotë rreth 64+ furnizime përmes PCB.

Kam përdorur vetëm 7 dalje nga 595 për shkak të rrëmujës në PCB. Në distancë nuk mund të thuash nëse ka 7 ose 8 led vetëm lëvizjen e tyre. Ju mund të tundoheni t'i lidhni të gjitha ledet me një rezistencë të vetme dhe kjo funksionon, por shkëlqimi i grupit ndryshon me sasinë e leds që janë të lehta. Pra, një rezistencë për led është më e mira. Unë thjesht e dua 595 por nëse ata thjesht lëvizin kunjat Vcc dhe 0-out ose bëjnë një ic 18 pin me të gjitha daljet në të njëjtën anë … lidhja e të tetë daljeve do të ishte aq e lehtë. Por atëherë nuk do të shitej për më pak se 30 cent.

Hapi 3: SENSORT E MONIT

SENSORST E MONIT
SENSORST E MONIT
SENSORST E MONIT
SENSORST E MONIT
SENSORST E MONIT
SENSORST E MONIT
SENSORST E MONIT
SENSORST E MONIT

Ngjitni sensorët e zërit në kapakun e kafesë. priza mashkullore duhet të jetë e përkulur brenda në çdo sensor. Kjo funksionon më mirë nëse përkulni një kunj në të njëjtën kohë. Kam përdorur shirit shkumë 2 anësor vetëm në mënyrë që dridhjet të jenë më pak. Sensorët e mi janë shumë afër dhe ata kanë nevojë për një hapësirë 1/4 inç që të përputhen më mirë me PCB. Unë kam përdorur sensorë zërit më parë dhe ndonjëherë njëri nuk arrin të matë me saktësi dhe ju duhet ta keni parasysh këtë. Pra, mos i ngjisni të gjitha përgjithmonë.

Gjithashtu ju ndihmon të bëni një test të shpejtë në distancë për secilën prej tyre para se t'i përdorni. Unë marr rreth një sensor me një lexim të dobët në një grup prej 20. Jo keq për çmimin që kam paguar.

Hapi 4: TELI I HARDARD

TEL E VARDSHTIR
TEL E VARDSHTIR

Mendova se do të kishte vend për priza dhe priza nga kompjuteri në

kunjat zërit por unë ika nga dhoma. Kështu që unë lidhja me forcë fundin e PCB -së dhe thjesht bëra jehonë dhe fillova telat me prizat femra (8ea). Unë i lidha bazat 8ea Vcc dhe 8ea të sensorëve së bashku kështu që kjo bëri vetëm 2 lidhje me PCB për ta.

Me 8 sensorë dhe 8 595s një uno ose pro-mini NUK mund ta fuqizojë këtë. Duhet të ketë një burim të rregulluar 5v si pjesë e këtij projekti. Roboti im ka një bateri të thjeshtë 7805 @ 1amp. Kjo lidhet me të gjitha 5v Vcc për të gjitha pajisjet. 7805 bie rreth një volt, kështu që keni nevojë për të paktën 6.5 volt për ta ushqyer atë. Kjo është 2 bateri litium në 3.3v. Roboti im ka nikada të vjetra nga paketat e stërvitjeve të përdorura dhe 8 nikada drejtojnë motorin tipik 12v të drejtuar nga Kina në shasinë e tipit tank prej 20 dollarësh.

Hapi 5: SHKARKO SKETCHN SONIKE

SHKARKO SKIS SONIKE
SHKARKO SKIS SONIKE

Shkarkoni skicën dhe instaloni. Ka shumë mënyra për të folur

një uno tjetër por më pëlqen I2c. konfuzioni është adresimi dhe mjeshtri/ skllavi. Ashtu si me shumicën e sensorëve (mendoni për mini -n e dytë si një sensor) ju i drejtoheni sensorit dhe kërkoni x sasi bajtësh. e njejta gje ketu. Në mini -in e dytë ju lini mënjanë x sasinë e bajtëve që dëshironi të dërgoni. Konfuzioni është se emrat nuk kanë rëndësi. Ju ndihmon të mbani mend vetëm nëse ndani emrat. Pra, në skicë dërgoj 8 matjet e distancës zanore në cm si sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Master merr vetëm 8 bytes nëse të dhënat dhe ju mund t'i quani ato byte ashtu siç dëshironi. I lexova si gotR1, gotR2, mori….. Rendi i dërguar i bajtëve është i njëjtë. Pra, byte A, B, C….. mos mendoni se ndryshimi i emrit do t'ju japë të dhëna të ndryshme. Dhe kapja tjetër, ju mund të merrni vetëm të dhëna që thuhet se do të dërgohen. Pra, nëse doni të dhëna të tjera, duhet të ndryshoni të dy master dhe skllevër.

Hapi 6: KOMUNIKIMI

KOMUNIKIMI
KOMUNIKIMI

Ju mund ta kaloni këtë nëse dini se si të vendosni 2 Uno për të folur me njëri -tjetrin. Unë kam disa informacione të vogla në fund. Për ta bërë më të lehtë do të quaj uno në bazën e robotit M1 dhe sensorin zanor si S2. Lidhni Vcc, terren, A4, A5 me njëri -tjetrin.

Në skicën për S2 fillon me #përfshi

Pastaj krijoni 8 bajt për t'u dërguar. bajt R1, bajt R2, bajt L1 etj. Uno është një mikro 8bit kështu që ata dërgojnë 1 bajt në të njëjtën kohë duke përdorur 'bajt' në vend të 'int' është i saktë.

Në 'setup ()' shtoni 'Wire.begin (adresa)' kjo i tregon I2c se cila pajisje është kjo. Adresa është zakonisht çdo numër që ju pëlqen midis 4 - 200. madhësia e një bajti. Këtu kam përdorur numrin 10. Pra, për të folur me këtë sensor S2, mjeshtri duhet të telefonojë Wire. Kërkesën Nga (10, 8). Kjo është adresa 10 dhe 8 është sa bajt të kërkuar. Gjithashtu në 'setup ()' shtoni Wire.onRequest (isr anyName). Kur M1 thërret kërkesën, sensori S2 reagon me ndërprerjen. Kjo thjesht e quan funksionin AnyName. Pra, ky funksion anyName duhet të krijohet. Shikoni skicën dhe shihni funksionin 'sendThis ()' Këtu bajtët dërgohen në të vërtetë në M1. Bajtët shkojnë vetëm dhe JO emrat dhe sipas rendit të dërguar. Këtu fillon madhësia dhe sasia e të dhënave për t'u dërguar. Në këtë format të lehtë të byteve dërgimi dhe marrja duhet të përputhen. Këtu 8 bajt të dërguar dhe 8 bajt të marrë. Një shënim këtu është thirrja e një funksioni kërkon (). Ashtu si vonesa (), millis (), Serial.print (). Kur përdorni një ISR (ndërprerja e shërbimit rutinë) thirrja e funksionit bie (). Pra Wire.onRequest (sendThis) jo Wire.onRequest (sendThis ()).

Konfuzioni që kisha ishte gjëja e zotit/skllavit. Në fillim mendova se mjeshtri ishte GJITHMON mjeshtri. Por brenda skicës mund të ndërroni master/slave për të kërkuar nga mikro të tjerë ose të dërgoni në mikro të tjerë. Për sa kohë që ndiqni formatin bazë të përshkruar më sipër. Mbani mend … ju ndani VETLM të dhënat që janë caktuar.

Dy copa të pastra nga muri. Ndërprerja isr ndërpret vetëm midis linjave të skicimit. Nëse jeni të kyçur në një lak 'while or for', asgjë nuk ndodh derisa laku të dalë. JO punë e madhe pasi kjo mund të jetë disa mikrosekonda dhe të dhënat janë të vjetra.

Problemi tjetër është, 'brenda' mikro ka një llogaritje 100% pa gabime. Çdo komunikim "jashtë" (telave) i nënshtrohet gabimeve. Ka shumë mënyra për të kontrolluar që të dhënat e dhëna janë pa gabime dhe përputhen me burimin. Mënyra më e lehtë është me checksum. Thjesht shtoni totalin e bajtëve dërgues (vlerat aktuale) dhe dërgoni totalin dhe në anën marrëse shtoni totalin dhe shikoni nëse ato përputhen. Nëse përputhen në rregull ose hedhin atë grup të dhënash nëse nuk përputhen. Sigurisht kjo përfshin dërgimin e një vlere të plotë dhe jo bajt. Pra, ju thjesht ndani numrin e plotë në bajt HI dhe LO bajt dhe dërgoni si bajt të veçantë. Pastaj vendoseni së bashku te marrësi.

E lehtë:

int x = 5696; (çdo vlerë e vlefshme int, maksimumi është 65k ose 32k negative)

byte hi = x >> 8; (22)

byte lo = x; (64)

dërgoni bytes dhe kombinoni në anën tjetër….

byte hi = Wire.read ();

byte lo = Wire.read ();

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

Hapi 7: Mbyllja

MBYLLJE
MBYLLJE
MBYLLJE
MBYLLJE
MBYLLJE
MBYLLJE
MBYLLJE
MBYLLJE

Për ta mbyllur, ky sensor zërit i jep bordit amë të dhëna të papërpunuara të distancës në kohë reale. Kjo çliron mikro dhe e bën skicën shumë më pak të komplikuar. Mikro tani mund të marrë një vendim të mirë të ngadalësojë, kthejë, ndalojë ose kthejë në bazë të të dhënave të mira në vend të supozimeve të rastësishme. Shihni postimin tim tjetër në lidhje me bluetooth IDE për të ngarkuar skica pa tela dhe për të pasur nevojë të lidhni robotin tuaj gjatë gjithë kohës për vetëm një ndryshim të shpejtë në skicën tuaj. Faleminderit që e shikuat këtë. oldmaninsc.

Recommended: