Schiebe register

Hallo Freunde

Ich habe einmal eine Bitte.... hat eventuell einer einen kleinen Sketsch wie man ein Schieberegister mit dem Arduino ansteuert, ich begreife das einfach besser wenn ich sowas im Programm sehe oder gibt es ein Tutorial darüber aber wenn es geht auf Deutsch, ich lerne gerade mit C++ um zu gehen und kann nicht noch nebenbei Englisch lernen :slight_smile: das wäre schön wenn mir da jemand helfen könnte.

l.G.Jürgen

Hallo Jürgen,

schau dir das Playground an.

Leider auf Englisch, aber nicht sonderlich schwer. Bilder lesen geht auch auf Englisch :wink: Mit welchem Shiftregister du nun arbeitest sei dir überlassen. Da es sich hierbei vermutlich um die Vervielfältigung deiner Leuchturm-Anlage geht, reicht ein Shiftregister vom Typ 74HC595 (überall zu bekommen im Internet (-> Bucht) für wenig Geld. Nur daran denken, der Vorwiderstand muss an jeden Ausgang des ICs. Beim TLC5916 kannste diesen weglassen, da über ein Widerstand alle Ausgänge mit einem Konstantstrom betrieben werden. Ist aber deutlich schwieriger diesen zu bekommen für wenig Geld.

//**************************************************************//
//  Name    : shiftOutCode, Hello World                                
//  Author  : Carlyn Maw,Tom Igoe, David A. Mellis 
//  Date    : 25 Oct, 2006    
//  Modified: 23 Mar 2010                                 
//  Version : 2.0                                             
//  Notes   : Code for using a 74HC595 Shift Register           //
//          : to count from 0 to 255                           
//****************************************************************

//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;



void setup() {
  //set pins to output so you can control the shift register
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  // count from 0 to 255 and display the number 
  // on the LEDs
  for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
    // take the latchPin low so 
    // the LEDs don't change while you're sending in bits:
    digitalWrite(latchPin, LOW);
    // shift out the bits:
    shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay);  

    //take the latch pin high so the LEDs will light up:
    digitalWrite(latchPin, HIGH);
    // pause before next value:
    delay(500);
  }
}

Gruß Stefan

Ich danke Dir stefan

Da komme ich mit zurecht, der Link ist super erklärt, bei der Übersetzung fange ich zwar etwas an zu stottern :slight_smile: aber das geht schon. Danke

l.G.Jürgen

Zur Vollständigkeit: Schieberegister können auch über die SPI Schnittstelle angesteuert werden.

http://playground.arduino.cc/Main/LiquidCrystal
Grüße Uwe

Heho.

Ich würde dir auch empfehlen den Hardware Spi Bus zu nehmen anstatt dieser shiftout libary. Zumal es dort einen, meiner Meinung nach, sehr großen Fehler gibt welchen der author der libary begannen hat. Schreib ich dir aber heute Abend, wenn ich nicht mit dem tablet schreiben muss, sondern vorm pc sitze.

Mfg

His

Hier ein Beispiel für die SPI Version, die ich nutze bei meinen TLC 5916er.

http://www.elcojacobs.com/shiftpwm/
https://github.com/elcojacobs/ShiftPWM/archive/master.zip (Libary Download)

Ich weiß nicht, in wie weit deine elektrotechnischen Kenntnisse gehen. Kannst du mit einem solchen Plan etwas anfangen?
Kann es dir sonst nachher auf die Schnitte besser verständlich aufmalen.

Edit:

Hier einmal die Draufsicht einer Streifenrasterplatine

Achtung: Hier wird GND geschaltet. Die LEds müssen mit einem Vorwiederstand bei 74HC betrieben werden.

sschultewolter

Ja mit dem Olan komme ich schon zurecht, auch wenn ich nicht vom Fach bin. Der ist ja Gut zu lesen. Danke für die schnelle Hilfe :slight_smile:

l.G.Jürgen

Elektronik und Technik via Telekom..............

Hallo Forum/Freunde

Ich kann mich endlich mal wieder hier melden. Ich hatte noch so viele Fragen zu den Schieberegister u.s.w. Jedoch hat mich die Telekom oder die beauftragte Fremdfirma total aus dem Konzept gebracht und mich durch Ihren perfekten Service davon abgehalten. Was da passiert ist muss ich mir einfach von der Seele schreiben: Am 3.9.2013 hat eine Nachbarin bei uns im neben Haus einen neuen Telefonanschluss bekommen, was entweder die Telekom oder eine beauftragte Fremdfirma der Telekom ausgeführt hat. Das passierte auch an dem besagten Tag Morgens um 11 Uhr. Von da an ging nichts mehr. Bei der Nachbarin ging zwar das Telefon , aber das neben Haus wo ich wohne wurde durch die Montage komplett vom Netz genommen. Kein Telefon oder Internet fürs ganze Haus. Also habe ich unseren Provider angerufen über Handy und darum gebeten sich darum zu kümmern. Was auch geschah, nach einem Rückruf unseres Providers bekamen wir für den 5.9.2013 einen Termin zwischen 13 und 17 Uhr, wo ein Techniker der Telekom oder einer Fremdfirma den Schaden beheben sollte. Da ich Rentner bin und somit wahnsinnig viel Zeit und auch Interesse habe bei so einem super Wetter den ganzen Tag in der Wohnung zu hocken und auf den Techniker zu warten, habe ich mich natürlich auch sofort angeboten das zu tun, da sonst keiner im Haus war. Es wurde 13, dann 14 u.s.w. Bis 17:30 UHR und ich denke einmal bei den Fähigkeiten des ausgesandten Technikers , muss der sich verfahren haben, den wir haben an diesem Tag nichts von Ihm gehört. Also habe ich am nächsten Tag wieder bei meinem Provider angerufen und nachgefragt wieso keiner der Techniker zu uns gekommen ist. Aber da herrschte totales Erstaunen, da mein Provider auch keine Nachricht bekommen hat und dieser sich erkundigen wollte was da geschehen ist. Dann war mal erst Wochenende, da passiert sowieso nichts. Mittlerweile hat dann eine Nachbarin die Ihren Anschluss bei der Telekom hat und auch zu den Menschen gehört der man das Telefon und Internet gekappt hat, bei der Telekom angerufen und für Montags einen Termin bekommen das der Techniker noch einmal kommen würde und alles wieder in Ordnung bringen würde. Voller Erwartung habe ich natürlich wieder Stellung bezogen und auf den Techniker gewartet. Jedoch passierte nichts den ganzen Tag und ich habe Abends mit der besagten Nachbarin gesprochen, die mir dann mitteilte, das der Techniker da gewesen sein müsste , denn Sie habe wieder Telefon und Internet. Da bei mir aber der Router immer noch blinkte und mir zeigte das ich keinen Empfang habe , setzte ich mich mit meinem Provider in Verbindung und habe mit deren Störungs- Stelle alles durch probiert um wieder ans Netz zu kommen, was nicht gelang. Darauf hin hat mein Provider für den 10.9.2013 (also Heute) einen neuen Termin mit der Telekom vereinbart..... Der Techniker war gerade da und hat soweit alles wieder ins Lot gebracht aber mit der Aussage: Ich hoffe das ich jetzt nicht jemand anderes abgeschaltet habe. Das ist schon eine Aussage *lach, aber ich habe es ja am eigenen Leib erfahren. Aus Trotz habe ich mir jetzt eine Uhr aus Led`s gebaut da man ja sonst nichts zu tun hat.

l.G.Jürgen

PS. hier mal ein Bild im Rohbau, sobald ich den Controller angeschlossen habe mache ich ein kleines Video

Hier das versprochene Video, soweit läuft die Uhr jetzt muss ich noch die Sekunden einpassen und eine Anzeige unten links PM un AM damit man nicht immer aus dem Fenster schauen muss , ob es Morgens oder Abends ist.

http://www.vidup.de/v/GoSwf/

l.G.Jürgen

Die Zeit vergeht bei dir aber verdammt schnell :smiley:

Ansonsten, wie haste nun die Halterung gelöst?

Wollte demnächst diese "komische" RGB Led Uhr nachbauen. Weiß gerade nicht wie die genau hieß. War mit vielen Shiftregistern gelöst. Das möchte ich aber nicht, das wird einfach zu viel. Werde versuchen mit 60 RGB/m LED Streifen (WS2812) dieses nachzubauen.

ist noch keine hHalterung dran, ich möchtw noch eine Led reihe anbringen wo die Zeiger laufen , das der Minutenzeiger jeweils um eine Led länger ist dann kann man ihn besser sehen. Dann mache ich nir einen Rahmen von 3 cm auf die Hinterseite und noch einmal eine PVc platte dahintwr, so das ich den Akku und den Nano darein bekomme. und ein Balken als Sockel. So das man die Uhr überall hinstellen kann. Ich habe Heute noch zwei Arduino Nano bekommen, ich wusste garnucht das die so klein sind, das ist das richtige für meine Leuchttürme, die bekommt man super unter und sie kosten nix. :slight_smile:

l.G.Jürgen

hi, sschultewolter

falls das, was Dir nicht einfällt, equinox ist:
ich hab' die auch mit ws2812 gebaut, aber noch kein gehäuse, und das ist ja s´das schönste dran.
sketch für atmega328 plus DS1307 hab ich, aber die fernbedienung muß auf einen zweiten controller, das verträgt sich nicht mit der fastSPI_LED2. ich will jetzt irgendwann ins metalab in wien, die können plexiglas mit laser schneiden. unsere laser in der firma sind zu schwach für sowas (60 Watt), oder zu stark (4000 W).

gruß stefan

Eine kleine Anmerkung von mir:

Wie so oft ist das Wichtigste genau das, was die geringste Aufmerksamkeit auf sich zog: Das Datenblatt des '595 (die Gebrauchsanweisung) bzw die dort enthaltene Logiktabelle. Dort steht alles drin was an dieser Stelle wichtig ist. Hol dir ne Cola, lehn' dich zurück, mach die Musik aus und schau dir genau an was diese kleine Bestie macht:

Der '595 hat:
Q_A ... Q_H - Ausgänge
Q_H' - Ausgang des Schiebetakts
SI - Serial in (für die Daten)
SCK - Clock in (Datentakt)
/SCLR - Schieberegister löschen (aktiv bei "0")
/G - Ausgänge aktiv (aktiv bei "0")
RCK - Takteingang des Speicherregisters

Immer wenn am Takteingang das Signal von "0" auf "1" wechselt (steigt), ein Bit an SI als logische "1" erkannt wird, und der Löscheingang /SCLR brav auf "0" liegt wird eine "1" eingeschoben. Die ist an den Ausgängen aber noch nicht sichtbar (das wäre schlecht da immer ein 8 Bit Paket eingeschoben werden muß, was zur Folge hätte, daß kurz alle Ausgänge kuzzeitig scheinbar undefiniert aufblitzen würden).

Nachdem die 8 Bits eingetaktet sind werden mit einer positiven Flanke an RCK die Daten übernommen und sind an den Ausgängen sichtbar, vorausgesetzt der Eingang /G zum aktivieren der Ausgänge liegt auf "0" - das darf er übrigens die gesamte Zeit über, also auch während des Taktens.

Wenn du verstanden hast wie ein Schieberegister funktioniert, ist der Sprung zu drei hintereinander geschalteten Registern nicht mehr schwierig. Auch alle andere Varianten die es so gibt funktionieren im Prinzip ähnlich, man kann zB auch umgekehrt, also Daten die parallel ankommen mit einem '164 mit fast dem gleichen Prinzip in einen seriellen "Datensttrom" verwandeln (zB. um bei einem größeren Projekt Porteingänge zu sparen).

Transistorfips

Eine Frage hätte ich noch dazu, ist es egal von welchen Pin`s des Arduino ich den Schieberegister ansteuer? ich bräuchte für meine UHR noch 12 LED um den Zeiger der Minuten um je eine LED zu verlängern , da ich die Zeiger je mit 2 Weissen LED in Reihe geschaltet habe ist es je nach Zeiger stellung nicht mehr zu erkennen was die Stunde und was die Minuten sind. Deshalb möchte ich an jeder Zeiger stellung noch eine LED verbauen, so das der Minuten zeiger Länger wird und das geht nur wenn ich jede LED einzelnd mit zu schalte in dem Moment wo der Zeiger weiter rückt, wenn Du verstehst was ich meine, sowie für meine Tag und Nacht Anzeige (PM und AM) 25 LED davom würde jedoch lediglich 2 LED an und aus geschaltet.
Also am Großen A immer das rechte untere Beinchen so das es ein P oder ein A ergibt, das M ist ja bei AM und PM immer gleich. das wären also insgesamt 13 schaltschritte die ich über dem Schieberegister steuern müsste käme ich da mit 2 register aus. Ich könnte das A ja noch über einen Pin von A0 - A5 steuern da mir dann noch 3 PINe bleiben , das müsste ja reichen oder.

l.G.Jürgen

Eisebaer:
hi, sschultewolter

falls das, was Dir nicht einfällt, equinox ist:
ich hab' die auch mit ws2812 gebaut, aber noch kein gehäuse, und das ist ja s´das schönste dran.
sketch für atmega328 plus DS1307 hab ich, aber die fernbedienung muß auf einen zweiten controller, das verträgt sich nicht mit der fastSPI_LED2. ich will jetzt irgendwann ins metalab in wien, die können plexiglas mit laser schneiden. unsere laser in der firma sind zu schwach für sowas (60 Watt), oder zu stark (4000 W).

gruß stefan

Habe nun die fastSPI_LED2 Libary nun für meine WS2812 genommen. Habe nur ein kleines Problem. Die Anordnung der LEDs auf dem Strip entspricht nicht der Einstellungen des WS2812.

   leds[0] = CRGB(255,0,0); // gruen
   leds[2] = CRGB(0,255,0); // rot
   leds[4] = CRGB(0,0,255); // blau

Gibt es eine Möglichkeit, der Lib die Reihenfolge mitzuteilen, ohne die Libary umzuschreiben?

hi,

ich hab' das struct einfach anders definiert:

struct CRGB { byte g; byte r; byte b; };

ob das jetzt RGB oder GRB -leds sind, ist ja egal.

gruß stefan

Du müsstest doch einfach umbenennen z.B.

Dein Code:
leds[0] = CRGB(255,0,0); // gruen
leds[2] = CRGB(0,255,0); // rot
leds[4] = CRGB(0,0,255); // blau

neuer Code:
leds[2] = CRGB(255,0,0); // gruen
leds[4] = CRGB(0,255,0); // rot
leds[0] = CRGB(0,0,255); // blau

das müsste doch gehen...

neue version der lib:

FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);

nimm statt RGB GRB

gruß stefan

malerlein:
Du müsstest doch einfach umbenennen z.B.

Dein Code:
leds[0] = CRGB(255,0,0); // gruen
leds[2] = CRGB(0,255,0); // rot
leds[4] = CRGB(0,0,255); // blau

neuer Code:
leds[2] = CRGB(255,0,0); // gruen
leds[4] = CRGB(0,255,0); // rot
leds[0] = CRGB(0,0,255); // blau

das müsste doch gehen...

Nein :wink:

LEDs werden anders angesteuert. leds[0] bedeutet rot grün und blau von der ersten SMD RGB Led.

@Eisebaer, eine Umstellung von RGB auf GBR macht keinen Unterschied. Ich verwende die "RC3 for FastSPI_LED2".

In welcher .h bzw .cpp file wird das struct geändert. In pixeltypes.h funktionierte es nicht.

OT:
http://www.ebay.de/itm/1-Meter-144-Led-s-WS2812B-Streifen-Stripe-weiss-mit-WS2811-Controller-/271266418346?pt=Bauteile&hash=item3f28bd0eaa
Hat jemand die schon bei einem chinesischen Händler billiger gefunden?

Damit würde die Equinox deutlich smarter werden. Anstatt 31,8cm Durchmesser nur noch 13cm. Wäre somit eine Alternative als kleine Tischuhr ^^

Hallo
Ichabe mir diese Led`s ersteigert

20 Stück WS2812 RGB SMD 5050 PLCC6 LED mit integriertem WS2811 Controller

ich denke einmal das sind die Leds wo Ihr die ganze Zeit drüber schreibt nur eben lose. Hat vielleicht einer einen Sketsch für mich oder irgend etwas wo ich draus erfahre wie man diese genau ansteuert, da ich diese LEds das erste mal benutze.

l.G.Jürgen