Tartalomjegyzék:

SONIC LED VISSZAJELZÉS: 7 lépés (képekkel)
SONIC LED VISSZAJELZÉS: 7 lépés (képekkel)

Videó: SONIC LED VISSZAJELZÉS: 7 lépés (képekkel)

Videó: SONIC LED VISSZAJELZÉS: 7 lépés (képekkel)
Videó: I Will Show You Your Name In This Video.. 2024, Július
Anonim
SONIC LED VISSZAJELZÉS
SONIC LED VISSZAJELZÉS
SONIC LED VISSZAJELZÉS
SONIC LED VISSZAJELZÉS
SONIC LED VISSZAJELZÉS
SONIC LED VISSZAJELZÉS

Szia újra, Utálod, hogy a robotod mindenbe belefut? Ez megoldja a problémát. 8 szonikus érzékelővel ez bonyolultnak tűnik… de valójában ezt nagyon megkönnyítettem. Megpróbálok olyan projekteket közzétenni, amelyek segítenek Önnek megismerni Arduino -t, és megmutatni a „dobozon kívül” koncepciót. Ez a bejegyzés segít megérteni az 595 kapcsolást, a pro-minis programozható érzékelőt és a valós idejű led visszacsatolás nagyszerű használatát. Ha élvezi az Arduino-t "másolás, beillesztés és beépülő modul" formájában, akkor ezt kihagyhatja.

Szeretek pro-minit használni. Körülbelül 2,50 dollárba kerülnek, teljes értékű unokaként működnek, és a fejlécek telepítése nagyon rugalmassá teszi őket. Mikro szenzorként használva azt teheti, amit akar, ahelyett, amit a megvásárolt érzékelő diktál. Az I2C csak 2 vezetéket használva összeköthető egy vonalon. Tehát lépjen át a MEGA -ra, és 4 mini -t futtathat egyszerre 4 külön sor kóddal, mindössze 10,00 dollárért. Itt egy minit használok a hangérzékelők átugorására egy 595 -ösön, és megmutatom a valós idejű led távolságot. Ezután csak ossza meg 8 bit adatait az alaplappal. Ez leveszi a terhet az alaplapról, és nagyon egyszerűvé teszi a kódját.

Probléma van a hangérzékelőkkel… nincs vizuális visszajelzés. Soha nem tudhatod, hogy az érzékelő csak önsúly vagy működik! Azt hiszem, aki valaha is kitalálta a "BLINK" -et, okosabb, mint az Einstine. Csak EGY led és egy információs világot közvetít a villogás. Tehát egy hangérzékelőnek valós idejű visszajelzésre van szüksége. Itt egy LED -tömböt használtam az egyes érzékelők megfigyelésére. Nincs szüksége rájuk, csak készítse el az érzékelőket LED -ek nélkül. De hasznos, ha a LED -ek a NYÁK -on vannak.

1. lépés: NYÁK NYOMTATÁSA

NYÁK NYOMTATÁSA
NYÁK NYOMTATÁSA
NYÁK NYOMTATÁSA
NYÁK NYOMTATÁSA
NYÁK NYOMTATÁSA
NYÁK NYOMTATÁSA
NYÁK NYOMTATÁSA
NYÁK NYOMTATÁSA

PCB -t készíteni és feltölteni. VIGYÁZAT … Hibáztam a NYÁK -on a 4 érintkezős csatlakozásoknál, hogy a hangérzékelők csatlakoztathatók legyenek. Az ECHO és a TRIGGER Vcc és az alapok csatlakozni fognak a PCB -hez. Nincs elegendő hely a csatlakozók számára, ezért most készítettem el a NYÁK-ot csapokkal. Tehát forraszthat egy drótcsatlakozót a NYÁK -ra, és csatlakoztathatja a tényleges hangérzékelőkhöz. Ami a LED -eket illeti, sárga LED -eket tettem a belső szélükre, a pirosakat pedig kívülre. ez segít távolról látni, hogy az érzékelők helyesen mérnek -e.

Ez az egyik a kevés 2 oldali PCB -ből, amit valaha készítettem. Inkább 2 ea egyoldalas és futó ugrót készítek. De ahhoz, hogy megkapja a led kijelzőt, legalább a felső NYÁK -ra van szüksége. A letöltésben elkülönítettem az elrendezést.

A NYÁK egy pro-mini készülékhez készült, A4-A5-ös éllel a fejléc belsejében. Akárhogy is, csak csatlakoztassa az A4-A5-öt a Master A4-A5-höz. Ne feledkezzen meg a Vcc -ről és a Grounds -ról sem.

2. lépés: Sok hiba

SOK TÉV
SOK TÉV

Most a hibáimat … Megpróbáltam egyszerre kiváltani a Triggereket (mind össze vannak kötve), és ez jól működött, de néhány interakció történt. Tehát most minden ECHOS a mikro (8) -ra megy, és a TRIGGER -eket egy 595 -ös állítja be. Még három csap (3). Ami a ledeket illeti, a multiplexelés nem fog működni. Minden bekapcsoláshoz teljes ON időre van szüksége. Ez azt jelenti, hogy minden 7 LED -es sornak rendelkeznie kell saját 595 -tel. Miután frissítette az 595 -öt, a LED -ek a következő frissítésig világítanak. Ahol a ledek multiplexelése csak a tizedmásodpercig világít. Ez jól működik az olvasóimban, és szüksége van egy dedikált mikrora. Nincs idő 8 hangérzékelő beolvasására és a távolságok mérésére. Kipróbáltam, és nagyon gyenge eredményeket kaptam. A LED -ek multiplexelése egy sor + oszlop rácsát is jelenti, és ez körülbelül 64+ előtolást jelent a NYÁK -ban.

Az 595 -ből csak 7 kimenetet használtam a NYÁK rendetlensége miatt. Távolról nem lehet megmondani, hogy 7 vagy 8 LED van -e, csak a mozgásuk. Lehet, hogy kísértést érez arra, hogy az összes LED -et egyetlen ellenálláshoz kösse, és ez működik, de a tömb fényereje a lite -ek mennyiségével együtt változik. Tehát a LED -ekenként egy ellenállás a legjobb. Imádom az 595-öt, de ha csak áthelyeznék a Vcc-t és a 0-kimenetű csapokat, vagy 18 érintkezős ic-t készítenének MINDEN kimenettel ugyanazon az oldalon… mind a nyolc kimenet csatlakoztatása nagyon egyszerű lenne. De akkor nem adnák el kevesebb mint 30 centért.

3. lépés: FELSZERELÉS ÉRZÉKELŐK

SZERELŐ ÉRZÉKELŐK
SZERELŐ ÉRZÉKELŐK
SZERELŐ ÉRZÉKELŐK
SZERELŐ ÉRZÉKELŐK
SZERELŐ ÉRZÉKELŐK
SZERELŐ ÉRZÉKELŐK
SZERELŐ ÉRZÉKELŐK
SZERELŐ ÉRZÉKELŐK

Ragassza a hangszenzorokat a kávéfedélre. a dugót be kell hajlítani minden érzékelőre. Ez jobban működik, ha egyszerre csak egy csapot hajlít meg. Két oldalsó habszalagot használtam, hogy a rezgés kevesebb legyen. Az érzékelőim túl közel vannak, és 1/4 hüvelykes helyre van szükségük, hogy jobban illeszkedjenek a NYÁK -hoz. Korábban már használtam szonikus érzékelőket, és néha nem sikerül pontosan mérni, és ezt szem előtt kell tartania. Tehát ne ragasszon be véglegesen mindenkit.

Az is segít, ha gyors távvizsgálatot végez mindegyiken, mielőtt használná őket. Körülbelül egy érzékelőt kapok gyenge leolvasással, 20 -as tételben. Nem rossz az általam fizetett árért.

4. lépés: Kemény vezeték

Kemény vezeték
Kemény vezeték

Azt hittem, lesz hely a jackeknek és a csatlakozóknak a PC -től a

hangtűk, de kirohantam a szobából. Szóval keményen bekötöttem a NYÁK végét, és csak visszhang- és kioldó vezetékeket csináltam női csatlakozókkal (8ea). Összekötöttem az érzékelők 8ea Vcc és 8ea alapjait, így ez csak 2 csatlakozást hozott létre számukra.

8 érzékelővel és 8 595-tel egy uno vagy pro-mini NEM tudja táplálni. Ennek a projektnek egy 5 V -os szabályozott forrásnak kell lennie. A robotom egyszerű, 7805 @ 1 amperes az akkumulátorokból. Ez minden eszköz 5V Vcc -hez kapcsolódik. a 7805 körülbelül egy voltról lecsökken, így legalább 6,5 volt szükséges a táplálásához. Vagyis 2 db 3,3 V -os lítium elem. A robotom régi fúrócsomagokat tartalmaz a használt fúrócsomagokból, és 8 darab nád jár a tipikus kínai hajtóműves 12 V -os motorral a 20 dolláros tank típusú alvázban.

5. lépés: A SONIC VÁZLAT LETÖLTÉSE

SONIC VÁZLAT LETÖLTÉSE
SONIC VÁZLAT LETÖLTÉSE

Töltse le a vázlatot és telepítse. Sokféleképpen lehet beszélni

egy másik uno, de szeretem az I2c -t. a zűrzavar a megszólítás és a master/ slave. A legtöbb érzékelőhöz hasonlóan (gondoljon a 2. mini -re mint érzékelőre) Ön is megszólítja az érzékelőt, és x bájtot kér. ugyanez itt. A 2. mini -ben félretesz x mennyiségű elküldeni kívánt bájtot. A zavar az, hogy a nevek nem számítanak. Csak akkor segít emlékezni, ha megosztja a neveket. Tehát a vázlatban a 8 szonikus távolságmérést cm -ben küldöm sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. A mester csak 8 bájtot kap, ha adat, és ezeket a bájtokat bármikor hívhatja. Olvastam őket gotR1, gotR2, got….. A küldött bájtok sorrendje ugyanaz. Tehát az A, B, C bájt….. ne gondolja, hogy a név megváltoztatásával más adatokat kaphat. És a másik fogás, csak olyan adatokat fogadhat, amelyeket el kell küldeni. Tehát ha más adatokat szeretne, akkor mind a master, mind a slave szolgáltatást cserélnie kell.

6. lépés: KOMMUNIKÁCIÓ

KOMMUNIKÁCIÓ
KOMMUNIKÁCIÓ

Ezt kihagyhatja, ha tudja, hogyan kell beállítani 2 Uno -t, hogy beszéljenek egymással. Van néhány apró információm a végén. Az egyszerűség kedvéért az M1 -es robotbázisban lévő uno -t és a szonikus érzékelőt S2 -nek hívom. Csatlakoztassa egymáshoz a Vcc, földelt, A4, A5 formátumot.

Az S2 vázlatában ez #include -tal kezdődik

Ezután hozza létre a küldendő 8 bájtot. bájt R1, bájt R2, bájt L1 stb. Az Uno 8 bites mikro, így 1 bájtot küldenek egyszerre az „int” helyett a „bájt” használatával.

A 'setup ()' mezőbe add 'Wire.begin (address)', ez megmondja az I2c -nek, hogy melyik eszközről van szó. A cím általában tetszőleges szám 4 - 200 között. Egy bájt méretű. Itt a 10. számot használtam. Tehát, hogy beszéljen ezzel az S2 érzékelővel, a mesternek hívnia kell a Wire.requestFrom (10, 8) számot. Ez a 10 -es cím, és a 8 az, hogy hány bájtot akart. Szintén a 'setup ()' menüpontban adja hozzá a Wire.onRequest (isr anyName) nevet. Amikor az M1 hívja a kérést, az S2 érzékelő reagál a megszakításra. Ez csak az anyName függvényt hívja meg. Tehát ezt az anyName függvényt létre kell hozni. Nézze meg a vázlatot, és tekintse meg a 'sendThis ()' függvényt. Itt a bájtok ténylegesen elküldésre kerülnek az M1 -re. Csak a bájtok mennek, és NEM a nevek és a küldött sorrend. Innen indul a küldendő adatok mérete és mennyisége. Ebben az egyszerű bájtformátumban a küldésnek és a fogadásnak meg kell egyeznie. Itt 8 bájt küldött és 8 bájt érkezett. Az egyik megjegyzés itt egy függvény meghívása a (). Mint a delay (), millis (), Serial.print (). ISR (megszakítási szolgáltatási rutin) használatakor a függvény hívása elhagyja a () jelet. Tehát a Wire.onRequest (sendThis) nem a Wire.onRequest (sendThis ()).

A zűrzavar a mester/rabszolga volt. Először azt hittem, hogy a mester MINDIG a mester. De a vázlaton belül a master/slave kapcsolót más mikróktól kérheti, vagy más mikrókra küldheti. Mindaddig, amíg a fent vázolt alapformátumot követte. Ne feledje… CSAK a hozzárendelt adatokat osztja meg.

Kettő darab a falról. Az ISR megszakítás csak a vázlatvonalak között szakít meg. Ha be van zárva a "while vagy for" ciklusba, semmi sem történik, amíg a hurok ki nem lép. NINCS nagy baj, mivel ez lehet néhány mikroszekundum, és az adatok régi.

A másik probléma az, hogy a mikro „belsejében” 100% hibamentes számítás van. Bármilyen „külső” (vezetékes) kommunikáció hibáknak van kitéve. Sokféleképpen ellenőrizheti, hogy a szállított adatok hibamentesek -e és megfelelnek -e a forrásnak. A legegyszerűbb módszer az ellenőrző összeg. Csak adja hozzá a küldő bájtok összegét (tényleges értékeket), és küldje el az összeseket, a fogadó végén pedig adja hozzá az összeseket, és nézze meg, hogy megegyeznek -e. Ha megfelelnek az oknak, vagy dobja fel az adathalmazt, ha nem. Ez természetesen magában foglalja az egész érték elküldését és nem a bájtokat. Tehát csak felosztja az egész számot HI bájtra és LO bájtra, és külön bájtként küldi el. Ezután rakja össze a vevőnél.

KÖNNYEN:

int x = 5696; (bármely érvényes int érték, max 65k vagy 32k negatív)

bájt hi = x >> 8; (22)

bájt lo = x; (64)

küldje el a bájtokat és egyesítse a másik végén …

bájt hi = Wire.read ();

bájt lo = Vezeték.olvasás ();

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

7. lépés: ZÁRÁS

ZÁRÓ
ZÁRÓ
ZÁRÓ
ZÁRÓ
ZÁRÓ
ZÁRÓ
ZÁRÓ
ZÁRÓ

Zárásként ez a hangérzékelő valós időben nyers nyers adatokat szolgáltat az alaplapnak. Ez felszabadítja a mikrot és sokkal kevésbé bonyolítja a vázlatot. A mikro most jó döntést hozhat a lassításról, a kanyarodásról, a megállásról vagy a hátramenetről, jó adatok alapján, véletlenszerű találgatások helyett. Tekintse meg a másik bejegyzésemet a Bluetooth IDE -ről, ha vázlatokat szeretne vezetékek nélkül feltölteni, és állandóan csatlakoztatnia kell a robotját a vázlat gyors megváltoztatásához. Köszönöm, hogy megnézted ezt. oldmaninsc.

Ajánlott: