Arduino shift out binary opties




Arduino shift out binary optiesDe 74HC164 Shift Register en Uw Arduino ampquotome andere modellen zijn parallel in seriele out, ze doen hetzelfde maar als inputs naar de arduinoampquot. Welke deelnummers zijn deze, aangezien ik een 8-bits PISO-schuifregister op de 74XX-onderdelenlijst niet kan vinden, de meeste 74 logische series I. C. Heb een complementair deel dat 1 of 2 cijfers verschilt, kijk eens naar de 165 en 166. Die doen niet wat ik wil, maar laat het maar als ik het probleem heb gesorteerd. Ik moet informatie invoeren van 15 verschillende schakelaars naar de arduino, maar ik heb dat niet meer veel spelden (sommige zijn gebruikt als outputs). Ik heb 4 ltstronggt73LS30ltstronggt gebruikt (8 input NAND poorten) om een ??binaire 4-bits uitgang te geven, zodat ze alleen 4 pennen op de arduino gebruiken. Niet zo goed als 1 pin (serieel) maar beter dan 15 pins Zeer leuke handleiding. Er was een probleem om uit te vinden waar de klok (8) op de 74HC164 op de stekker 9 (V) zou steken. Ik heb het eindelijk gekregen en stond op pin 9.ltbrgtI vroeg me af waarom ik de pin 9 raakte, de leds zouden oplichten. ltbrgtDe realiseerde me dat ik als een soort grondwerk fungeerde toen het me raakte. LOLltbrgtMy volgende handleiding zal de 7 segment display. ltbrgtltbrgtOok ben ik afvragen hoe ik de 4x4 matrix flash letters. ItbrgtKunt u mij een beetje inzicht geven in dat Hoe kan ik het bestand. tmp in arduino IDE openen. Het lijkt niet werk. Klik op de links bovenaan het zal in je browser openen, gewoon kopieren en plakken, of het hernoemen van het tmp bestand naar pde (geen idee waarom dat doet) Oke. Ik probeer het. Bedankt Dit is een uitstekende instructieve Dit is veruit de beste beginnersgids om registers te verschuiven. Ik kom erbij. Hartelijk bedankt om dit hier te plaatsen. Ik hoop dat je nog steeds vragen beantwoordt voor dit instructeerbare. Ik ben klaar met de 4x4-matrix. Alles lijkt me goed te werken, maar ik heb problemen met het verlichten van de LEDs. ItbrgtltbrgtI kan gemakkelijk een individuele LED aansteken, maar als ik dat ook, krijg ik omgevingslampen ook aan te zetten (veel dimmer dan de aangestuurde LED) Aangevallen een foto om u te laten zien wat er gaande is. Ik probeer gewoon op te lichten en LED die in positie (1,1) staat maar tegelijkertijd LED (4,4) is licht verlicht. ltbrgtltbrgthere is het stuk code dat ik gebruik. LtbrgtshiftOut (data, klok, MSBFIRST, B10000001) Licht op vertraging (1) Licht op de vraag waarom ik wil bedanken voor een geweldige handleiding, ik ga de 4x4 Matrix opbouwen en laat je weten hoe het gaat. Het is een geweldige handleiding. Bedankt voor het maken, het is echt helpfull. Dit is een fantastische gids. Ik ben op zoek naar iets dat zo lang geschreven is. Ik heb nu een volledig werkende 4x4-ledematrix, die ik zelf heb gebouwd en de patronen laten zien die ik wil. Dit is alles dankzij jou. Lichtgevoeligheid Lichtgevoeligheid Lichtgevoeligheid Mikey C Superradleutie doodSerial tot Parallel Shifting-out met een 74HC595 Shifting-out-versterker de 595-chip In een of andere tijd kunt u de pennen op uw Arduino board verliezen en deze met schuifregisters verlengen. Dit voorbeeld is gebaseerd op de 74HC595. De datasheet verwijst naar de 74HC595 als een 8-bits serie-in, serie - of parallel-out shift register met uitgangslatches 3-state. Met andere woorden, u kunt het gebruiken om 8 uitgangen tegelijk te bedienen, terwijl u slechts een paar pinnen op uw microcontroller opneemt. U kunt meerdere registers samen koppelen om uw output nog meer uit te breiden. (Gebruikers kunnen ook andere driverschijven zoeken met 595 of 596 in hun partnummers. Er zijn veel. De STP16C596 zal bijvoorbeeld 16 LED's drijven en elimineert de serieweerstanden met ingebouwde constante bronnen.) Hoe dit allemaal werkt Is door middel van een zogenaamde synchrone seriele communicatie, dwz dat u een pin omhoog en omlaag kunt pulsen, waardoor een data-byte in het register per bit wordt gecommuniceerd. Het is door middel van pulserende tweede pen, de klokspeld, die u tussen de bits onderscheidt. Dit komt in tegenstelling tot het gebruik van de asynchrone seriele communicatie van de Serial. begin () functie die afhankelijk is van de afzender en de ontvanger onafhankelijk ingesteld worden op een afgesproken opgegeven data snelheid. Zodra de gehele byte naar het register is verzonden, worden de HIGH of LOW berichten in elk bit opgeslagen op elk van de afzonderlijke uitvoerpennen. Dit is het parallelle uitgangsdeel, met alle pinnen doen wat je wilt dat ze alles tegelijk doen. Het seriele uitgangsdeel van dit onderdeel komt van de extra pin die de seriele informatie die van de microcontroller is ontvangen, ongewijzigd kan doorgeven. Dit betekent dat u 16 bits in een rij (2 bytes) kan doorzenden en de eerste 8 door het eerste register naar het tweede register stroomt en daar worden uitgedrukt. U kunt leren dat vanuit het tweede voorbeeld. 3 staten verwijst naar het feit dat u de uitgangspennen als hoge, lage of hoge impedantie kunt instellen. In tegenstelling tot de HIGH en LOW staten, kunt u de pinnen niet afzonderlijk op hun hoge impedantiestand zetten. U kunt alleen de hele chip samenstellen. Dit is een mooi gespecialiseerd ding om te doen - Denk aan een LED-array die mogelijk door verschillende microcontrollers moet worden geregeld, afhankelijk van een specifieke modusinstelling die in uw project is ingebouwd. Geen voorbeeld maakt gebruik van deze functie en u hoeft meestal geen zorgen te maken over het verkrijgen van een chip die het heeft. Hier is een tabel waarin de pin-outs worden uitgelegd die zijn aangepast aan de Phillips datasheet. De eerste stap is om uw Arduino uit te breiden met een shift register. Het circuit 1. Zet het aan. Maak de volgende aansluitingen: GND (pin 8) naar de grond, Vcc (pin 16) tot 5V OE (pin 13) op de grond MR (pin 10) tot 5V. Deze instelling maakt alle uitgangspennen Actief en adresseerbaar de hele tijd. De enige fout van deze opstelling is dat u eindigt met de lichten die op hun laatste staat worden aangestuurd of iets willekeurig elke keer dat u het circuit eerst inschakelt voordat het programma begint te rennen. U kunt hierbij de MR - en OE-pennen van uw Arduino-bord bedienen, maar deze manier werkt en laat u meer open pennen. 2. Sluit aan op Arduino DS (pin 14) naar Ardunio DigitalPin 11 (blauwe draad) SHCP (pin 11) naar Ardunio DigitalPin 12 (geel draad) STCP (pin 12) naar Ardunio DigitalPin 8 (groene draad) Worden aangeduid als de dataPin, de clockPin en de latchPin respectievelijk. Let op de 0.1f condensator op de latchPin, als u flikkert als de speldpulsen u gebruikt, kunt u de condensator zelfs gebruiken. 3. Voeg 8 LED's toe. In dit geval dient u de kathode (korte pen) van elke LED op een gemeenschappelijke grond en de anode (lange pen) van elke LED aan te sluiten op de desbetreffende schuifregister uitgangspunt. Met behulp van het shift register om stroom te leveren zoals dit wordt sourcing current genoemd. Sommige shift registers kunnen bronstroom niet, ze kunnen alleen doen wat zogenaamde zinkstroom wordt genoemd. Als u er een van hebt, betekent dit dat u de richting van de LED's moet draaien. De anoden direct aan de macht zetten en de kathoden (grondpennen) aan de schuifregisteruitgangen. U moet uw specifieke datasheet controleren als u een 595-serie chip gebruikt. Vergeet niet om een ??220 ohm weerstand in serie toe te voegen om de LED's te beschermen tegen overbelasting. Circuit Diagram Hier zijn drie code voorbeelden. De eerste is gewoon een hallo wereldcode die simpelweg een byte waarde van 0 tot 255 geeft. Het tweede programma licht een LED tegelijk aan. De derde cyclus door een array. De code is gebaseerd op twee stukken informatie in de datasheet: het timing diagram en de logica tabel. De logica tabel is wat je zegt dat in principe alles belangrijk gebeurt op een up beat. Wanneer de klokpin van laag naar hoog gaat, leest het schuifregister de toestand van de gegevenspen. Naarmate de gegevens verschoven worden, wordt het opgeslagen in een intern geheugenregister. Wanneer de vergrendelingspin van laag naar hoog gaat, wordt de verzonden data verplaatst van het schuifregisters voornoemd geheugenregister naar de uitgangsspelden, verlicht de LED's. In dit voorbeeld voegt u een tweede shift register toe, waardoor u het aantal uitvoerpennen verdubbelt terwijl u nog steeds hetzelfde aantal pinnen uit de Arduino gebruikt. Het circuit 1. Voeg een tweede shift register toe. Uitgaande van het vorige voorbeeld moet u een tweede schuifregister op het bord plaatsen. Het zou dezelfde leidingen moeten hebben aan kracht en grond. 2. Sluit de 2 registers aan. Twee van deze verbindingen verlengen eenvoudig hetzelfde klok - en vergrendingssignaal van de Arduino naar het tweede schuifregister (gele en groene draden). De blauwe draad gaat van de seriele uitgangspunt (pin 9) van het eerste schuifregister naar de seriele data-invoer (pin 14) van het tweede register. 3. Voeg een tweede set LED's toe. In dit geval heb ik green ones toegevoegd, dus bij het lezen van de code is het duidelijk welke byte gaat naar welke set LED's Circuit Diagram Hier zijn weer drie code samples. Als u nieuwsgierig bent, kunt u de monsters van het eerste voorbeeld proberen met dit circuit op te stellen om te zien wat er gebeurt. Code Voorbeeld 2.1 Dual Binary Counters Er is slechts een extra codecode in vergelijking met het eerste code voorbeeld uit Voorbeeld 1. Het stuurt een tweede byte uit. Dit dwingt het eerste schuifregister, die direct aan de Arduino is bevestigd, om de eerste byte door te geven naar het tweede register, om de groene LED's te verlichten. De tweede byte verschijnt dan op de rode LED's. Code Voorbeeld 2.2 2 Byte One by One Vergelijking van deze code met de soortgelijke code uit Voorbeeld 1, zie dat een beetje meer moet veranderen. De functie blinkAll () is veranderd in de functie blinkAll2Bytes () om aan te geven dat er nu 16 LED's zijn om te controleren. Ook in versie 1 waren de pulsen van de latchPin gelegen in de subfuncties lightShiftPinA en lightShiftPinB (). Hier moeten ze teruggeschoven worden in de hoofdlus om tegemoet te komen aan elke subfunctie twee keer op rij, eenmaal voor de groene LED's en eenmaal voor de rode. Code Voorbeeld 2.3 - Dual Defined Arrays Zoals voorbeeld 2.2 maakt voorbeeld 2.3 ook gebruik van de nieuwe blinkAll2bytes () functie. 2.3s groot verschil van voorbeeld 1.3 is alleen dat in plaats van alleen een enkele variabele genaamd data en een enkele array genaamd dataArray u een dataRED, een dataGREEN, dataArrayRED, dataArrayGREEN gedefinieerde front moet hebben. Dit betekent dat line dataRED dataArrayREDj dataGREEN dataArrayGREENj shiftOut (dataPin, clockPin, data) shiftOut (dataPin, clockPin, dataGREEN) shiftOut (dataPin, clockPin, dataRED) Gestart door Carlyn Maw en Tom Igoe Nov, 06Populaire onderwerpen vandaag, ik probeer je een Beetje over Shift Registers. Dit zijn een redelijk belangrijk onderdeel van de programmering van Arduino, in wezen omdat ze het aantal uitvoeringen uitbreiden dat u kunt gebruiken, in ruil voor slechts 3 besturingspennen. U kunt ook madeliefjesverschuiving samen registreren om nog meer uitgangen te krijgen. Dit is een belangrijke stap in moeilijkheden van eerdere tutorials, en ik stel sterk voor dat je een goed begrip hebt van het vorige materiaal (links aan het eind van dit artikel), evenals het begrijpen van de basis van binary Wat is binaire technologie uitgelegd Wat Is Binaire Technologie Uitgelegd Gezien het feit dat binair zo absoluut fundamenteel is voor het bestaan ??van computers, lijkt het vreemd dat we het onderwerp nog nooit hebben aangepakt, zodat vandaag Id thought Id een kort overzicht geeft van wat binair. Lees meer, die ik vorige keer schreef. Wat is een Shift-registratie? Een output shift register, technisch gezien, ontvangt gegevens in serie en geeft deze parallel uit. In praktische zin betekent dit dat we snel een reeks uitvoeropdrachten naar de chip kunnen sturen, het kunnen vertellen, en de uitgangen worden naar de betreffende pinnen gestuurd. In plaats van door elke pin te herhalen, sturen we gewoon de benodigde uitvoer voor alle pennen tegelijk, als een enkele byte of meer informatie. Als het u helpt te begrijpen, kunt u aan een shift register als een reeks digitale uitgangen denken, maar we kunnen de gebruikelijke DigitalWrite-commando's overslaan en gewoon een aantal bits verzenden om ze aan of uit te zetten. Hoe werkt het? Het schuifregister dat we gebruiken met de 74HC595N die in de Oomlout-startkit zit, heeft slechts 3 bedieningspennen nodig. De eerste is een klok die je hier niet te veel moet zorgen over, omdat de Arduino seriele bibliotheken het regelen, maar een klok is in principe gewoon een onoffische elektrische puls die het tempo voor het datasignaal stelt. De vergrendelingspin wordt gebruikt om het schuifregister te vertellen wanneer het de uitgangen ervan moet aan - en uitzetten volgens de bits die we zojuist hebben verzonden, dwz dat ze op hun plaats zijn gelast. Tenslotte is de data pin waar we de werkelijke seriele gegevens met de bits hebben gestuurd om de onoff toestand van de shift registers uitgangen te bepalen. Het hele proces kan in 4 stappen beschreven worden: Stel de data pin op hoog of laag voor de eerste uitgangspunt op het shift register. Puls de klok om de gegevens in het register te verschuiven. Ga door met het instellen van de gegevens en de klok te pulsen totdat u de benodigde toestand hebt ingesteld voor alle uitgangsspelden. Puls de vergrendelingspin om de uitvoervolgorde te activeren. Implementatie U hebt de volgende onderdelen nodig voor dit project: 7HC595N shift register chip 8 LED's en passende weerstanden, of wat u ook wilt uitvoeren naar The usual breadboard, connectors, en een basis Arduino En mijn gemonteerde versie: Ive heeft de originele code van Ooolmout gewijzigd , Maar als je dat graag wilt proberen, kan het hier volledig worden gedownload. Uitleg van de code is inbegrepen, dus kopieer en plak het hele ding van onder of pastebin om een ??uitleg van de code te lezen. Bit-Shifting (OutputBytes-functie) In de eerste lusvoorbeeld gebruikt outputBytes () de code een 8-bits-sequentie (een byte), die vervolgens verschuift, verliet elke herhaling van de voorlus. Het is belangrijk om op te merken dat als je verder gaat dan mogelijk is, het beetje gewoon verloren gaat. Bit-shifting wordt gedaan met behulp van ltlt of gtgt gevolgd door het aantal bits dat u wilt verschuiven. Controleer het volgende voorbeeld en zorg dat u begrijpt wat er gebeurt: Integers verzenden in plaats daarvan (OutputIntegers-functie) Als u een hele getal naar het shift register verzendt in plaats van een byte, zal het gewoon het nummer omzetten in een binaire byte-volgorde. In deze functie (niet in de lus en uploaden om het effect te zien) hebben we een voorlus die telt van 0-255 (het hoogste getal dat we met een byte kunnen vertegenwoordigen), en stuurt dat in plaats daarvan. Het telt in principe in binair, dus de sequentie lijkt misschien een beetje willekeurig, tenzij je LED's in een lange lijn liggen. Als u bijvoorbeeld het binairrechte artikel leest, weet u dat het nummer 44 als 00101100 zal worden weergegeven, dus LED's 3,5,6 gaan op dat moment in de volgorde oplichten. Daisy Chaining Meer dan een Shift Register Het opmerkelijke ding over Shift Registers is dat als ze meer dan 8 bits informatie krijgen (of hoe groot hun register is), zullen ze de andere extra bits weer verschuiven. Dit betekent dat u samen een serie van elkaar kunt aansluiten, een lange keten van bits in te drukken en het afzonderlijk naar elk register te verdelen, allemaal zonder extra codering van uw kant. Alhoewel we het proces of de schema hier niet kunnen specificeren, als u meer dan een shift register hebt, kunt u het project hier op de officiele Arduino site proberen. Andere artikelen in de serie: Dat is zoveel goed met shift registers vandaag, zoals ik denk dat we veel hebben gedekt. Id stimuleert u altijd aan om mee te spelen en de code aan te passen en u kunt vrijblijvend vragen stellen die u in de reacties heeft, of zelfs een link kunt delen met uw geweldige shift-register gebaseerde project. 9 reacties Schrijf een reactie Laatste geefjes Verwante artikelen Laatste aanbiedingen Schrijf u in voor onze nieuwsbrief