Monday, October 17, 2016

Arduino Shift Out Binary Options

bitshift links (ltlt), bitshift reg (gtgt) beskrywing uit Die Bitmath Tutoriaal op die speelgrond Daar is twee bietjie verskuiwing operateurs in C: links verskuiwing operateur ltlt en die reg verskuiwing operateur gtgt. Hierdie operateurs veroorsaak dat die stukkies in die linker operand links of regs te skuif die aantal poste wat deur die reg operand. Meer oor bis wiskunde kan hier gevind word. Sintaksis veranderlike ltlt numberofbits veranderlike gtgt numberofbits parameters veranderlike - (byte, int, lang) numberofbits heelgetal Dit 32 Voorbeeld: As jy 'n waarde x skuif deur y stukkies (x ltlt y), die linker y stukkies in x verlore, letterlik verskuif uit bestaansjaar: As jy seker is dat nie een van die kinders in 'n waarde is verskuif in die vergetelheid is, 'n eenvoudige manier om te dink aan die linker-verskuiwing operateur is dat dit vermeerder links operand deur 2 opgewek om die regte operand mag. Byvoorbeeld, om magte van 2 genereer, kan die volgende uitdrukkings in diens geneem word: Wanneer jy x skuif reg deur y stukkies (x gtgt y), en die hoogste bietjie in x is 'n 1, die gedrag hang af van die presiese datatipe van x . As x is van tipe int, die hoogste bietjie is die teken bietjie, om te bepaal of x is negatiewe of nie, soos ons hierbo bespreek het. In daardie geval, is die teken bietjie kopieer na 'n laer stukkies, vir esoteriese historiese redes: Hierdie gedrag, genaamd teken uitbreiding, is dikwels nie die gedrag wat jy wil. In plaas daarvan, kan jy wil nulle te verskuif in vanaf die linkerkant. Dit blyk dat die reg verskuiwing reëls anders vir ongetekende int uitdrukkings is, sodat jy kan 'n typeren gebruik om te onderdruk kinders dit gekopieer is van links: As jy versigtig is om teken uitbreiding te vermy, kan jy die regte-verskuiwing operateur gtgt as 'n gebruik manier om te verdeel deur magte van 2. byvoorbeeld: Korreksies, voorstelle, en nuwe dokumentasie moet gepos word aan die Forum. Die teks van die Arduino verwysing is gelisensieer ingevolge 'n Creative Commons Erkenning-Insgelyks Deel 3.0-lisensie. Kode monsters in die verwysing is vrygestel in die publieke domein vry. ShareThe 74HC164 skuifregister en jou Arduino ampquotsome ander modelle is parallel in reeks uit, hulle doen dieselfde ding, maar as insette tot die arduinoampquot. Watter deel getalle beteken dit, as ek 'n 8 bit Piso skuifregister op die 74XX dele can39t vind lys meeste 74 logika reeks I. C. 'n aanvullende rol wat 1 of 2 syfers verskillende, 'n blik op die 165 en 166. Diegene don39t doen wat ek wil, maar never mind as I39ve die probleem uitgesorteer. Ek nodig het om insette inligting van 15 verskillende skakelaars om die Arduino, maar ek don39t het dat baie penne spaar ltemgt (sommige is in gebruik as uitsette) Dit / emgt. I39ve gebruik 4 ltstronggt73LS30lt / stronggt (8 inset NEN hekke) om 'n binêre 4 bietjie uitset gee, sodat hulle sal net gebruik 4 penne op die Arduino. Nie so goed soos 1 pen (reeks), maar beter as 15 penne Baie cool handleiding. ltbrgtI het 'n probleem uitzoeken waar te prop in die klok (8) ltbrgtand pen 9 (V) op die 74HC164. Ek het dit uiteindelik en gegrond pen 9.ltbrgtI het gewonder hoekom wanneer ek aangeraak pen 9, sou die LED lig up. ltbrgtThen besef ek besig was om as 'n soort grond, dan is dit my getref. LOLltbrgtMy volgende tutoriaal sal die 7 segment display. ltbrgtltbrgtAlso Ek het gewonder hoe ek die 4x4 matriks flits letters. ltbrgtCould jy gee my 'n paar insig op daardie Hoe kan ek die lêer Tmp in Arduino IO oop kan hê. blyk dit nie die geval is werk. ltbrgtthank jou :) Klik op die skakels bo dit sal oopmaak in jou browser, net kopieer en plak, of die naam van die tmp lêer te NDI (het geen idee hoekom sy doen dit) Goed. i39ll probeer. Dankie Dit is 'n uitstekende instructible Dit is by verre die beste beginners gids tot registers skuif i39ve regoor kom. Thank you so much vir om hierdie daarbuite. Ek hoop dat jy nog vrae vir hierdie instructable beantwoord. Ek het klaar die bou van die 4x4 matriks. Alles nate te werk boete, maar Ek het probleme met die verligting van die LEDs. ltbrgtltbrgtI kan maklik aan te spreek 'n individu LED aan die lig nie, maar wanneer ek kry Ek omgewing LEDs om op sowel draai (baie dowwer dan die aandag LED) ltbrgtltbrgtI het aangeval 'n foto om te wys wat aangaan. Ek probeer net lig en LED wat in posisie (1,1), maar as dieselfde tyd LED (4,4) is dof lit. ltbrgtltbrgthere is die stuk kode wat ek gebruik. ltbrgtshiftOut (data, klok, MSBFIRST, B10000001) ltbrgt vertraging (1) ltbrgtltbrgtAny raai waarom Hallo wou sê baie dankie vir 'n groot handleiding, ek gaan om klaar te bou van die 4x4 matriks en sal jou laat weet hoe dit gaan. ltbrgt Groot tutorial. ampnbsp Dankie vir die maak van dit, it39s real helpfulltbrgt Dit is 'n fantastiese gids ltbrgt ltbrgt I39ve is op soek na iets geskryf soos hierdie vir 'n rukkie. ltbrgtI het nou 'n ten volle werkende 4x4 gelei matriks, wat I39ve gebou myself, en het na die patrone wat ek wil wys. ltbrgt ltbrgtThis is alles te danke aan jou. ltbrgt ltbrgt ltbrgt Cheers, ltbrgt ltbrgt Mikey C Super rad handleiding doodPopular Onderwerpe MakeUseOf Top Deals Vandag Siek poging om jou te leer 'n bietjie oor Shift registers. Dit is 'n redelik belangrike deel van Arduino programmering, basies omdat hulle uit te brei die aantal uitgange wat jy kan gebruik, in ruil vir net 3 beheer penne. Jy kan ook daisy-ketting verskuiwing registreer saam ten einde nog meer uitsette te kry. Dit is 'n beduidende sprong in moeilikheidsgraad van vorige tutoriale al is, en ek raai jy het 'n baie goeie begrip van die vorige materiaal (links aan die einde van hierdie artikel), asook die begrip van die basiese beginsels van binêre Wat Is Binary Tegnologie verduidelik wat is Binary Tegnologie hoe & Gegewe dat binêre so absoluut noodsaaklik vir die bestaan ​​van rekenaars, dit lyk vreemd dat weve nooit die onderwerp aangepak voordat - so vandag id gedink id gee 'n kort oorsig van wat binêre. Lees meer wat ek geskryf laaste keer. Wat is 'n skuifregister 'n uitset skuifregister, tegnies gesproke, ontvang data in serie en uitgange dit in parallel. In praktiese terme beteken dit ons kan vinnig 'n klomp van die uitset instruksies te stuur na die chip nie, sê dit aan te aktiveer, en die uitsette sal aan die betrokke penne gestuur. In plaas van iterating deur elke pen, ons eenvoudig die vereiste om al die penne in 'n keer uitset, as 'n enkele byte of meer inligting te stuur. As dit jou help om te verstaan, kan jy dink aan 'n verskuiwing registreer as 'n verskeidenheid van digitale uitgange, maar ons kan die gewone digitalWrite opdragte oor te slaan en net stuur 'n reeks stukkies om dit op of af te skakel. Hoe werk dit Die verskuiwing registreer sal ons met behulp van die 74HC595N ingesluit in die Oomlout beginnerskit hoef net 3 beheer penne. Die eerste is 'n klok wat jy neednt te veel hieroor bekommer as die Arduino reeks biblioteke te beheer nie, maar 'n horlosie is basies net 'n aan / af elektriese pols wat die pas aangee vir die data sein. Die grendel pen gebruik om die verskuiwing registreer vertel wanneer dit sy uitgange moet draai op en af ​​volgens die stukkies wat ons net stuur dit wil sê klemmende hulle in plek. Ten slotte, die data pen is waar ons die werklike seriële data gestuur met die stukkies om te bepaal die aan / af toestand van die verskuiwing registreer uitgange. Die hele proses kan beskryf in 4 stappe: Stel die data pen te hoog of laag is vir die eerste produksie pen op die verskuiwing registreer. Pols die klok om die data te skuif in die register. Gaan voort opstel van die data en die klok polsende totdat jy die verlangde staat gestel het vir die hele produksie penne. Pols die grendel pen om die uitset volgorde te aktiveer. Implementering Jy moet die volgende komponente vir hierdie projek: 7HC595N skuifregister chip 8 LED's en toepaslike resistors, of wat ook al jy wil uitvoer na die gewone broodbord, aansluiting, en 'n basiese Arduino en my vergader weergawe: Ive verander die oorspronklike kode wat deur Ooolmout , maar as youd graag probeer dat in plaas, dit kan hier afgelaai word ten volle. Verduideliking van die kode is ingesluit, sodat kopieer en plak die hele ding van onder of pastebin om 'n verduideliking van die kode te lees. Bietjie-verskuiwing (OutputBytes funksie) In die eerste rondte voorbeeld outputBytes () die kode gebruik van 'n 8-bis volgorde (a byte) wat dit dan skofte gelaat elke iterasie van die lus. Dit is belangrik om daarop te let dat as jy verder skuif as moontlik is, die bietjie is eenvoudig verloor. Bietjie-verskuiwing is gedoen met behulp van ltlt of gtgt gevolg deur die aantal bisse wat jy wil deur te skuif. Kyk bietjie na die volgende voorbeeld en maak seker jy verstaan ​​whats happening: Stuur Heelgetalle plaas (OutputIntegers funksie) As jy 'n hele aantal stuur na die verskuiwing registreer in plaas van 'n greep, sal dit bloot die aantal omskep in 'n binêre byte volgorde. In hierdie funksie (uncomment in die lus en oplaai na die effek te sien), het ons 'n for-lus wat tel 0-255 (die hoogste heelgetal ons kan verteenwoordig met een byte), en stuur dit in plaas. Dit tel basies in binêre, sodat die volgorde mag lyk 'n bietjie random tensy jou LEDs in 'n lang lyn gelê. Byvoorbeeld, as jy lees die binêre verduidelik artikel, sal jy weet dat die getal 44 word verteenwoordig as 00.101.100, sodat LEDs 3,5,6 gaan lig op daardie stadium in die ry. Daisy Aaneenskakeling meer as een skof Registreer Die merkwaardige ding oor Shift registers is dat indien hulle kry meer as 8-brokkies inligting (of hoe groot hul register is), sal hulle die ander bykomende stukkies weer te skuif. Dit beteken dat jy kan aanmekaar te heg aan 'n reeks van hulle, stoot in 'n lang ketting van stukkies, en dit uitgedeel aan elkeen afsonderlik registreer, almal met geen ekstra kodering van jou kant. Hoewel ons die proses of skedule hier gewoond besonderhede, as jy meer as een skof registreer kan jy die projek van die amptelike Arduino webwerf hier probeer. Ander artikels in die reeks: Dis so ver so goed gaan met skof registers vandag, as ek dink weve bedek baie. Soos altyd, Id wil u aanmoedig om te speel met en pas die kode, en voel vry om enige vrae wat u mag hê te vra in die kommentaar, of selfs 'n skakel na jou ontsagwekkende skuifregister projek deel. 9 kommentaar Skryf 'n boodskap Laaste Giveaway Verwante Artikels Laaste DealsSerial om parallelle Shifting-met 'n 74HC595 Shifting Out amp die 595 chip Op een of ander tyd of 'n ander kan jy uit penne uitgevoer word op jou Arduino raad en moet dit uit te brei met skof registers. Hierdie voorbeeld is gebaseer op die 74HC595. Die datavel verwys na die 74HC595 as 'n 8-bis reeks-in, reeks of parallel-out skuifregister met uitset Haken 3-staat. Met ander woorde, kan jy dit gebruik om 8 uitgange beheer op 'n tyd, terwyl slegs die neem van 'n paar penne op jou mikrobeheerder. Jy kan verskeie registers met mekaar te verbind om jou uitset nog meer uit te brei. (Gebruikers kan ook soek vir ander bestuurder skyfies met 595 of 596 in hul deel nommers, daar is baie. Die STP16C596 byvoorbeeld sal 16 LEDs ry en elimineer die reeks resistors met ingeboude konstante stroom bronne.) Hoe dit alles werke is deur iets genoem sinchrone reeks kommunikasie, dws jy kan die groente een pen op en af ​​en sodoende 'n data greep te kommunikeer om die register stukkie vir stukkie. Die deur polsende tweede pen, die klok pen, wat jou baken tussen stukkies. Dit is in teenstelling met die gebruik van die asynchrone reeks kommunikasie van die funksie Serial. begin () wat staatmaak op die sender en die ontvanger om onafhanklik ingestel word om 'n grond van bepaalde data koers ooreengekom. Sodra die hele byte aan die registreer die hoë of lae boodskappe wat in elke bietjie oorgedra kry versnippering aan elk van die individuele uitset penne. Dit is die parallel uitset deel, met al die penne te doen wat jy wil hê hulle om alles te doen in 'n keer. Die reeks produksie deel van hierdie komponent is afkomstig van die ekstra pen wat die reeks inligting ontvang het van die mikrobeheerder weer onveranderd kan slaag. Dit beteken dat jy kan 16 stukkies oordra in 'n ry (2 grepe) en die eerste 8 sal deur die eerste register vloei in die tweede register en word daar uitgespreek. Jy kan leer om dit te doen uit die tweede voorbeeld. 3 state verwys na die feit dat jy die uitset penne kan stel as óf 'n hoë, lae of hoë impedansie. In teenstelling met die hoë en lae lande, Cant jy stel penne om hul hoë impedansie staat individueel. Jy kan net saam te stel die hele chip. Dit is 'n mooi gespesialiseerde ding om te doen - Dink aan 'n LED skikking wat mag nodig wees om beheer word deur heeltemal ander mikrobeheerders, afhangende van 'n spesifieke modus instelling gebou in jou projek. Nóg voorbeeld neem voordeel van hierdie funksie, en jy sal gewoonlik hoef te bekommer oor die manier waarop 'n chip wat dit het. Hier is 'n tabel waarin jy die pen-outs aangepas uit die Phillips datablad. Die eerste stap is om jou Arduino brei met 'n verskuiwing registreer. Die Circuit 1. Draai dit op Maak die volgende verbindings: GND (pen 8) tot grond, Vcc (pen 16) om 5V OE (pen 13) om gemaalde MR (pen 10) om 5V Dit opstel maak al die uitset penne aktiewe en aanspreekbaar al die tyd. Die een fout van die opstel is dat jy eindig met die ligte draai op hul laaste staat of iets arbitrêr elke keer as jy eers krag tot die kring voor die program begin loop. Jy kan rondom hierdie kry deur die beheer van die MR en OE penne van jou Arduino raad ook, maar hierdie manier sal werk en laat jou met meer oop penne. 2. Skakel om Arduino DS (pen 14) om Ardunio DigitalPin 11 (blou draad) Shcp (pen 11) om te Ardunio DigitalPin 12 (geel draad) STCP (pen 12) om Ardunio DigitalPin 8 (groen draad) Van nou af diegene sal onderskeidelik verwys as die dataPin, die clockPin en die latchPin. Let op die 0.1f kapasitor op die latchPin, as jy het 'n paar flikker wanneer die grendel pen polse kan jy 'n kapasitor gebruik om dit uit in die aand. 3. Voeg 8 LEDs. In hierdie geval moet jy die katode (kort pen) van elke gelei tot 'n gemeenskaplike grond, en die anode (lang pen) van elke gelei tot sy onderskeie skuifregister uitset pen verbind. Die gebruik van die skuifregister te voorsien krag soos hierdie is die verkryging huidige genoem. Sommige verskuiwing registreer cant bron huidige, kan hulle net doen wat genoem sink huidige. As jy een van daardie het dit beteken dat jy sal moet die rigting van die LED's flip. om die anodes direk aan bewind en die katodes (grond penne) om die verskuiwing registreer uitgange. Jy moet die jou spesifieke datablad kyk of jy Arent gebruik te maak van 'n 595-reeks chip. Moenie vergeet om 'n 220-ohm resistor in serie te voeg aan die LEDs beskerm teen oorlaai. Kringdiagram die Kode Hier is drie kode voorbeelde. Die eerste is net 'n paar hello world-kode wat eenvoudig 'n greep waarde van 0 tot 255. Die tweede program ligte een LED op 'n slag uitgange. Die derde siklusse deur middel van 'n skikking. Die kode is gebaseer op twee stukkies inligting in die blad: die tydsberekening diagram en die logika tafel. Die logika tafel is wat jy vertel wat basies alles belangrik gebeur op 'n up beat. Wanneer die clockPin gaan van laag na hoog, die verskuiwing registreer lui die toestand van die data pen. As die data kry verskuif daarin is gestoor in 'n interne geheue registreer. Wanneer die latchPin gaan van laag na hoog die gestuur data kry verskuif vanaf die verskuiwing registers bogenoemde geheue register in die uitset penne, die verligting van die LEDs. Voorbeeld 2 In hierdie voorbeeld sal jy voeg 'n tweede skof registreer, die verdubbeling van die aantal uitset penne jy terwyl jy nog met dieselfde aantal penne van die Arduino. Die Circuit 1. Voeg 'n tweede skof registreer. Vanaf die vorige voorbeeld, moet jy 'n tweede skof registreer sit op die bord. Dit moet dieselfde lei tot krag en grond het. 2. Skakel die 2 registers. Twee van hierdie verbindings net dieselfde klok uit te brei en grendel sein van die Arduino tot die tweede skof registreer (geel en groen drade). Die blou draad gaan van die reeks uit pen (pen 9) van die eerste skof registreer om die reeks data insette (pen 14) van die tweede register. 3. Voeg 'n tweede stel LEDs. In hierdie geval is groen pyle bygevoeg ek so lees die kode is dit duidelik wat byte gaan wat stel LEDs kringdiagram die Kode Hier weer is drie-kode monsters. As jy nuuskierig is, wil jy dalk om die monsters te probeer uit die eerste voorbeeld van hierdie kring opgestel net om te sien wat gebeur. Kode Voorbeeld 2.1 Dubbele Binary Tellers Daar is net een ekstra reël van die kode in vergelyking met die eerste-kode monster van Voorbeeld 1. Dit stuur 'n tweede greep. Dit dwing die eerste skof registreer, die een direk verbonde aan die Arduino, om die eerste byte gestuur deur na die tweede register slaag, verligting van die groen LEDs. Die tweede byte sal dan vertoon op die rooi LEDs. Kode Voorbeeld 2.2 2 Byte een vir een Vergelyk hierdie kode om die soortgelyke kode van Voorbeeld 1 wat jy sien wat 'n bietjie meer moes verander. Die funksie blinkAll () is verander na die blinkAll2Bytes () funksie om die feit te weerspieël wat nou daar is 16 LEDs te beheer. Ook in weergawe 1 die pulsings van die latchPin is geleë binne die subfunksies lightShiftPinA en lightShiftPinB (). Hier moet hulle terug in die hoof lus word verskuif na akkommodeer hoef aan elke subfunksie twee keer uit te voer in 'n ry, een keer vir die groen LED's en een keer vir die rooies. Kode Voorbeeld 2.3 - Dual-gedefinieerde Skikkings Soos monster 2.2, voorbeeld 2.3 neem ook voordeel trek uit die nuwe blinkAll2bytes () funksie. 2.3s groot verskil van monster 1.3 is net dat in plaas van net 'n enkele veranderlike genoem data en 'n enkele skikking met die naam dataArray jy 'n dataRED, 'n dataGREEN, dataArrayRED het, dataArrayGREEN gedefinieer aan die voorkant. Dit beteken dat die lyn dataRED dataArrayREDj dataGREEN dataArrayGREENj shiftOut (dataPin, clockPin, data) shiftOut (dataPin, clockPin, dataGREEN) shiftOut (dataPin, clockPin, dataRED) Begin deur Carlyn Maw en Tom Igoe November, 06Navigation Huidige weergawe 1.1.0 2011-03 -02: Ondersteuning IDE 1.0. en getoets op 0021 en 0022 Geskiedenis 1.0.0 2012/01/13: Eerste release. 1.1.0 2012/03/02: tweede vrylating. Beskrywing shiftOutX is 'n biblioteek te skuif registers te beheer. Ek het dit gebruik word op vier 74HC595 verskuiwing registers daisy vasgeketting, maar dit kan beheer tot agt registers. dit SPI nie gebruik sodat dit nie werk vir PWM maar as Af skakelaars is al wat nodig is om LEDs en / of aflos (waarskynlik transistors om die aflosse ry wat eintlik wat ek dit gebruik het vir) dan sal dit werk ry . is net soos die digitale uitgange op die Arduino. Dit is saamgestel uit gemodifiseerde shiftOut funksies van wiringshift. c. hopelik sal dit iemand dien. in weergawe 1.1.0 SPI is bygevoeg en verwysings na byte skikkings gebruik in plaas van 'n lang lang heelgetalle, dit is vinniger en PWM werk nie (sagteware geïmplementeer). Aflaai, installeer en invoer en sit die shiftOutX gids in / Dokumente / Arduino / biblioteke (Mac) of My documentsArduinolibraries (Windows) van Arduino IO. Jy kan 'n voorbeeld skets van lêer Sien - gt Sketsboek - gt Voorbeeld - gt shiftOutX - gt shiftFourRegisters. Om 'n nuwe skets skep, kies op die menubalk Skets-gtImport Biblioteek-gtshiftOutX. Sodra die biblioteek is ingevoer, 'n sluit ltshiftOutX. hgt lyn sal verskyn aan die bokant van jou skets. en ook, 'n sluit ltshiftPinNo. hgt Creation Jy moet 'n afskrif van die klas shiftOut soos hierdie te skep: // shiftOutX (byte latchPin, byte dataPin, byte clockPin, byte bitOrder, byte NofRegisters) shiftOutX regGroupOne 40 8. 11. 12. MSBFIRST. 4 41 // ja jy kan heg meer daisy vasgeketting registers gebruik net // n diferent latchPin nommer sodat jy eintlik 'n ander // vier registers kan voeg en neem net 'n ander pen van die // Arduino net verklaar 'n ander geval byvoorbeeld // regGroupTwo en gebruik dieselfde dataPin en clockPin. // Jy kan twee groepe agt gebruik vir 'n totaal van 128 uitgange Konstantes funksies Voorbeeld Oor hierdie bladsy


No comments:

Post a Comment