Pages: [1] 2 3   Go Down
Author Topic: Schiebe register  (Read 3001 times)
0 Members and 1 Guest are viewing this topic.
Witten an der Ruhr
Offline Offline
God Member
*****
Karma: 7
Posts: 757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley das wäre schön wenn mir da jemand helfen könnte.

l.G.Jürgen
Logged

l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

Offline Offline
Faraday Member
**
Karma: 42
Posts: 2552
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Jürgen,


schau dir das Playground an.
http://arduino.cc/en/Tutorial/ShiftOut

Leider auf Englisch, aber nicht sonderlich schwer. Bilder lesen geht auch auf Englisch smiley-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.


Code:
//**************************************************************//
//  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
« Last Edit: September 02, 2013, 04:38:01 pm by sschultewolter » Logged

Keinen technischen Support über PN!
Hat dir meine Antwort gefallen, nicht sparsam mit dem Karma sein smiley-wink

Witten an der Ruhr
Offline Offline
God Member
*****
Karma: 7
Posts: 757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley aber das geht schon. Danke

l.G.Jürgen
Logged

l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 263
Posts: 21601
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

Logged

Offline Offline
Newbie
*
Karma: 2
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Faraday Member
**
Karma: 42
Posts: 2552
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
https://www.dropbox.com/s/rjvo0sgu9sdmfhe/maerl_Steckplatine.png

Achtung: Hier wird GND geschaltet. Die LEds müssen mit einem Vorwiederstand bei 74HC betrieben werden.
« Last Edit: September 02, 2013, 11:55:14 pm by sschultewolter » Logged

Keinen technischen Support über PN!
Hat dir meine Antwort gefallen, nicht sparsam mit dem Karma sein smiley-wink

Witten an der Ruhr
Offline Offline
God Member
*****
Karma: 7
Posts: 757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley

l.G.Jürgen
Logged

l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

Witten an der Ruhr
Offline Offline
God Member
*****
Karma: 7
Posts: 757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


* DSCF0083.jpg (1424.76 KB, 2848x2136 - viewed 59 times.)
Logged

l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

Witten an der Ruhr
Offline Offline
God Member
*****
Karma: 7
Posts: 757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

Offline Offline
Faraday Member
**
Karma: 42
Posts: 2552
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die Zeit vergeht bei dir aber verdammt schnell smiley-grin

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.
Logged

Keinen technischen Support über PN!
Hat dir meine Antwort gefallen, nicht sparsam mit dem Karma sein smiley-wink

Witten an der Ruhr
Offline Offline
God Member
*****
Karma: 7
Posts: 757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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. smiley

l.G.Jürgen
« Last Edit: September 14, 2013, 12:50:11 pm by malerlein » Logged

l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

Wien
Offline Offline
Edison Member
*
Karma: 28
Posts: 1889
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Germany
Offline Offline
Jr. Member
**
Karma: 0
Posts: 57
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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).

Logged

Witten an der Ruhr
Offline Offline
God Member
*****
Karma: 7
Posts: 757
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

Offline Offline
Faraday Member
**
Karma: 42
Posts: 2552
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Code:
   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?


Logged

Keinen technischen Support über PN!
Hat dir meine Antwort gefallen, nicht sparsam mit dem Karma sein smiley-wink

Pages: [1] 2 3   Go Up
Jump to: