Schuifregisters

algemene C code
Berichten: 82
Geregistreerd: 27 Feb 2019, 11:19

Schuifregisters

Berichtdoor Jeroentjevrij » 21 Mrt 2019, 00:34

Is er een makkelijke manier om shuifregister aan te sturen.
Dat ik bijvoorbeeld in kan geven.

Ik wil bij sr1 pin 2 5 6 en 8 aan en bij sr5 3 4 en 7 aan.


Digitalwrite(sr[1], 01001101)
Digitalwrite(sr[5], 00110010)

Bijvoorbeeld.
En zo ja hoe ziet de setup er dan uit.

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Schuifregisters

Berichtdoor Koepel » 21 Mrt 2019, 02:43

De moeilijke manier is om daar zelf functies voor te schrijven.
De makkelijke manier is om een bestaande library te nemen.

Bij "Bibliotheek Beheer" in de Arduino IDE kun je zoeken naar "shift register" of "74hc595".
Daar zie ik er al zo'n vijf staan. Als je bij een library op "more info" klikt, dan opent er meestal een pagina op Github. Daar kun je kijken naar een example, of dat iets is dat handig lijkt.

Op Github staan er nog meer: http://nl.lmgtfy.com/?q=site%3Agithub.com+arduino+shift+register.

Berichten: 82
Geregistreerd: 27 Feb 2019, 11:19

Re: Schuifregisters

Berichtdoor Jeroentjevrij » 21 Mrt 2019, 02:43

Zou dit gaan werken.

Code: Alles selecteren
#include <ShiftRegister74HC595.h>

// parameters: (number of shift registers, data pin, clock pin, latch pin)
ShiftRegister74HC595 sr (7, 0, 1, 2);
 
void setup() {
}

void loop() {

  // set all pins at once
  uint8_t pinValues[] = { B10101010, B10110010, B00011101, B01110011, B11000110, B1000110, B00000001 };
  sr.setAll(pinValues);
  delay(1000);
}

Berichten: 82
Geregistreerd: 27 Feb 2019, 11:19

Re: Schuifregisters

Berichtdoor Jeroentjevrij » 21 Mrt 2019, 02:48

Super dank je

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Schuifregisters

Berichtdoor Koepel » 21 Mrt 2019, 05:41

Ja, zo werkt het :D

Het is deze, neem ik aan: https://github.com/Simsso/ShiftRegister74HC595.
Dat ziet er eenvoudig uit.
Ik zie een eigenaardigheidje met het gebruik van mallock() en een pointer bij setAll(). Dat is een serieuze bug, dus ik heb een issue aangemaakt: https://github.com/Simsso/ShiftRegister74HC595/issues/14

Kun je misschien de binaire code volgens de C++ taal gebruiken ? Dan gaan mijn haren minder overeind staan :o
Code: Alles selecteren
{ 0b10101010, 0b10110010, 0b00011101, 0b01110011, 0b11000110, 0b1000110, 0b00000001 }

Die codes met B10101010 is iets dat Arduino heeft toegevoegd om het "gemakkelijker" te maken :evil:

Berichten: 82
Geregistreerd: 27 Feb 2019, 11:19

Re: Schuifregisters

Berichtdoor Jeroentjevrij » 21 Mrt 2019, 11:35

Heb gezocht op de pagina die jij me zei.
En de shiftyshift is wel handig voor mij.

Dan zet je shift.writeBit(1, HIGH);
Voor pin 1 van SR 1
Zodat ik elke pin apart aan kan sturen.
Probeer alleen nog uit te vinden hoe de code werkt
als ik de pin wil lezen of deze HIGH of Low is
Dat ik bijvoorbeeld zo kan doen.

BitState = digitalRead(shift.Bit1);
if (BitState == HIGH) { digitalWrite(shift.Bit1, LOW); }
else { digitalWrite(shift.Bit, HIGH);
}
}

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Schuifregisters

Berichtdoor Koepel » 21 Mrt 2019, 15:14

Die https://github.com/Simsso/ShiftRegister74HC595 kan per pin lezen en schrijven. Die functies heten get en set.
Helaas vind ik die bug wel een serieuze bug, ik weet niet hoe snel die er uit gehaald wordt.

Als je schrijft over "shiftyshift" kun je dan zeggen waar je die vandaan hebt, of waar je die gevonden hebt, en bij voorkeur met een link er naar toe.
Het is hetzelfde als wanneer ik als antwoord geef dat een eenhoorn op rolschaatsen je probleem kan oplossen :shock:

Berichten: 82
Geregistreerd: 27 Feb 2019, 11:19

Re: Schuifregisters

Berichtdoor Jeroentjevrij » 21 Mrt 2019, 16:24

Ja natuurlijk die heb ik van.https://github.com/johnnyb/Shifty

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Schuifregisters

Berichtdoor Koepel » 21 Mrt 2019, 19:07

Ik begrijp het niet helemaal, maar volgens mij kan die geen pin lezen die je geschreven hebt. Het inlezen lijkt alleen voor een digital ingang waarbij een truc wordt gebruikt om een paar ingangen toe te voegen.

Berichten: 82
Geregistreerd: 27 Feb 2019, 11:19

Re: Schuifregisters

Berichtdoor Jeroentjevrij » 22 Mrt 2019, 00:46

Nee idd lezen lukt niet.
Dan ga ik alleen schrijven met shift.writeBit.
Word alleen hele lap tekst dan.
Maar dat moet wel goed komen.
Heb nu al een setup geschreven voor een 3x3x3 led cube.
Die door elke leek te begrijpen en te gebruiken is.
Wil nog even kijken of het mij lukt daar een libery voor te maken.
Bedankt voor je hulp

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten