Arduino Shift register

Leestijd: 4 Minuten

 

Ze liggen al een tijdje in de la, de 74HC595 shift register (Datasheet). Ik vond altijd al dat AtTiny’s in sommige gevallen te weinig output pins hadden. Mede hierdoor heb ik een aantal 74HC595 gekocht op Ebay, maar tot op heden nog nooit gebruikt.

Met deze shift register kan je door middel van die pins op bijvoorbeeld je Arduino of Attiny 8 digitale outputs aan of uitzetten. Je hebt hiervoor drie pins nodig. Een Clock, een data en een Latch. Wanneer je met een Logic analyzer gaat kijken wat er gebeurt zie je de logica. In het stukje wat ik heb gerecord stuurt Arduino getallen opeenvolgend naar de shift register.

shift register logic analyzer 30 shift register logic analyzer 31

 

Je ziet dat de zwarte wire (channel 0), één byte verstuurd in het tempo van het clock signaal (channel 2). En wanneer de latch (channel 1/bruin) weer high gaat is één byte verstuurd. En wanneer je de binare getallen gaat omrekenen naar decimalen.

  • 00011110 = 30
  • 00011111 = 31

Wanneer je dus 8 keer een 1 stuurt en vervolgens de high signaal geeft op de latch output. dan zijn alle ledjes aan, je stuurt binaire gegevens naar je shift register. Je kan zelfs meerdere shift registers aan elkaar koppelen zodat je met nog steeds drie digitale pinnen in gebruik 16 outputs hebt.

Arduino

Zie onderstaande afbeelding hoe je dit aansluit op je breadboard (Meer info)

Shift register

 

  • GND (pin 8) naar ground
  • Vcc (pin 16) naar 5V
  • OE (pin 13) naar ground
  • MR (pin 10) naar 5V

Het enigste nadeel aan deze setup is dat wanneer je de Arduino opstart alle ledjes aangaan. Je kan dit voorkomen om ook de OE en de MR pin te controleren met je Arduino. Maar op deze manier hou je meerdere Arduino pins over.

  • DS (pin 14) naar Ardunio DigitalPin 11
  • SH_CP (pin 11) naar to Ardunio DigitalPin 12
  • ST_CP (pin 12) naar Ardunio DigitalPin 8

Deze worden ook wel de dataPin, de clockPin en de Latchpin genoemd. Wanneer de lampjes flikkeren is het mogelijk om een 0.1uF capacitor te plaatsen tussen de latchPin en de ground hiermee wordt dit uitgevlakt.

 

De code

 

En de code voor je Arduino

 

PHP Project
GitFlow