Monday 9 October 2017

Arduino Shift Out Binære Alternativer


74HC164 Shift Register og dine Arduino ampquotsome andre modeller er parallelle i seriell ut, de gjør det samme, men som innganger til arduinoampquot. Hvilke delnumre er disse, da jeg ikke kan finne et 8-biters PISO-skiftregister på 74XX-dellisten, de fleste 74 logikkseriene I. C. ha en komplementær del som er 1 eller 2 siffer forskjellig, ta en titt på 165 og 166. De gjør ikke det jeg vil, men aldri tankene som jeg har sortert problemet. Jeg trenger å legge inn informasjon fra 15 forskjellige brytere til arduino, men jeg har ikke så mange knapper som ligner (noen er i bruk som utganger). Jeg har brukt 4 ltstronggt73LS30ltstronggt (8 inngangs NAND-porter) for å gi en binær 4-bits utgang, så de vil bare bruke 4 pinner på arduino. Ikke så bra som 1 pin (seriell), men bedre enn 15 pins. Veldig kul opplæring. Det var et problem å finne ut hvor du skal koble klokken (8) til venstre 9 (V) på 74HC164. Jeg endelig fikk den og jordet pin 9.ltbrgt Jeg lurte på hvorfor når jeg rørte på pin 9, ville lysbildene lyse opp. ltbrgtDet skjønte at jeg fungerte som en slags bakken da det slo meg. LOLltbrgtMy neste opplæring vil være 7-segmentet display. ltbrgtltbrgtOgså jeg lurte på hvordan jeg kan få 4x4-matrisen flash letters. ltbrgtCould du gi meg litt innsikt i det Hvordan kan jeg åpne filen. tmp i arduino IDE. det virker ikke fungerer. Låter deg :) Klikk på linkene over det vil åpne i nettleseren din, bare kopier og lim inn, eller endre navn på tmp-filen til pde (aner ikke hvorfor det gjør det) Okay. Jeg skal prøve. Takk Dette er en utmerket instruksibel Dette er uten tvil den beste nybegynnerveiledningen til skiftregisterene jeg kommer over. Takk så mye for å sette dette der ute. Jeg håper du fortsatt svarer på spørsmål for dette instruerbare. Jeg har ferdig med å bygge 4x4-matrisen. Alt sømmer for å fungere bra, men jeg har problemer med å lyse opp LED-lampene. Jeg kan lett adressere en individuell LED for å lyse opp, men når jeg gjør det, får jeg også omgivelseslysdioder til å slå på (mye lysere enn den adresserte lysdioden) angrepet et bilde for å vise deg hva som skjer. Jeg prøver å bare lyse opp og LED som er i posisjon (1,1), men samtidig er LED (4,4) svakt tent. Ltbrgtltbrgthere er koden jeg bruker. ltbrgtshiftOut (data, klokke, MSBFIRST, B10000001) ltbrgt forsinkelse (1) ltbrgtltbrgtGjenn gjerne hvorfor Hei ønsket å si takk for en flott opplæring, jeg skal ferdig med å bygge 4x4-matrisen og la deg få vite hvordan det går. Det er en god veiledning. ampnbsp Takk for at du gjorde det, det er virkelig hjelpsomt. Dette er en fantastisk guide. Det har jeg lurt etter noe som er skrevet slik i en stund. Nå har jeg en fullt fungerende 4x4 ledet matrise, som jeg har bygget meg selv, og må vise mønstrene jeg vil ha. Det er alt takk til deg. Lørdag, Lørdag, Lørdag, Lørdag, Lørdag, Lørdag, Lørdag, Lørdag, Lørdag, Lørdag, Lørdag, Lørdag, Lørdag, Lørdag, Sønn Dette eksemplet er basert på 74HC595. Databladet refererer til 74HC595 som et 8-bit serielt inn-, serielt eller parallelt ut-skiftregister med utgangslås 3-stat. Med andre ord kan du bruke den til å kontrollere 8 utganger om gangen mens du bare tar opp noen få pinner på mikrokontrolleren. Du kan koble flere registre sammen for å utvide produksjonen enda mer. (Brukere kan også ønske å søke etter andre sjåførspill med 595 eller 596 i deres delenumre, det er mange. STP16C596 vil for eksempel kjøre 16 lysdioder og eliminerer seriemotstandene med innebygde konstantkilder.) Slik fungerer dette er gjennom noe som kalles synkron seriell kommunikasjon, det vil si at du kan puls en pin opp og ned og derved kommunisere en data byte til registeret bit for bit. Dens ved pulserende andre pin, klokkepinnen, som du avgrenser mellom biter. Dette er i motsetning til bruk av den asynkrone serielle kommunikasjonen av Serial. begin () - funksjonen som avhenger av avsenderen og mottakeren settes uavhengig av en avtalt spesifisert datahastighet. Når hele byte er overført til registret, blir HØY - eller LOW-meldingene som holdes i hver bit, pakket ut til hver enkelt utgangsstift. Dette er den parallelle utgangsdelen, med alle tappene gjøre hva du vil at de skal gjøre alt på en gang. Seriell utgang del av denne komponenten kommer fra sin ekstra pin som kan passere seriell informasjon mottatt fra microcontroller ut igjen uendret. Dette betyr at du kan overføre 16 biter på rad (2 byte) og de første 8 vil flyte gjennom det første registeret til det andre registret og bli uttrykt der. Du kan lære å gjøre det fra det andre eksempelet. 3 stater refererer til det faktum at du kan sette utgangspinnene som enten høy, lav eller høy impedans. I motsetning til HIGH og LOW-tilstandene, kan du ikke sette pins til deres høyimpedanstilstand hver for seg. Du kan bare sette hele brikken sammen. Dette er en ganske spesialisert ting å gjøre - Tenk på et LED-array som kanskje må styres av helt forskjellige mikrokontroller, avhengig av en bestemt modusinnstilling som er bygd inn i prosjektet. Verken eksempel utnytter denne funksjonen, og du vil vanligvis ikke bekymre deg for å få en chip som har den. Her er et bord som forklarer utsparingene som er tilpasset Phillips datablad. Det første trinnet er å utvide din Arduino med ett skiftregister. Kretskortet 1. Slå på. Gjør følgende tilkoblinger: GND (pin 8) til jord, Vcc (pin 16) til 5V OE (pin 13) til jord MR (pin 10) til 5V Denne oppsettet gjør alle utgangspinnene Aktiv og adresserbar hele tiden. Den ene feilen i denne oppsettet er at du ender opp med at lysene slår på til deres siste tilstand eller noe vilkårlig hver gang du først slår på kretsen før programmet begynner å løpe. Du kan komme rundt dette ved å kontrollere MR - og OE-pinnene fra Arduino-brettet ditt, men denne måten vil fungere og forlate deg med mer åpne pinner. 2. Koble til Arduino DS (pin 14) til Ardunio DigitalPin 11 (blå ledning) SHCP (pin 11) til til Ardunio DigitalPin 12 (gul tråd) STCP (pin 12) til Ardunio DigitalPin 8 (grønn tråd). Fra nå av vil de refereres til som dataPin, klokkePin og latchPin henholdsvis. Legg merke til 0.1f kondensatoren på latchPin, hvis du har litt flimring når latch pin pulser kan du bruke en kondensator til å jevne ut det. 3. Legg til 8 lysdioder. I dette tilfellet bør du koble katoden (kortpinne) til hver LED til en felles bakke, og anoden (langpinne) til hver LED til den respektive skiftregisterutgangspinnen. Ved å bruke skiftregisteret til å levere strøm som dette kalles sourcing nåværende. Noen skiftregistre kan ikke kjøre nåværende, de kan bare gjøre det som kalles synkende strøm. Hvis du har en av disse, betyr det at du må flippe retningen til lysdiodene. sette anodene direkte på strømmen og katodene (jordpinnene) til skiftregisterutgangene. Du bør sjekke det spesifikke databladet ditt hvis du ikke bruker en 595-seriebrikke. Ikke glem å legge til en 220 ohm motstand i serie for å beskytte lysdiodene mot overbelastning. Kretskort Her er tre kodeeksempler. Den første er bare noen hei verdenskode som bare gir en byteverdi fra 0 til 255. Det andre programmet lyser en LED om gangen. Den tredje sykler gjennom en matrise. Koden er basert på to deler av informasjonen i databladet: tidsdiagrammet og logikkbordet. Logikkbordet er det som forteller deg at det i utgangspunktet skjer alt viktig på en oppslag. Når klokkepinnen går fra lav til høy, leser skiftregisteret datapinnenes tilstand. Når dataene blir skiftet, lagres det i et internt minneregister. Når latchPin går fra lav til høy, blir de sendte dataene flyttet fra skiftregisterene nevnte minnesregister til utgangsstifterne, og lyser LEDene. I dette eksemplet vil du legge til et andre skiftregister, dobling av antall utgangsstifter du har, mens du fortsatt bruker det samme antallet pins fra Arduino. Kretskortet 1. Legg til et nytt skiftregister. Fra det forrige eksemplet bør du sette et nytt skiftregister på tavlen. Det skal ha samme fører til kraft og jord. 2. Koble de to registerene. To av disse tilkoblingene utvider bare det samme klokken og låssignalet fra Arduino til det andre skiftregisteret (gule og grønne ledninger). Den blå ledningen går fra den serielle utgangen (pin 9) til det første skiftregisteret til den serielle datainngangen (pin 14) i det andre registeret. 3. Legg til et nytt sett med lysdioder. I dette tilfellet la jeg til grønne, så når du leser koden, er det klart hvilken byte går til hvilket sett med LED-kretsdiagrammet Her er igjen tre kodeprøver. Hvis du er nysgjerrig, kan du prøve prøvene fra det første eksemplet med denne kretsen satt opp for å se hva som skjer. Kodeprøve 2.1 Dual binære tellere Det er bare en ekstra kodelinje sammenlignet med den første kodesammenstillingen fra eksempel 1. Den sender ut en andre byte. Dette tvinger det første skiftregisteret, det ene som er direkte festet til Arduino, for å passere den første byte sendt til det andre registeret, lyser de grønne lysdiodene. Den andre byten vil da dukke opp på de røde lysdiodene. Kode Sample 2.2 2 Byte One By One Sammenligner denne koden med den tilsvarende koden fra eksempel 1 ser du at litt mer har måttet endres. BlinkAll () - funksjonen er endret til blinkAll2Bytes () - funksjonen for å gjenspeile det faktum at det nå er 16 lysdioder å styre. Også i versjon 1 var pulsingene til latchPin plassert i underfunksjonene lightShiftPinA og lightShiftPinB (). Her må de flyttes tilbake til hovedløkken for å imøtekomme å måtte kjøre hver underfunksjon to ganger på rad, en gang for de grønne lysdiodene og en gang for de røde. Kode Sample 2.3 - Dual Defined Arrays Som eksempel 2.2, utnytter eksempel 2.3 også den nye blinkAll2bytes () - funksjonen. 2.3s stor forskjell fra eksempel 1.3 er bare at i stedet for bare en enkelt variabel kalt data og et enkelt array kalt dataArray må du ha en dataRED, en dataGREEN, dataArrayRED, dataArrayGREEN definert foran. Dette betyr at line dataRED dataArrayREDj dataGREEN dataArrayGREENj shiftOut (dataPin, clockPin, data) shiftOut (dataPin, clockPin, dataGREEN) shiftOut (dataPin, clockPin, dataRED) Startet av Carlyn Maw og Tom Igoe Nov, 06Popular Topics Today Jeg forsøker å lære deg en litt om Shift Registers. Dette er en ganske viktig del av Arduino programmering, i utgangspunktet fordi de utvider antall utganger du kan bruke, i bytte for kun 3 kontrollpinner. Du kan også meldekjede skiftregister sammen for å få enda flere utganger. Dette er imidlertid et betydelig hopp i vanskeligheter fra tidligere opplæringsprogrammer, og jeg foreslår sterkt at du har en veldig god forståelse av det forrige materialet (linker i slutten av denne artikkelen), samt å forstå grunnleggende om binær Hva er binær teknologi som forklares Hva Er binær teknologi forklart Gitt at binær er så helt grunnleggende for eksistensen av datamaskiner, virker det rart at vi aldri har taklet emnet før - så i dag Id tanke Id gir en kort oversikt over hva binær. Les mer som jeg skrev forrige gang. Hva er et skiftregister Et utgangsskiftregister, teknisk sett, mottar data i seriell og sender det ut parallelt. I praksis betyr dette at vi raskt kan sende en mengde utgangskommandoer til brikken, fortelle den aktivere, og utgangene sendes til de aktuelle pinnene. I stedet for å iterere gjennom hver pin, sender vi bare utgangen som kreves for alle tappene samtidig, som en enkelt byte eller mer informasjon. Hvis det hjelper deg å forstå, kan du tenke på et skiftregister som en rekke digitale utganger, men vi kan hoppe over de vanlige digitalWrite-kommandoene og bare sende en serie biter for å slå dem på eller av. Hvordan fungerer det Skiftregisteret vi skal bruke 74HC595N inkludert i Oomlout-startpakken, krever bare 3 kontrollpinner. Den første er en klokke du trenger ikke bekymre deg for mye om dette da Arduino serielle biblioteker styrer det, men en klokke er i utgangspunktet bare en onoff elektrisk puls som setter tempoet for datasignalet. Sperrepinnen brukes til å fortelle skiftregisteret når den skal slå utgangene av og på i henhold til biter vi nettopp har sendt den, dvs. å låse dem på plass. Endelig er datapinnen hvor vi sendte de faktiske serielle dataene med biter for å bestemme utgangsstatusen for skiftregisterutgangene. Hele prosessen kan beskrives i 4 trinn: Sett datapinnen til høy eller lav for den første utgangspinnen på skiftregisteret. Puls klokken for å skifte dataene inn i registeret. Fortsett å stille inn dataene og pulse klokken til du har angitt ønsket tilstand for alle utgangsstifter. Puls sperren for å aktivere utgangssekvensen. Implementering Du trenger følgende komponenter for dette prosjektet: 7HC595N shift register chip 8 LEDS og passende motstander, eller hva du vil sende til Vanlig brødbrett, kontakter og en grunnleggende Arduino Og min monterte versjon: Ive endret den originale koden fra Ooolmout , men hvis du liker å prøve det i stedet, kan den lastes ned helt her. Forklaring av koden er inkludert, så kopier og lim inn hele saken nedenunder eller pastebin for å lese en forklaring av koden. Bit-Shifting (OutputBytes-funksjon) I det første loop-eksempelet outputBytes () benytter koden en 8-biters sekvens (en byte) som den deretter skifter, forlater hver iterasjon av forløpet. Det er viktig å merke seg at hvis du skifter lenger enn mulig, er biten bare tapt. Bitskifting gjøres ved å bruke ltlt eller gtgt etterfulgt av antall biter du vil skifte av. Sjekk ut følgende eksempel og sørg for at du forstår hva som skjer: Sending av helheter i stedet (OutputIntegers-funksjon) Hvis du sender et helt tall til skiftregisteret istedenfor en byte, konverterer det bare nummeret til en binær byte-sekvens. I denne funksjonen (ikke kommentert i sløyfen og opplasting for å se effekten) har vi en for sløyfe som teller fra 0-255 (det høyeste heltallet vi kan representere med en byte), og sender det i stedet. Det teller i utgangspunktet i binær, så sekvensen kan virke litt tilfeldig, med mindre lysdiodene dine er lagt ut i en lang linje. Hvis du for eksempel leser den binære forklarte artikkelen, vet du at tallet 44 vil bli representert som 00101100, så lysdiodene 3,5,6 kommer til å lyse på det tidspunktet i sekvensen. Daisy Chaining Mer enn ett Shift Register Den bemerkelsesverdige tingen om Shift Registers er at hvis de blir gitt mer enn 8-bits informasjon (eller hvor stor deres register er), vil de skifte de andre ekstra bitene ut igjen. Dette betyr at du kan koble sammen en serie av dem sammen, skyve inn en lang kjede av biter, og få den distribuert til hvert register separat, alt uten ekstra koding fra din side. Selv om vi ikke vil detaljere prosessen eller skjemaene her, hvis du har mer enn ett skiftregister, kan du prøve prosjektet fra det offisielle Arduino-nettstedet her. Andre artikler i serien: Det går så langt med skiftregister i dag, som jeg tror vi har dekket mye. Id oppfordrer deg til enhver tid til å leke med og justere koden, og gjerne stille spørsmål du måtte ha i kommentarene, eller til og med dele en link til ditt fantastiske skiftregisterbaserte prosjekt. 9 kommentarer Skriv en kommentar Nyeste opphav Relaterte artikler Siste tilbud Abonner på vårt nyhetsbrev

No comments:

Post a Comment