Starter vraagt om hulp bij shift register oplossing

Hallo beste mensen,

Ik heb het volgende probleem. Ik ben sinds kort begonnen met het programeren van Arduino. Zeer leuk en leerzaam en heb al veel vraagstukken zelf opgelost maar nu kom ik er even niet meer uit. Ik heb een 74hc595n als shift register opgestoken op een experimenteer bord welke ik wil gebruiken om de status van pompen aan te geven. Nu bestaat deze uit 2 registers (16 kanalen) . Ik kan ze 1 voor 1 aansturen maar eigenlijk moet deze de schakelaars uitlezen. Wat is hiervoor nu de beste manier?

Bedankt voor de hulp

Het is me niet helemaal duidelijk wat je nu precies wilt.

De 74hc595 is een zgn. serial IN, Derial Serial/parallel OUT

Je kunt dit IC dus prima gebruiken om LEDs (serieel) aan te sturen als statusindicatie.

Nu wil je blijkbaar ook de status van 16 pompen/schakelaars uitlezen. Daar heb je dus 16 ingangen (INPUTS) voor nodig.
Dat kan niet met de 74hc595 dat vereist een ander type IC wat parrallel IN kan doen.
Dan moet je b.v. 2 keer een 74hc165 gebruiken, dat is een 8-bit parallel-in/serial out shift register.

Eenvoudiger en misschien goedkoper lijkt het me om een Arduino mega te gebruiken want die heeft voldoende I/O poorten om 16 schakelaars uit te lezen en ook 16 leds aan te sturen.

Hallo Cartoonist,

Bedankt voor je andwoord. De schakelaars zitten gewoon op de mega. Die werken ook allemaal. Hetgeen ik wil is ipv een mega uitgang sturen een shift register sturen. Dus bv zoals ik het gedacht had.

Alle waardes opslaan in een array, dus als er een schakelaar aangepast wordt de array aanpassen deze array parsen in een shiftopdracht dmv een library of iets dergelijks.

Of de PCA9555 gebruiken 16 port I2C interface. We hebben er net een class library ervoor gemaakt :)

Als je in het forum naar 74hc595 zoekt krijg je tientallen resultaten (welliswaar meestal in de engelse taal). Er zijn zoveel manieren om dit te maken.

Als snelheid belangrijk zou zijn (in dit geval dus waarschijnlijk niet), kun je zelfs de SPI bus gebruiken om een serial OUTPUT te versturen. http://forum.arduino.cc/index.php?topic=129768.msg976982#msg976982

Er zijn ook diverse libraries gemaakt die de 74xx595 kunnen besturen.

Je zou b.v. deze eens uit kunnen proberen : http://bildr.org/2011/08/74hc595-breakout-arduino/

cartoonist: Als je in het forum naar 74hc595 zoekt krijg je tientallen resultaten (welliswaar meestal in de engelse taal). Er zijn zoveel manieren om dit te maken.

Als snelheid belangrijk zou zijn (in dit geval dus waarschijnlijk niet), kun je zelfs de SPI bus gebruiken om een serial OUTPUT te versturen. http://forum.arduino.cc/index.php?topic=129768.msg976982#msg976982

Er zijn ook diverse libraries gemaakt die de 74xx595 kunnen besturen.

Je zou b.v. deze eens uit kunnen proberen : http://bildr.org/2011/08/74hc595-breakout-arduino/

De laatste link die je gaf ga ik eens proberen. Hierbij is het naar mijn inziens mogelijk om eens in de loop shifter.write(); aan te roepen welke dan alle veranderingen in de loop meeneemt. Als dit zo is is dit exact wat ik nodig heb. Bedankt hiervoor.

let op 595 is een paralel uit, dus kan geen status van de pinnen lezen. ik zag dat je de ingangen gewoon op de mega hebt zitten, en nu wil je pompen sturen via een 595 gaat prima hoor. gebruik of de libary shifter, dan ga je gewoon een array maken van al je pompen dus pomp1 is array[1] enz. in je programma zet je bijv IF array[1] == TRUE {shifter.... (13, ON)} je kunt ook ingangen met een shiftregister doen hoor, dat scheelt aanzienlijk in poorten. let wel op je kunt max 70 mA per IC sturen dus je zult of optocouplers of transistoren moeten gebruiken om relais te schakelen die de pompen aanzetten.

Sorry voor het late bericht maar was vergeten notificatie aan te zetten. Ik heb het werkend. 2 shifters aan elkaar welke per uitgang een relais via opto sturen. Bedankt voor de duw in de juiste richting.