Turinys:

SONIC LED PAGALBA: 7 žingsniai (su paveikslėliais)
SONIC LED PAGALBA: 7 žingsniai (su paveikslėliais)

Video: SONIC LED PAGALBA: 7 žingsniai (su paveikslėliais)

Video: SONIC LED PAGALBA: 7 žingsniai (su paveikslėliais)
Video: Nedaug žmonių žino apie šią PHONE funkciją! 2024, Liepa
Anonim
„SONIC LED“PAGALBA
„SONIC LED“PAGALBA
„SONIC LED“PAGALBA
„SONIC LED“PAGALBA
„SONIC LED“PAGALBA
„SONIC LED“PAGALBA

Sveiki dar sykį, Nekenčiate, kad jūsų robotas susiduria su viskuo? Tai išspręs šią problemą. Su 8 garso jutikliais tai atrodo sudėtinga … bet iš tikrųjų tai padariau labai lengvai. Stengiuosi paskelbti projektus, padedančius jums sužinoti apie „Arduino“ir parodyti „už dėžutės“koncepciją. Šis įrašas padės jums suprasti 595 perjungimą, pro-minis kaip programuojamą jutiklį ir didelį realaus laiko vadovaujamų atsiliepimų naudojimą. Jei jums patinka „Arduino“kaip „kopijuoti ir įklijuoti ir papildyti“, galite tiesiog praleisti tai.

Man patinka naudoti pro-minis. Jie kainuoja apie 2,50 USD, jie veikia kaip visiškai išpūsti, o įdiegę antraštes jie tampa labai lankstūs. Naudojamas kaip mikro jutiklis, jūs galite daryti tai, ką norite, o ne tai, ką nurodo įsigytas jutiklis. Naudojant I2C, naudojant tik 2 laidus, juos galima sujungti vienoje linijoje. Taigi pereikite prie MEGA, aš galiu turėti 4 mini, kurie vienu metu veikia 4 atskiras kodo eilutes, tik už 10,00 USD. Čia aš naudoju mini, norėdamas perkelti garsinius jutiklius per 595 ir parodyti atstumą realiuoju laiku. Tada tiesiog bendrinkite 8 bitų duomenis su pagrindine plokšte. Tai pašalina pagrindinės plokštės apkrovą ir labai supaprastina jos kodą.

Yra garso jutiklių problema … nėra vizualinio grįžtamojo ryšio. Jūs niekada nežinote, ar jutiklis yra tik tuščias svoris, ar veikia! Manau, kad kas nors sugalvojo „BLINK“yra protingesnis už „Einstine“. Mirksi tik VIENAS šviesos diodas ir informacijos pasaulis. Taigi garso jutikliui reikia realaus laiko grįžtamojo ryšio. Čia aš naudoju daugybę šviesos diodų, kad galėčiau stebėti kiekvieną jutiklį. Jums jų nereikia, tiesiog darykite jutiklius be šviesos diodų. Tačiau turėti šviesos diodų ant PCB yra naudinga.

1 žingsnis: PADARYKITE PCB

PADARYTI PCB
PADARYTI PCB
PADARYTI PCB
PADARYTI PCB
PADARYTI PCB
PADARYTI PCB
PADARYTI PCB
PADARYTI PCB

padaryti PCB ir užpildyti. ATSARGIAI … Aš padariau klaidą PCB prie 4 kontaktų jungčių, kad garso jutikliai būtų prijungti. „ECHO“ir „TRIGGER Vcc“ir pagrindai buvo prijungti prie PCB. Nepakanka vietos jungtims, todėl ką tik padariau PCB su kaiščiais. Taigi galite lituoti laidinę jungtį prie PCB ir prijungti prie tikrųjų garso jutiklių. Kalbant apie šviesos diodus, vidiniame krašte įdėjau geltonus, išorėje - raudonus. tai padeda matyti atstumu, ar jutikliai teisingai matuoja.

Tai yra vienas iš DAUGIAU 2side PCB, kuriuos aš kada nors padariau. Aš verčiau padaryti 2 ea vienpusį ir bėgti džemperius. Tačiau norint gauti LED ekraną, jums reikia bent viršutinės plokštės. Atsisiųsdavau atsisiuntimo išdėstymą.

PCB skirta „pro-mini“su A4-A5 kraštų antraštės viduje. Bet kuriuo atveju tiesiog prijunkite A4-A5 prie pagrindinio A4-A5. Nepamirškite ir Vcc ir Ground.

2 žingsnis: daug klaidų

DAUG KLAIDŲ
DAUG KLAIDŲ

Dabar dėl savo klaidų … Aš bandžiau paleisti „Triggers“iš karto (visi susieti) ir tai gerai veikė, tačiau įvyko tam tikra sąveika. Taigi dabar visi ECHOS eina į mikro (8), o TRIGGERIAI yra nustatyti 595. Dar trys kaiščiai (3). Kalbant apie šviesos diodus, multipleksavimas neveiks. Kiekvienam vedliui reikia viso įjungimo laiko. Tai reiškia, kad kiekviena 7 šviesos diodų eilutė turi turėti savo 595. Kai atnaujinsite 595 lemputes, jos degs iki kito atnaujinimo. Kai šviesos diodų multipleksavimas dega tik tą dešimtąją sekundę. Tai gerai veikia mano skaitytojams ir jam reikia specialaus mikro. Ne laikas nuskaityti 8 garso jutiklius ir išmatuoti atstumus. Bandžiau ir gavau labai prastus rezultatus. Šviesos diodų multipleksavimas taip pat reiškia eilutės ir stulpelio tinklelį, o tai reiškia, kad apie 64 ir daugiau tiekimo per PCB.

Aš naudoju tik 7 išėjimus iš 595 dėl netvarkos PCB. Per atstumą jūs negalite pasakyti, ar yra 7 ar 8 šviesos diodai, tik jų judėjimas. Jums gali kilti pagunda susieti visus šviesos diodus su vienu rezistoriumi ir tai veikia, tačiau masyvo ryškumas keičiasi atsižvelgiant į paprastų šviesos diodų skaičių. Taigi vienas rezistorius vienam šviesos diodui yra geriausias. Aš tiesiog myliu 595, bet jei jie tiesiog perkeltų „Vcc“ir „0-out“kaiščius arba padarytų 18 kontaktų ic su visais išėjimais toje pačioje pusėje … prijungti visus aštuonis išėjimus būtų taip paprasta. Bet tada jis nebūtų parduodamas už mažiau nei 30 centų.

3 žingsnis: MONTAVIMO JUTIKLIAI

MONTAVIMO JUTIKLIAI
MONTAVIMO JUTIKLIAI
MONTAVIMO JUTIKLIAI
MONTAVIMO JUTIKLIAI
MONTAVIMO JUTIKLIAI
MONTAVIMO JUTIKLIAI
MONTAVIMO JUTIKLIAI
MONTAVIMO JUTIKLIAI

Klijuokite garso jutiklius prie kavos dangtelio. lizdas turi būti sulenktas į vidų ant kiekvieno jutiklio. Tai veikia geriau, jei sulenkite vieną kaištį vienu metu. Aš naudoju 2 šonines putų juostas, kad vibracija būtų mažesnė. Mano jutikliai yra per arti ir jiems reikia 1/4 colio vietos, kad jie geriau atitiktų PCB. Aš anksčiau naudoju garsinius jutiklius, o kartais nepavyksta tiksliai išmatuoti, ir jūs turite tai nepamiršti. Taigi neklijuokite jų visam laikui.

Tai taip pat padeda atlikti greitą kiekvieno atstumo testą prieš juos naudojant. Aš gaunu apie vieną jutiklį, kurio rodmenys prasti, 20 partijų. Neblogai už sumokėtą kainą.

4 žingsnis: kietasis laidas

KIEKIS LAIDAS
KIEKIS LAIDAS

Maniau, kad bus vietos lizdams ir kištukams nuo kompiuterio iki

garsiniai kaiščiai, bet aš išbėgau iš kambario. Taigi aš tvirtai prijungiau PCB galą ir tiesiog padariau aido ir paleidimo laidus su moteriškais lizdais (8ea). Aš susiejau jutiklių 8ea Vcc ir 8ea pagrindus, todėl jiems buvo tik 2 jungtys prie PCB.

Turėdamas 8 jutiklius ir 8 595, „uno“arba „pro-mini“NEGALI maitinti. Šio projekto metu turi būti reguliuojamas 5 V šaltinis. Mano robotas turi paprastą 7805 @ 1amp iš baterijų. Tai susieta su visais 5v Vcc visiems įrenginiams. 7805 krenta apie voltą, todėl jam tiekti reikia mažiausiai 6,5 voltų. Tai yra 2 ličio baterijos esant 3,3 V įtampai. Mano robote yra senų nikadų iš panaudotų gręžimo pakuočių, o 8 nikadai veikia įprastu Kinijos 12V varikliu 20 USD talpos važiuoklėje.

5 veiksmas: atsisiųskite garsinį eskizą

ATSISIŲSTI SONINĮ ESKŠTĄ
ATSISIŲSTI SONINĮ ESKŠTĄ

Atsisiųskite eskizą ir įdiekite. Yra daug būdų kalbėtis

dar vienas uno, bet man patinka I2c. painiava yra kreipimasis ir šeimininkas/ vergas. Kaip ir daugumoje jutiklių (pagalvokite apie antrąjį mini kaip jutiklį), kreipiatės į jutiklį ir prašote x baitų kiekio. čia tas pats. 2 -ajame mini numeryje atidėjote x norimų išsiųsti baitų kiekį. Klaidina tai, kad vardai nesvarbūs. Tai padeda jums prisiminti tik tuo atveju, jei dalinatės vardais. Taigi eskize aš siunčiu 8 garsinio atstumo matavimus cm kaip sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Meistras gauna tik 8 baitus, jei duomenys, ir jūs galite juos pavadinti bet kuo. Aš perskaičiau juos kaip gotR1, gotR2, got….. Išsiųsta baitų tvarka yra tokia pati. Taigi baitai A, B, C….. nemanykite, kad pakeitus pavadinimą gausite kitokių duomenų. Ir kitas laimikis, galite gauti tik tuos duomenis, kuriuos liepta išsiųsti. Taigi, jei norite kitų duomenų, turite pakeisti tiek pagrindinį, tiek slave.

6 žingsnis: KOMUNIKACIJA

KOMUNIKACIJA
KOMUNIKACIJA

Galite praleisti tai, jei žinote, kaip nustatyti 2 „Uno“kalbėtis tarpusavyje. Pabaigoje turiu šiek tiek informacijos. Kad būtų lengviau, roboto bazėje esantį uno vadinsiu M1, o garso jutiklį - S2. Prijunkite Vcc, ground, A4, A5.

S2 eskize jis prasideda #include

Tada sukurkite 8 baitus, kuriuos norite siųsti. baitas R1, baitas R2, baitas L1 ir kt. „Uno“yra 8 bitų mikro, todėl jie siunčia 1 baitą vienu metu naudodami „baitą“, o ne „int“.

Į „setup ()“pridėkite „Wire.begin (address)“, tai nurodo „I2c“, koks tai įrenginys. Paprastai adresas yra bet koks jums patinkantis skaičius nuo 4 iki 200. vieno baito dydžio. Čia aš naudoju skaičių 10. Taigi, norėdamas pasikalbėti su šiuo jutikliu S2, kapitonas turi paskambinti Wire.requestFrom (10, 8). Tai yra 10 adresas, o 8 - kiek baitų norėta. Taip pat „setup ()“pridėkite Wire.onRequest (isr anyName). Kai M1 skambina užklausai, S2 jutiklis reaguoja su pertraukimu. Tai tiesiog vadina funkciją „anyName“. Taigi šią „anyName“funkciją reikia sukurti. Pažvelkite į eskizą ir pamatykite funkciją „sendThis ()“. Čia baitai iš tikrųjų siunčiami į M1. Vien baitai eina, o NE vardai ir siunčiama tvarka. Čia prasideda siunčiamų duomenų dydis ir kiekis. Šiuo paprastu baitų formatu siuntimas ir gavimas turėtų sutapti. Čia išsiųsti 8 baitai ir gauti 8 baitai. Viena pastaba čia yra tai, kad norint iškviesti funkciją reikia (). Kaip uždelsimas (), milis (), Serial.print (). Naudojant ISR (pertraukimo paslaugų rutiną), iškviečiant šią funkciją, sumažėja (). Taigi Wire.onRequest (sendThis) ne Wire.onRequest (sendThis ()).

Man kilo painiava dėl šeimininko/vergo. Iš pradžių maniau, kad meistras VISADA yra šeimininkas. Tačiau eskizo metu galite perjungti pagrindinį/slave prašymą iš kitų mikroschemų arba siųsti į kitus mikroschemas. Tol, kol laikysitės aukščiau aprašyto pagrindinio formato. Atminkite … jūs bendrinate TIK priskirtus duomenis.

Dvi smulkmenos nuo sienos. ISR pertrauka pertraukia tik eskizo linijas. Jei esate užrakintas cikle „už arba už“, nieko neatsitiks, kol ciklas neišeis. NĖRA didelio dalyko, nes tai gali būti kelios mikrosekundės, o duomenys yra seni.

Kita problema yra ta, kad „mikro“viduje yra 100% klaidų skaičiavimas. Bet koks „išorinis“(laidinis) ryšys turi klaidų. Yra daug būdų patikrinti, ar pateikti duomenys yra be klaidų ir atitinka šaltinį. Lengviausias būdas yra su kontroline suma. Tiesiog pridėkite siuntimo baitų sumas (faktines vertes) ir išsiųskite sumas, o gavimo pabaigoje pridėkite sumas ir pažiūrėkite, ar jos sutampa. Jei jie atitinka gerai, arba išmeskite tą duomenų rinkinį, jei ne. Žinoma, tai reiškia sveiko skaičiaus vertės, o ne baitų siuntimą. Taigi tiesiog padalinkite sveikąjį skaičių į HI baitą ir LO baitą ir išsiųskite kaip atskirus baitus. Tada sudėkite prie imtuvo.

LENGVAS:

int x = 5696; (bet kokia galiojanti int vertė, maksimali yra 65 000 arba 32 000 neigiama)

baitas hi = x >> 8; (22)

baitas lo = x; (64)

siųsti baitus ir sujungti kitame gale …

baitas hi = Wire.read ();

baitas lo = Wire.read ();

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

7 žingsnis: UŽDARYMAS

UŽDARYMAS
UŽDARYMAS
UŽDARYMAS
UŽDARYMAS
UŽDARYMAS
UŽDARYMAS
UŽDARYMAS
UŽDARYMAS

Norėdami baigti, šis garso jutiklis suteikia pagrindinei plokštei neapdorotus atstumo duomenis realiuoju laiku. Tai atlaisvina mikro ir daro eskizą daug sudėtingesnį. Mikroelementas dabar gali priimti gerą sprendimą sulėtinti, pasukti, sustabdyti arba pakeisti, remdamasis gerais duomenimis, o ne atsitiktiniais spėjimais. Peržiūrėkite mano kitą įrašą apie „Bluetooth“IDE, jei norite įkelti eskizus be laidų ir visą laiką prijungti robotą, kad tik greitai pakeistumėte eskizą. Dėkojame, kad tai peržiūrėjote. oldmaninsc.

Rekomenduojamas: