ich hab meinen arduino jetzt seit 4 tagen und ich komm eingentlich ganz gut klar damit..hab schon einige lauflichter und eine 4x5 led matrix zusammen gebastelt :)aber jetzt gehen mir die pins aus lol
deswegen hab ich mir gestern n paar 595er gekauft um ne grössere matrix zum bauen..
da ich mal fast gar keine ahnung vom prog. hab..mach ich mir des ganze immer etwas umständlich glaub ich..beispiel :
int led1 = 1; // LED connected to digital pin 1
int led2 = 2; // LED connected to digital pin 2
usw
usw
void setup() {
// initialize the digital pin as an output:
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
usw
usw
void loop()
{
digitalWrite(led1, HIGH); // set the LED on
delay(500); // wait for a second
digitalWrite(led1, LOW); // set the LED on
delay(500); // wait for a second
digitalWrite(led2, HIGH); // set the LED on
}
usw
usw
ich weiss das man des ganze irgendwie "zusammenfassen" kann
aber für mich als anfänger find ich des schon ganz okay..dauert zwar
länger aber ich komm besser damit klar.. :
kann ich diese codes auch für die 595er nehmen??
ich hab mir auch schon dieses tut durchgelesen
Also, ich sehe in deinem code keinen zusammenhang mit dem 595.
Nen Schieberegister will NACHEINANDER einsen und nullen. Damit der merkt, wann das nächste dings (also eins oder null) kommt, will das über den takt (clock, CLK,...) nen kurzen high->low wechsel.
also: du schickst:
Seriell iN: 0 1 0 1 0 1 0 1
Und nach jedem einzelnen davon auf clock "10".
Dann haste auf den ausgängen des SR 01010101.
So funktioniert son schieberegister prinzipiell
Damit das durchgeschobene nicht "sofort" sondern erst nach allen 8 einsen/nullen erscheint, gibt's noch die "latch". (sonst hättste Störungen. Bei ner LED egal. aber ne pumpe muss nich dein Wohnzimmer fluten, nur weil die Tröte tröten soll...)
vielleicht wird dein text im link so durchsichtiger.......
shiftout automatisiert davon einiges. musste nochmal nachlesen wie genau....
Die shiftOut()-Funktion nimmt dir einfach genau den Teil ab den Pumbaa beschrieben hat. Sie schiebt einen ganzen Byte (also 8 Bits) über einen Data- und einen Clock-Pin in ein Schieberegister aus.
Die Syntax: shiftOut(dataPin, clockPin, bitOrder, value)
dataPin = der Pin, aus dem die Bits "herausgeschoben" werden. Dieser Pin muss mit dem seriellen Eingang des Schieberegisters verbunden sein.
clockPin = der Pin, an dem das Clocksignal fürs Schieberegister ausgegeben wird. Also mit dem Clock-Eingan des Schieberegisters verbinden.
bitOrder = bestimmt, welches Bit des Bytes zuerst herausgeschoben wird (MSB = most significant bit = Bit 7 = Bit ganz "links" im Byte; LSB = least significant bit = Bit 0 = Bit ganz "rechts" im Byte)
value = das Byte, das rausgeshiftet werden soll (kann natürlich auch eine Variable sein)
Die Beispiele aus dem Tutorial habe ich alle schon ausprobiert.Alles Top.
Mein Problem ist das ich den Code nicht verstehe...Ich hab nun diesen etwas "umständlichen" Code bekommen :
int SER = 12; //SER am Schieberegister
int SCK = 13; //SCK am Schieberegister
int RCK = 11; //RCK am Schieberegister
/*
Ausgangspins des SR(Schieberegister) wie gewünscht anschließen
SCL auf +5V; G auf Masse/Ground
*/
kannst du im Prinzip streichen. Stattdessen würdest du einfach schreiben:
shiftOut(SER, SCK, MSBFIRST, 0110101);
Ich glaube man muss B0110101 schreiben, um dem Compiler zu verklickern dass es sich um eine Binärzahl handelt (keine Garantie darauf), aber 0110101 binär ist natürlich das gleiche wie 53 dezimal, also könntest du auch schreiben:
shiftOut(SER, SCK, MSBFIRST, 53);
Die shiftOut()-Funktion übernimmt das Umschalten des Clock-Pins und des Data-Pins von alleine.
Danach sind also alle Bits im Schieberegister und du musst nur noch per
digitalWrite(RCK, LOW); // vor den shiftOut()-Code setzen
und
digitalWrite(RCK, HIGH); // danach setzen
die Latch toggeln (wenn RCK dein Latch-Pin ist).
Wenn es dann immer noch nicht funktioniert, solltest du nochmal deine Verbindungen auf Richtigkeit überprüfen. Da gebe ich Joghurt recht dass ein bisschen wenig Informationen bezüglich deiner Schaltung existieren