Tussenliggende Arduino: Ingangen en uitgangen (4 / 9 stap)

Stap 4:595 en ShiftOut


Volgende die we een kijkje op de 595 van gegevensblad nemen zullen te vinden van de juiste pinnen op aansluiten. Deze eerste afbeelding hierboven toont de 595 pin aansluitingen. Er zijn 16 pins op de 595, geëtiketteerd 1-16. Merk de halve cirkel markering aan de ene kant van de chip, de #1 pin bevindt zich altijd aan de linker kant van deze chip. De rest van de pinnen zijn rond de chip gaan in de richting tegen de klok in genummerd.

De tweede afbeelding toont de naam van de pin, gerangschikt van pin-nummer, met een korte beschrijving. Pins 1-7 en 15 zijn de uitgangen Q0-Q7, laat die pinnen los voor nu. Pin 8 is een grond pin, sluit deze aan op grond van de Arduino. Pin 9 is een seriële data uitgang, dit wordt gebruikt om te verbinden met andere 595 voor daisy chaining. Serieschakeling kunt rijden van 16 of meer uitgangen met behulp van slechts drie van de digitale pinnen van de Arduino. Het is een beetje buiten de werkingssfeer van deze tutorial, maar u kunt meer lezen over het hier. Omdat we niet pin 9 gebruikt, kunnen we overlaten los (ook wel "drijvende" genoemd). Pin 10 is de master reset, wanneer deze pin laag gaat, hierdoor het shift register opnieuw instellen - geen gegevens verloren gaan we misschien hebben eerder opgeslagen. We niet willen dat deze functionaliteit nu, dus het resetten verbinden met 5V om te voorkomen dat opnieuw gebeurt. PIN 11 is de klok ingang of "klok pin", sluit deze aan op digitale pin van de Arduino 7. Pin 12 is de opslag registreren klok ingang of "klink pin", sluit deze aan op Arduino digitale pin 6. Pin 13 is de uitvoer inschakelen pin, wanneer er lage hierdoor de 595 gegevens te sturen naar de resultaten, we willen dit, deze pin verbinden met grond. Pin 14 is de seriële data-ingang, sluit deze aan op digitale pin van de Arduino 5. Pin 16 is de voeding naar de chip, sluit deze aan op 5V. De schakeling moet uitzien als afbeelding 3.

Sluit nu een LED en een weerstand om grond aan elk van de 595 van acht uitgangen pinnen. De schakeling moet er nu uitzien zoals in afbeelding 4. Nu instellen van de pin van een uitgang van de 595 hoge de bijbehorende LED zal oplichten, en lage instelling zal uitzetten de LED. Upload de volgende code:

 //set 595 state int clockPin = 7; int latchPin = 6; int dataPin = 5; byte numberToDisplay = 154; void setup() { //all connections to 595 are outputs pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { //first set latch pin low so we can shift in data without disrupting the outputs digitalWrite(latchPin, LOW); // shift out bits of data shiftOut(dataPin, clockPin, LSBFIRST, numberToDisplay); //set latch pin high to send data to output pins digitalWrite(latchPin, HIGH); } 

Deze code introduceert een nieuw gegevenstype bytegenoemd, byte is zoals int, maar omdat bytes nodig alleen 8 bits van het geheugen, slaan ze alleen getallen tussen 0 en 255 (2 ^ 8 = 256).

De rest van de code is eenvoudig, met uitzondering van de regel:

shiftOut (dataPin, clockPin, LSBFIRST, numberToDisplay);

In deze lijn, de Arduino gebruikt de gegevens en klok pinnen van de 595 te sturen van het nummer 154 (de huidige waarde van numberToDisplay) in het register van de verschuiving. Het nummer 154 bevat de Staten van alle 8 pinnen van de 595:

154 geconverteerd naar een binair getal is 10011010

Als je kijkt naar de Staten voor uw LEDs, ziet u dat de verbonden met Q0 LED brandt, Q1 en Q2 uitgeschakeld, Q3 zijn en Q4 zijn op Q5 uitstaat, Q6 brandt en Q7 uitgeschakeld is. Zodat de LEDs hetzelfde patroon als het binaire getal volgen, een 1 staat voor een op LED en een 0 geeft aan dat een off LED.

Probeer nu de andere getallen is het getal 15 binaire 00001111 is, kunt u andere Decimaal aan binaire conversies op google door te typen van een # dan de zin "naar een binair getal" (het nummer het spuugt zal beginnen met 0b, negeren dat deel en pak de laatste 8 cijfers). Vergeet niet dat wij alleen binaire getallen met 8 cijfers in hen (8-bits) naar het shift register verzenden kunt omdat het heeft slechts 8 output pinnen, zodat de waarde van de numberToDisplay tussen 0 en 255 liggen moet.

Nu kunt u de parameter LSBFIRST MSBFIRST te proberen, moet u de volgorde van de LEDs achterzijde staat deze variabele sets de richting dat we het binaire getal dat in de 595 sturen: LSBFIRST betekent "minst significante bit eerst" en MSBFIRST betekent "meest significante bit eerst".

Om het een beetje meer interessant, probeert u het volgende:

 int clockPin = 7; int latchPin = 6; int dataPin = 5; void setup() { //all connections to 595 are outputs pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { for (byte numberToDisplay=0;numberToDisplay<256; numberToDisplay++){ digitalWrite(latchPin, LOW); // shift out bits of data shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay); //set latch pin high to send data to output pins digitalWrite(latchPin, HIGH); delay(500); } } 

U hebt nu uw LEDs omgezet in een binaire teller:

Gerelateerde Artikelen

Tussenliggende Arduino: In- en uitgangen

Tussenliggende Arduino: In- en uitgangen

Stap 2: Arduino knop DebouncingVoortzetting van de knop debouncing dat ik in mijn laatste Instructable geïntroduceerd, kunnen we millis() gebruiken om debounce knoppen zonder gebruik te maken van delay(): //Button Press Detection - debounce with mill
Arduino Powered Home

Arduino Powered Home

Ik heb een paar updates in dit instructable sinds Aug 2014 ***Heb ik besloten om deze informatie te delen, zodat het anderen die hebben moeite helpen misschien om soortgelijke dingen met hun Arduino doen. Ik heb pas onlangs gekregen die betrokken zij
Hoe de code Arduinos

Hoe de code Arduinos

Dus ik was op zoek via de help-sectie van de Gemeenschap, toen ik zag sommige mensen waar problemen met de codering Arduinos, dus ik ben waardoor dit om te helpen.Voor dit Instructable moet u:ComputerArduino IDESommige delen van dit kunnen afwijken v
DIY Arduino Remote Control en Lego RC voertuig!

DIY Arduino Remote Control en Lego RC voertuig!

UPDATE (8/29/13): dank u lezers voor uw enthousiasme en soort opmerkingen met betrekking tot dit project! Het is een geweldige reis sinds ik begon dit project terug in maart, maar ik ben erg blij met het resulterende product en de opwinding waarmee h
Multiplexing met Arduino en de 74HC595

Multiplexing met Arduino en de 74HC595

de 74HC595 is een makkelijk en goedkoop (op ongeveer 60 cent per stuk) manier om te verhogen van het aantal digitale uitgang pinnen op je Arduino.  In deze tutorial zal ik u tonen hoe te rijden van maximaal 16 LEDs met een 74HC595 met behulp van een
Een beginnersgids voor Arduino

Een beginnersgids voor Arduino

Na enkele jaren van experimenteren met Arduino, besloten heb ik dat het tijd is om te delen van de kennis die ik heb verworven. Dus ik hier het gaat, een gids voor Arduino, met de blote basisprincipes voor beginners en sommige meer geavanceerde uitle
De klok van de wereld in het Duits met behulp van Arduino

De klok van de wereld in het Duits met behulp van Arduino

Terwijl in Duitsland zag vorig jaar ik een wereld klok in een gelijkaardig aan dit één in een winkel die is geprijsd op 900€ winkel. Ik lees verschillende instructables online over het maken van een klok van de wereld, dus heb ik besloten om het een
Arduino animatronics-Maak uw geweldige kostuums meer awesome!

Arduino animatronics-Maak uw geweldige kostuums meer awesome!

Hier is hoe te het licht, geluid en actie toevoegen aan uw favoriete Halloween-project met behulp van de opensource Arduino microcontroller. Arduino is gemakkelijk te leren te gebruiken en het opent een hele nieuwe wereld voor kostuum bouwers en sche
Arduino RC auto met lange afstand en aangepaste zender.

Arduino RC auto met lange afstand en aangepaste zender.

Hallo! Dit is mijn eerste instructable.Daarin zal ik u tonen hoe te maken van een RC auto met Arduino en de draadloze nrf24l01 +-module, of hoe om te upgraden een goedkope 27 MHz RC auto.De oude RC auto, die van I het chassis, en de heli Controller n
Kloppend hart Candy kom met Arduino

Kloppend hart Candy kom met Arduino

Ik wilde een snoep kom voor trick or treat die eruit zag als een spooky hart sloeg onder de snoep. Ik hoop dat de jongere kinderen vindt het spooky en niet te eng. Ik weet zeker dat de tieners met geen kostuum en een kussensloop zal niet onder de ind
De Idiot's Guide to programmering van AVR op de goedkope (met de Arduino IDE!)

De Idiot's Guide to programmering van AVR op de goedkope (met de Arduino IDE!)

Microcontrollers zijn, zonder twijfel, het verbazen van kleine dingen. Ze zijn veelzijdig, krachtig en zeer klein. De laatste karaktertrek is helaas ook gedeeld door zowel mijn portemonnee en mijn programmering vaardigheden. Mijn begrip van C is slec
Personal Assistant met Telegram & Arduino.

Personal Assistant met Telegram & Arduino.

Hallo mensen!Een paar maanden geleden hoorde ik over een project dat een instant messenger bot gebruikt voor het maken van een systeem dat zou automatisch verwerken en ordenen van pizza's verzendingen door de costumieren via Whats app. Ik was als...
DIY I2C LCD Display met ingangen

DIY I2C LCD Display met ingangen

De typische parallelle LCD gebruikt met een Arduino (16 x 2 of 20 x 4) heeft 16 pinnen. Slechts 6 I/O pinnen zijn vereist op de Arduino, maar wat als je kon krijgen dat tot twee I/O pinnen, en nog steeds hebben die pins beschikbaar voor andere appara
Analoge lijn volgeling upgraden naar Arduino met Attiny85

Analoge lijn volgeling upgraden naar Arduino met Attiny85

SamenvattingIn dit Instructable zullen wij tonen u hoe om te upgraden een goedkope analog lijn volgeling in een intelligente Arduino lijn volgeling door de LM393 comparator IC te vervangen door een intelligente Attiny85 en Arduino sketch.IntroductieL