INHOUDSOPGAWE:

SONIC LED -TERUGVOERING: 7 stappe (met foto's)
SONIC LED -TERUGVOERING: 7 stappe (met foto's)

Video: SONIC LED -TERUGVOERING: 7 stappe (met foto's)

Video: SONIC LED -TERUGVOERING: 7 stappe (met foto's)
Video: Kleuters op familiefeest 😂 2024, Julie
Anonim
SONIC LED TERUGVOER
SONIC LED TERUGVOER
SONIC LED TERUGVOER
SONIC LED TERUGVOER
SONIC LED TERUGVOER
SONIC LED TERUGVOER

Hallo weer, Haat u dat u robot alles raakloop? Dit sal die probleem oplos. Met 8 soniese sensors lyk dit ingewikkeld … maar eintlik het ek dit baie maklik gemaak. Ek probeer projekte plaas wat u help om meer oor Arduino te leer en 'n 'buite die boks' -konsep te toon. Hierdie pos sal u help om 595 skakelaars, pro-minis as 'n programmeerbare sensor te verstaan en die groot gebruik van real-time geleide terugvoer. As u Arduino geniet as 'kopieer en plak en invoeg', kan u dit eenvoudig oorslaan.

Ek hou daarvan om pro-mini's te gebruik. Dit kos ongeveer $ 2,50, werk voluit en die installering van opskrifte maak hulle baie buigsaam. As sensormikro kan u dit 'doen wat u wil' in plaas van wat 'n gekoopte sensor bepaal. As I2C slegs 2 drade gebruik, kan hulle almal op een lyn vasgemaak word. As u oor MEGA beweeg, kan ek 4 mini's tegelykertyd met 4 aparte reëls kode hê, teen slegs $ 10,00. Hier gebruik ek 'n mini om die soniese sensors deur 'n 595 te blaas en realtime geleide afstand te wys. Deel dan net 8 bits data met die moederbord. Dit neem die las van die moederbord af en maak haar kode baie eenvoudig.

Daar is 'n probleem met soniese sensors … geen visuele terugvoer nie. U weet nooit of die sensor net 'n dooie gewig is of werk nie! Ek glo wie ooit met 'BLINK' vorendag gekom het, is slimmer as Einstine. Slegs EEN gelei en 'n wêreld van inligting word deur die flikkering oorgedra. 'N Soniese sensor benodig dus intydse terugvoer. Hier het ek 'n verskeidenheid LED's gebruik om elke sensor te monitor. U het dit nie nodig nie, maar maak die sensors sonder die LED's. Maar om die LED's op die PCB te hê, is nuttig.

Stap 1: MAAK PCB

MAAK PCB
MAAK PCB
MAAK PCB
MAAK PCB
MAAK PCB
MAAK PCB
MAAK PCB
MAAK PCB

maak PCB en vul. LET WEL … Ek het 'n fout gemaak met die PCB by die 4 -pins aansluitings waarmee die soniese sensors kon aansluit. Die ECHO en TRIGGER Vcc en gronde gaan by die pcb aansluit. Daar is nie genoeg ruimte vir konneksies nie, so ek het pas die PCB gemaak met pin-outs. U kan dus 'n draadverbinding aan die printplaat soldeer en by die werklike soniese sensors aansluit. Wat die leds betref, sit ek geel leds aan die binnekant en rooi aan die buitekant. dit help u om op afstand te sien of die sensors korrek meet.

Dit is een van die paar PC's wat ek aan die ander kant gemaak het. Ek sal liewer 2 stuks enkel- en springpaadjies maak. Maar om die LED -skerm te kry, benodig u ten minste die boonste PCB. Ek het die uitleg in die aflaai geskei.

Die PCB is vir 'n pro-mini met A4-A5 binne die randkop. Koppel in elk geval A4-A5 aan die Master A4-A5. Moenie ook die Vcc en Grounds vergeet nie.

Stap 2: BAIE foute

BAIE foute
BAIE foute

Nou vir my foute … ek het die snellers tegelyk probeer pop -up (almal vasgebind) en dit het goed gewerk, maar 'n paar interaksies het plaasgevind. Dus gaan alle ECHOS na die mikro (8) en die TRIGGERS word deur 'n 595 gestel. Nog drie penne (3). Wat die LED's betref, werk multiplexing nie. U benodig 'n volledige AAN -tyd vir elke LED. Dit beteken dat elke ry van 7 LED's sy eie 595 moet hê. Sodra u die 595 opgedateer het, bly die LED's brand tot die volgende opdatering. Waar die LED vermenigvuldig, lig dit slegs vir die tiende van 'n sekonde. Dit werk goed vir my lesers en benodig 'n spesiale mikro. Geen tyd om 8 soniese sensors te skandeer en afstande te meet nie. Ek het probeer en het baie swak resultate gekry. Om die LED's te vermenigvuldig, beteken ook 'n rooster van ry + kolom, en dit beteken dat ongeveer 64+ deurgange in die PCB is.

Ek het slegs 7 uitsette van die 595 gebruik as gevolg van rommel op die PCB. Op 'n afstand kan jy nie weet of daar net 7 of 8 LED's is nie. U word moontlik versoek om al die LED's aan 'n enkele weerstand te bind, en dit werk, maar die helderheid van die reeks verander met die hoeveelheid LED's wat lig is. Een weerstand per led is dus die beste. Ek hou net van die 595, maar as hulle net die Vcc- en 0-out-penne skuif of 'n 18-pins ic met ALLE uitsette aan dieselfde kant maak … sou dit so maklik wees om al agt uitsette aan te sluit. Maar dan sou dit nie vir minder as 30 sent verkoop word nie.

Stap 3: MONTAGE SENSORS

MOUNT SENSORE
MOUNT SENSORE
MOUNT SENSORE
MOUNT SENSORE
MOUNT SENSORE
MOUNT SENSORE
MOUNT SENSORE
MOUNT SENSORE

Plak soniese sensors op die koffiedeksel. die manlike domkrag moet op elke sensor na binne gebuig word. Dit werk beter as u een pen op 'n slag buig. Ek het skuimband met 2 sye gebruik net sodat die vibrasie minder is. My sensors is te naby en hulle benodig 'n 1/4 duim ruimte om beter by die PCB te pas. Ek het al voorheen soniese sensors gebruik, en soms kan 'n mens nie akkuraat meet nie, en jy moet dit in gedagte hou. Moet dus nie almal permanent aanhang nie.

Dit help ook om 'n vinnige afstandstoets op elkeen uit te voer voordat u dit gebruik. Ek kry ongeveer een sensor met 'n swak lesing in 'n bondel van 20. Nie sleg vir die prys wat ek betaal het nie.

Stap 4: HARDE DRAAD

HARDE DRAAD
HARDE DRAAD

Ek het gedink daar is plek vir aansluitings en proppe van die rekenaar na die

sonic pins, maar ek hardloop uit die kamer. So ek het die PCB -einde hard bedraad en net 'n eggo gemaak en 'n snoer met vroulike aansluitings gemaak (8ea). Ek het die 8ea Vcc en 8ea gronde van die sensors saamgebind, sodat dit slegs 2 verbindings met die PCB gemaak het.

Met 8 sensors en 8 595's kan 'n uno of pro-mini dit NIE aandryf nie. Daar moet 'n 5v gereguleerde bron wees as deel van hierdie projek. My robot het 'n eenvoudige 7805 @ 1amp uit die batterye. Dit sluit aan by al die 5v Vcc vir alle toestelle. die 7805 daal ongeveer 'n volt, dus u benodig ten minste 6,5 volt om dit te voed. Dit is 2 litiumbatterye teen 3.3v. My robot het ou nicads van gebruikte boorpakke en 8 nicads loop die tipiese China 12v motor in die $ 20 tenk tipe onderstel.

Stap 5: LAAI SONIC SKETCH AF

LAAI SONIESE SKETS AF
LAAI SONIESE SKETS AF

Laai die skets af en installeer. Daar is baie maniere om mee te praat

'n ander uno, maar ek hou van I2c. die verwarring is aanspreek en meester/ slaaf. Soos met die meeste sensors (dink aan die 2de mini as 'n sensor) spreek u die sensor aan en vra vir x hoeveelheid grepe. dieselfde ding hier. In die 2de mini sit u die x byte opsy wat u wil stuur. Die verwarring is dat name nie saak maak nie. Dit help U net om te onthou as u die name deel. In die skets stuur ek dus die 8 soniese afstandmetings in cm as sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Die meester kry net 8 grepe as data, en u kan die grepe noem wat u wil. Ek lees dit as gotR1, gotR2, got….. Die gestuurde volgorde van grepe is dieselfde. Dus, byte A, B, C ….. moenie dink dat die verandering van die naam u verskillende data sal gee nie. En die ander vangpunt: u kan slegs data ontvang wat aangesê word om gestuur te word. As u ander data wil hê, moet u beide master en slaaf verander.

Stap 6: KOMMUNIKASIE

KOMMUNIKASIE
KOMMUNIKASIE

U kan dit oorslaan as u weet hoe u 2 Uno's kan opstel om met mekaar te praat. Aan die einde het ek 'n paar inligting. Om dit makliker te maak, noem ek die uno in die robotbasis M1 en die soniese sensor as S2. Koppel Vcc, grond, A4, A5 aan mekaar.

In die skets vir die S2 begin dit met #include

Skep dan die 8 grepe wat u moet stuur. byte R1, byte R2, byte L1 ens. Uno is 'n 8bit mikro, sodat hulle 1byte op 'n slag stuur deur 'byte' in plaas van 'int' te gebruik.

In die 'setup ()' voeg 'Wire.begin (adres)' by, vertel dit I2c watter toestel dit is. Die adres is gewoonlik 'n nommer wat u wil hê tussen 4 - 200. die grootte van een greep. Hier gebruik ek die nommer 10. Om met hierdie sensor S2 te praat, moet die meester Wire.requestFrom (10, 8) bel. Dit is adres 10 en die 8 is hoeveel grepe benodig. Voeg ook in die 'setup ()' Wire.onRequest (isr anyName) by. As die M1 die versoek bel, reageer die S2 -sensor met die onderbreking. Dit noem die funksie net enige naam. Hierdie anyName -funksie moet dus geskep word. Kyk na die skets en sien die funksie 'sendThis ()' Dit is waar die grepe eintlik na die M1 gestuur word. Die grepe alleen gaan en NIE die name nie en in die volgorde wat gestuur is. Dit is waar die grootte en hoeveelheid data om te stuur begin. In hierdie maklike grepe -formaat moet die stuur en ontvang ooreenstem. Hier is 8 grepe gestuur en 8 grepe ontvang. Een noot hier is die roeping van 'n funksie vereis die (). Soos vertraging (), millis (), Serial.print (). As u 'n ISR (onderbrekingsroetine) gebruik, laat die funksie die () val. Dus Wire.onRequest (sendThis) nie Wire.onRequest (sendThis ()).

Die verwarring wat ek gehad het, was die meester/slaaf ding. Ek het eers gedink die meester was ALTYD die meester. Maar binne die skets kan u die meester/slaaf oorskakel na versoek van ander mikro's of na ander mikro's stuur. Solank u die basiese formaat wat hierbo uiteengesit is, volg. Onthou … u deel slegs data wat toegewys is.

Twee stukkies van die muur af. Die isr interrupt onderbreek slegs tussen sketslyne. As u in 'n 'while or for' lus vasgesluit is, gebeur niks totdat die lus verlaat nie. Dit maak nie saak nie, aangesien dit 'n paar mikrosekondes kan wees en die data oud is.

Die ander probleem is: 'binne' in 'n mikro is daar 'n 100% foutlose berekening. Enige 'buite' (drade) kommunikasie is onderhewig aan foute. Daar is baie maniere om te kontroleer dat die gegewe data foutloos is en by die bron pas. Die maklikste manier is met kontrolesom. Voeg net die totale van die stuurgrepe (werklike waardes) by en stuur die totale en voeg aan die ontvangkant die totale by en kyk of dit ooreenstem. As dit goed is, of as die datastel dit nie gooi nie. Dit behels natuurlik die stuur van 'n heelgetalwaarde en nie grepe nie. U verdeel dus die heelgetal in die HI -byte en LO -byte en stuur dit as aparte grepe. Sit dit dan by die ontvanger.

MAKLIK:

int x = 5696; (enige geldige int -waarde, maksimum is 65k of 32k negatief)

byte hi = x >> 8; (22)

byte lo = x; (64)

stuur die grepe en kombineer aan die ander kant …

byte hi = Wire.read ();

byte lo = Wire.read ();

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

Stap 7: SLUIT

SLUIT
SLUIT
SLUIT
SLUIT
SLUIT
SLUIT
SLUIT
SLUIT

Om te sluit, gee hierdie soniese sensor intyds onbeperkte data oor die moederbord. Dit maak die mikro vry en maak die skets baie minder ingewikkeld. Die mikro kan nou 'n goeie besluit neem om te vertraag, te draai, te stop of om te keer op grond van goeie data in plaas van willekeurige raaiskote. Sien my ander plasing oor Bluetooth IDE om sketse sonder drade op te laai en om u robot heeltyd te moet koppel, vir 'n vinnige verandering in u skets. Dankie dat u dit gekyk het. oldmaninsc.

Aanbeveel: