Sisällysluettelo:

SONIC LED PALAUTE: 7 vaihetta (kuvien kanssa)
SONIC LED PALAUTE: 7 vaihetta (kuvien kanssa)

Video: SONIC LED PALAUTE: 7 vaihetta (kuvien kanssa)

Video: SONIC LED PALAUTE: 7 vaihetta (kuvien kanssa)
Video: Автомобильный кемпинг на горе - тент для палатки и грузовика 2024, Marraskuu
Anonim
SONIC LED PALAUTE
SONIC LED PALAUTE
SONIC LED PALAUTE
SONIC LED PALAUTE
SONIC LED PALAUTE
SONIC LED PALAUTE

Hei taas, Inhoatko, että robotti törmää kaikkeen? Tämä korjaa ongelman. Kahdeksan äänianturin avulla tämä näyttää monimutkaiselta … mutta itse asiassa tein tämän erittäin helpoksi. Yritän lähettää projekteja, jotka auttavat sinua oppimaan Arduinosta ja osoittavat "laatikon ulkopuolella" -konseptin. Tämä viesti auttaa sinua ymmärtämään 595-kytkennän, pro-minit ohjelmoitavana anturina ja reaaliaikaisen led-palautteen suuren käytön. Jos pidät Arduinosta kopioimisena ja liittämisenä ja laajennuksena, voit ohittaa tämän.

Pidän pro-minien käyttämisestä. Ne ovat noin 2,50 dollaria, toimivat täydellisenä unoona ja otsikoiden asentaminen tekee niistä erittäin joustavia. Mikroanturina käytettäessä voit antaa sen "tehdä mitä haluat" sen sijaan, mitä ostettu anturi määrää. Kun I2C käyttää vain 2 johtoa, ne voidaan sitoa yhteen yhdelle riville. Joten siirry MEGA: n yli, minulla voi olla 4 miniä, jotka suorittavat 4 erillistä koodiriviä samanaikaisesti, vain 10,00 dollaria. Täällä käytän miniä äänianalysaattorien ponnahtamiseen 595: n läpi ja reaaliaikaisen led -etäisyyden näyttämiseksi. Jaa sitten vain 8 bittiä dataa emolevyn kanssa. Tämä poistaa kuormituksen emolevystä ja tekee hänen koodistaan erittäin yksinkertaisen.

Äänianturien kanssa on ongelma… ei visuaalista palautetta. Et koskaan tiedä, onko anturi vain omapaino vai toimiva! Uskon, että kuka tahansa, joka on koskaan keksinyt BLINK: n, on älykkäämpi kuin Einstine. Vilkkuminen välittää vain yhden ledin ja tiedon maailman. Joten äänianturi tarvitsee reaaliaikaista palautetta. Tässä käytin joukkoa ledejä jokaisen anturin seurantaan. Et tarvitse niitä, vaan tee anturit ilman led -valoja. Mutta ledien saaminen piirilevylle on hyödyllistä.

Vaihe 1: VALMISTA PCB

VALMISTA PCB
VALMISTA PCB
VALMISTA PCB
VALMISTA PCB
VALMISTA PCB
VALMISTA PCB
VALMISTA PCB
VALMISTA PCB

tehdä PCB ja täyttää. VAROITUS … Tein virheen piirilevyssä 4 -nastaisissa liitännöissä, jotta äänianturit kytketään. ECHO ja TRIGGER Vcc ja perusteet liitettiin piirilevyyn. Liittimille ei ole tarpeeksi tilaa, joten tein juuri piirilevyn pin-out-liittimillä. Joten voit juottaa johdinliittimen piirilevyyn ja kytkeä varsinaisiin ääni -antureihin. Mitä tulee ledeihin, laitoin keltaiset ledit sisäreunaan ja punaiset ulkopuolelle. Tämä auttaa sinua näkemään etäisyydeltä, mittaavatko anturit oikein.

Tämä on yksi harvoista 2side -piirilevyistä, joita olen koskaan tehnyt. Tekisin mieluummin 2 ea yksipuolista ja juoksuhyppääjää. Mutta saadaksesi LED -näytön tarvitset vähintään ylimmän piirilevyn. Erotin asettelun latauksessa.

Piirilevy on tarkoitettu pro-minille, jonka reunan otsikon sisällä on A4-A5. Kummassakin tapauksessa liitä A4-A5 Master A4-A5 -laitteeseen. Älä unohda myöskään Vccia ja Groundsia.

Vaihe 2: MONTA VIKAA

MONTA VIKAA
MONTA VIKAA

Nyt virheistäni… Yritin poputtaa laukaisimet kerralla (kaikki sidottuina yhteen) ja tämä toimi hyvin, mutta joitakin vuorovaikutuksia tapahtui. Joten nyt kaikki ECHOS -laitteet menevät mikroon (8) ja TRIGGERIT on asetettu 595. Kolme lisätappia (3). Ledien osalta multipleksointi ei toimi. Tarvitset täyden ON -ajan jokaiselle ledille. Tämä tarkoittaa, että jokaisella 7 led -rivillä on oltava oma 595. Kun päivität 595: n, ledit palavat seuraavaan päivitykseen asti. Jos LED -valojen multipleksointi syttyy vain kymmenes sekunti. Tämä toimii hyvin lukijoissani ja vaatii erillisen mikron. Ei aikaa 8 äänianturin skannaamiseen ja etäisyyksien mittaamiseen. Yritin ja sain erittäin huonoja tuloksia. Ledien multipleksointi tarkoittaa myös rivin + sarakkeen ruudukkoa ja se tarkoittaa noin 64 + syöttöä PCB: ssä.

Käytin vain 7 lähtöä 595: stä piirilevyn sotkun vuoksi. Etäisyydeltä et voi tietää, onko 7 tai 8 lediä vain niiden liikkeessä. Saatat houkutella sitomaan kaikki ledit yhteen vastukseen, ja tämä toimii, mutta taulukon kirkkaus muuttuu yksinkertaisten ledien määrän mukaan. Joten yksi vastus per led on paras. Rakastan vain 595: tä, mutta jos he vain siirtäisivät Vcc- ja 0-out-nastat tai tekisivät 18-nastaisen IC: n, jossa KAIKKI lähdöt olivat samalla puolella … kaikkien kahdeksan lähdön yhdistäminen olisi niin helppoa. Mutta silloin se ei myisi alle 30 senttiä.

Vaihe 3: ASENNA ANTURIT

ASENNA ANTURIT
ASENNA ANTURIT
ASENNA ANTURIT
ASENNA ANTURIT
ASENNA ANTURIT
ASENNA ANTURIT
ASENNA ANTURIT
ASENNA ANTURIT

Liimaa äänianturit kahvikanteen. urosliitin on taivutettava sisäänpäin kussakin anturissa. Tämä toimii paremmin, jos taivutat tappia kerrallaan. Käytin 2 -puolista vaahtoteippiä, joten tärinä on vähemmän. Anturini ovat liian lähellä ja tarvitsevat 1/4 tuuman tilaa, jotta ne vastaavat paremmin piirilevyä. Olen käyttänyt äänisensoreita aikaisemmin ja joskus yksi epäonnistuu mittaamaan tarkasti, ja sinun on pidettävä tämä mielessä. Älä siis liimaa niitä kaikkia pysyvästi.

Se auttaa myös suorittamaan pikatestin jokaiselle ennen niiden käyttöä. Saan noin yhden anturin, jonka lukema on huono, erässä 20. Ei paha hinta, jonka maksoin.

Vaihe 4: Kova lanka

Kova lanka
Kova lanka

Ajattelin, että tietokoneen ja tietokoneen välillä olisi tilaa liittimille ja pistokkeille

äänimerkit, mutta huone loppui. Joten johdotin kovasti PCB -pään ja tein vain kaiun ja laukaisimen johdot naarasliittimillä (8ea). Sitoin antureiden 8ea Vcc- ja 8ea -perusteet yhteen, joten tämä teki vain 2 liitäntää piirilevylle heille.

8 anturilla ja 8 595: llä uno tai pro-mini EI VOI syöttää virtaa tähän. Tässä projektissa on oltava 5 V: n säädetty lähde. Robotissani on yksinkertainen 7805 @ 1amp paristoista. Tämä koskee kaikkia laitteiden 5 V Vcc: tä. 7805 putoaa noin voltista, joten sen syöttämiseen tarvitaan vähintään 6,5 volttia. Eli kaksi 3,3 voltin litiumakkua. Robotissani on vanhoja nikadejä käytetyistä porapaketeista ja 8 moppaa, jotka käyttävät tyypillistä kiinalaista 12 voltin moottoria 20 dollarin säiliötyyppisessä kotelossa.

Vaihe 5: LATAA SONIC SKETCH

LATAA SONIC SKETCH
LATAA SONIC SKETCH

Lataa luonnos ja asenna. On monia tapoja puhua

toinen uno, mutta pidän I2c: stä. hämmennys on osoitus ja isäntä/ orja. Kuten useimmissa antureissa (ajattele toista miniä anturina), osoitat anturin ja pyydät x tavua. sama juttu täällä. Toisessa minissä varaat x lähetettävän tavun määrän. Sekaannus on, että nimillä ei ole väliä. Se auttaa sinua muistamaan vain, jos jaat nimet. Joten luonnoksessa lähetän 8 äänietäisyyden mittausta senttimetreinä sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Päällikkö saa vain 8 tavua, jos dataa, ja voit soittaa näille tavuille mitä haluat. Luin ne muodossa gotR1, gotR2, got….. Lähetetty tavujen järjestys on sama. Joten tavu A, B, C….. älä usko, että nimen muuttaminen antaa sinulle erilaisia tietoja. Ja toinen saalis, voit vastaanottaa vain tietoja, jotka on kerrottu lähetettäväksi. Joten jos haluat muita tietoja, sinun on vaihdettava sekä isäntä että orja.

Vaihe 6: VIESTINTÄ

VIESTINTÄ
VIESTINTÄ

Voit ohittaa tämän, jos tiedät kuinka asettaa 2 Unoa puhumaan keskenään. Lopussa minulla on muutamia tietoja. Helpottaakseni kutsun robottipohjan M1: n unoa ja äänianturia S2: ksi. Liitä Vcc, ground, A4, A5 toisiinsa.

S2: n luonnoksessa se alkaa #include

Luo sitten lähetettävät 8 tavua. tavu R1, tavu R2, tavu L1 jne. Uno on 8 -bittinen mikro, joten he lähettävät 1 tavun kerrallaan käyttämällä "tavua" "int": n sijasta.

'Setup ()' - kohtaan lisää 'Wire.begin (address)', tämä kertoo I2c: lle, mikä laite tämä on. Osoite on yleensä mikä tahansa haluamasi numero välillä 4 - 200. yhden tavun kokoinen. Tässä käytin numeroa 10. Joten puhuakseni tämän anturin S2 kanssa päällikön on soitettava Wire.requestFrom (10, 8). Tämä on osoite 10 ja 8 on kuinka monta tavua halusi. Lisää myös 'setup ()' kohtaan Wire.onRequest (isr anyName). Kun M1 soittaa pyyntöön, S2 -anturi reagoi keskeytykseen. Tämä vain kutsuu funktiota anyName. Joten tämä anyName -toiminto on luotava. Katso luonnosta ja katso toiminto 'sendThis ()' Tässä tavut todella lähetetään M1: een. Pelkästään tavut menevät, EI nimet ja lähetetty järjestys. Tästä lähtevät lähetettävän datan koko ja määrä. Tässä helpossa tavumuodossa lähetyksen ja vastaanoton pitäisi vastata toisiaan. Tässä 8 tavua lähetetty ja 8 tavua vastaanotettu. Yksi huomautus tässä on kutsua funktio vaatii (). Kuten delay (), millis (), Serial.print (). Kun käytetään ISR (keskeyttää palvelurutiini) -toimintoa, toiminnon kutsuminen häviää (). Joten Wire.onRequest (sendThis) ei Wire.onRequest (sendThis ()).

Minun hämmennykseni oli isäntä/orja -asia. Aluksi ajattelin, että mestari oli AINA mestari. Luonnoksen sisällä voit kuitenkin vaihtaa isäntä/orja pyytääksesi toisilta mikroilta tai lähettääksesi muille mikroille. Niin kauan kuin noudatit yllä kuvattua perusmuotoa. Muista… jaat VAIN määritettyjä tietoja.

Kaksi seinästä irrotettavaa bittiä. Isr -keskeytys keskeyttää vain luonnoslinjojen välillä. Jos olet lukittu silmukkaan "while" tai "for", mitään ei tapahdu ennen kuin silmukka poistuu. EI iso juttu, koska tämä voi kestää muutaman mikrosekunnin ja tiedot ovat vanhoja.

Toinen ongelma on, että mikron "sisällä" on 100% virheetön laskenta. Kaikki "ulkopuolinen" (johdot) viestintä on virheellistä. On monia tapoja tarkistaa, että toimitetut tiedot ovat virheettömiä ja vastaavat lähdettä. Helpoin tapa on tarkistaa summa. Lisää vain lähettävien tavujen kokonaismäärät (todelliset arvot) ja lähetä kokonaissummat ja vastaanottavaan päähän lisää kokonaismäärät ja katso, vastaavatko ne. Jos ne vastaavat ok tai heittävät kyseisen tietojoukon, jos eivät. Tämä edellyttää tietysti kokonaisluvun lähettämistä eikä tavuja. Joten jaat kokonaisluvun HI -tavuksi ja LO -tavuksi ja lähetät erillisinä tavuina. Kokoa sitten vastaanotin.

HELPPO:

int x = 5696; (mikä tahansa kelvollinen int -arvo, enintään 65k tai 32k negatiivinen)

tavu hi = x >> 8; (22)

tavu lo = x; (64)

Lähetä tavut ja yhdistä toisessa päässä….

tavu hi = Wire.read ();

tavu lo = Wire.read ();

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

Vaihe 7: SULJETTU

SULKEMINEN
SULKEMINEN
SULKEMINEN
SULKEMINEN
SULKEMINEN
SULKEMINEN
SULKEMINEN
SULKEMINEN

Lopuksi tämä äänianturi antaa emolevylle raakaetäisyysdatan reaaliajassa. Tämä vapauttaa mikron ja tekee luonnoksesta paljon monimutkaisemman. Mikro voi nyt tehdä hyvän päätöksen hidastaa, kääntää, pysäyttää tai peruuttaa hyvien tietojen perusteella satunnaisten arvausten sijasta. Katso toinen postaukseni Bluetooth -IDE: stä, jotta voit ladata luonnoksia ilman johtoja ja yhdistää robotin koko ajan, jotta luonnoksesi muuttuu nopeasti. Kiitos, että katsoit tämän. oldmaninsc.

Suositeltava: