- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 59

Thema: Hilfestellung bei drei Schieberegistern und 20 LED´s

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Die Funktion hier kannst du im setup mit ledLine(); aufrufen.
    Code:
    void ledLine()
    {
      long data = 0;  // alle Bits aus -> alle LEDs aus
      while (data <= 1048576)
      {
        digitalWrite(latchPin, LOW);
        shiftOut(dataPin, clockPin, MSBFIRST, data >>16);
        shiftOut(dataPin, clockPin, MSBFIRST, data >>8);
        shiftOut(dataPin, clockPin, MSBFIRST, data);
        digitalWrite(latchPin, HIGH);
    
        data = (data<<1)+1;
        delay(1000);
      }
    }
    Jedes Bit im long data repräsentiert letztendlich eine LED. Das kleinste Bit wird durch die Zahl 1 dargestellt, das nächstgrößere durch 2, dann 4,8,16... D.h. man kann auch sagen 2^n = repräsentierende Zahl. Bsp: 2^4 = 16, also repräsentiert 16 die 4.LED. Insgesamt gibt's 20 LEDs, also ist nach 2^20 = 1048576 Schluss.

    und du hast in der shiftOut Methode noch >>16 >>8 geändert und dann nur data
    damit sprichst du erst den dritten, dann den zweiten und zu letzt das erste Schieberegister an richtig ?
    Ja, richtig.
    diesen teil verstehe ich nicht, bzw is mir nicht so klar .... wo kann man sowas nachlesen
    oder dieses Wissen herbekommen ... echt klasse =)
    Im Zweifelsfall Elektrotechnik studieren, so wie ich.
    Geändert von Sisor (23.03.2014 um 18:03 Uhr)

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    36
    Beiträge
    180
    also man muss void loop() durch void ledLine() ersetzen, nur mit while(1); geht es nicht ?

    okay dann muss ich mir das bei Wiki oder so mit den bit und Byte nochmal genau anschauen und durchlesen.

    Ah ja Elektrotechnik studiert, daher weht der Wind, ich als Konstrukteur beherrsche nur die Technische Seite
    Könnte man erahnen wenn mein mein Roboter genauer anschaut, wie schon erwähnt, muss mal ne ruhige Minute
    finden und ein ausführlichen Bericht schreiben, bzw hier im Forum vorstellen.

    Aber so langsam wird's

    Die 20 LED´s dienen dazu mir ein Ladebalken zu erstellen, wenn ich die Fernsteuerung meines Roboter RSL-7 einschalte,
    bis alle Systeme gebootet und hochgefahren sind, anzeigt.

    Habe mir folgendes bei Reichelt bestellt:

    Klicke auf die Grafik für eine größere Ansicht

Name:	RBG2000.jpg
Hits:	4
Größe:	23,5 KB
ID:	27832

    Das ihr auch wisst für was die 20 LED gut sind

    Wenn dann die Arduinos und die Funkmodule da sind und der LED Ladebalken auch .... gehts mächtig ans löten und basteln

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Hübsches Projekt, ich hoffe du hältst das Forum auf dem Laufenden!
    Nur zum Verständnis: while(1) ist eine Endlosschleife. Übersetzt: Solange die Bedingung in den Klammern nicht 0 ist tue{...}. Und bevor 1 = 0 ist friert die Hölle ein.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    36
    Beiträge
    180
    ja ich werde noch einen ausführlichen Bericht machen das is versprochen, hab ja auch noch jede Menge vor mit meinem Roboter ....
    Zur Zeit bin ich an einem 5-Achs Roboter Arm dran, aber ich will nichts verraten

    Eine Frage noch zu dem Code? .... habe jetzt dein void ledLine89 eingefügt und jetzt lässt es sich nicht mehr Kompilieren O.o

    Code:
    int latchPin = 4;
    int clockPin = 3;
    int dataPin = 2;
    
    
    
    void setup()
    {
      pinMode(latchPin, OUTPUT);
      pinMode(clockPin, OUTPUT);
      pinMode(dataPin, OUTPUT);
    }
    
    
    void ledLine()
    {
      long data = 0;  // alle Bits aus -> alle LEDs aus
      while (data <= 1048576)
      {
        digitalWrite(latchPin, LOW);
        shiftOut(dataPin, clockPin, MSBFIRST, data >>16);
        shiftOut(dataPin, clockPin, MSBFIRST, data >>8);
        shiftOut(dataPin, clockPin, MSBFIRST, data);
        digitalWrite(latchPin, HIGH);
    
        data = (data<<1)+1;
        delay(1000);
      }
    }

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    War so gemeint:
    Code:
    int latchPin = 4;
    int clockPin = 3;
    int dataPin = 2;
    
    void setup()
    {
      pinMode(latchPin, OUTPUT);
      pinMode(clockPin, OUTPUT);
      pinMode(dataPin, OUTPUT);
      ledLine();
    }
    
    void loop(){}
    
    void ledLine()
    {
      long data = 0;  // alle Bits aus -> alle LEDs aus
      while (data <= 1048576)
      {
        digitalWrite(latchPin, LOW);
        shiftOut(dataPin, clockPin, MSBFIRST, data >>16);
        shiftOut(dataPin, clockPin, MSBFIRST, data >>8);
        shiftOut(dataPin, clockPin, MSBFIRST, data);
        digitalWrite(latchPin, HIGH);
    
        data = (data<<1)+1;
        delay(1000);
      }
    }
    Geändert von Sisor (23.03.2014 um 20:04 Uhr)

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    36
    Beiträge
    180
    Guten Abend,

    ich hätte eine kleine Frage, zu meiner Schaltung.

    Es geht um die Strom Versorgung ! Ich möchte gerne den Arduino mit einem 9V Akku Block versorgen, und die
    Hauptschaltung mit einem 12V Blei Akku versorgen.

    Da der 9V Akku nicht so lange hält und auch die beiden Displays nicht schaft, und es sollen ja noch zwei hinzu kommen.

    Hab euch mal meine Schaltung hofgeladen, gezeichnet mit Fritzing und wo man etwas genauer sieht was ich meine!
    Ich habe auch noch ein Spannungswandler eingezeichnet, der eine Eingansspannung von 7 bis 24 Volt verträgt.
    Also Ausgangsspannung kann er 5V oder 6V. Wobei ich ja die 5V benötige.

    Ich weis, das wenn man sowas machen möchte muss der Arduino GND und der 12V Blei Akku GND gemeinsam sein.
    Nur wo schließe ich jetzt den + des 12V Blei Akkus an?

    Vllt könnte mir jemand weiter helfen und einen Tipp geben.

    Mfg Benny

    Klicke auf die Grafik für eine größere Ansicht

Name:	Schaltplan.jpg
Hits:	9
Größe:	91,3 KB
ID:	28018

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    16.02.2014
    Beiträge
    80
    So ganz verstehe ich Dein Vorhaben - und die Frage nicht. Die +12V schließt Du natürlich an den Komponenten an, die Du damit versorgen willst. Wichtig ist aber
    1. daß die Masse-Signale der verschiedenen Stromquellen verbunden sind - das hast Du ja beachtet.
    2. daß die damit versorgten Schaltungsteile auch dafür ausgelegt sind!

    Wenn Du z.B. die LEDs bisher mit 5V versorgt hast und sie jetzt auf 12V umstöpselst mußt Du mindestens die Vorwiderstände ändern. Beim HC594 bin ich nicht so sicher daß man es überhaupt direkt mit 12V betreiben kann, mußt mal ins Datenblatt schauen. Wenn nicht müsstest Du dann Transistortreiber zwischenschalten. Und so weiter und so fort. Da geht's im Detail darum was genau Du damit betreiben willst...

    Und was machst Du mit dem Spannungswandler? Soll der die 9V-Batterie ersetzen?

    Es wäre wohl am einfachsten wenn Du mit dem (falls er kräftig genug ist) eine zweite 5V-Versorgung z.Vfg. stellen würdest für alles "was Strom braucht" um den armen Onboard-Spannungswandler des Arduino davon zu entlasten.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.04.2011
    Ort
    Heilbronn
    Alter
    36
    Beiträge
    180
    Ne, möchte nichts mit 12V betreiben, sondern schon alles mit 5V aber nicht nur über den Arduino und seinem
    9V Block sondern mit Hilfe des Spannungswandler der ja Aus 12V - 5V macht.

    Hintergrund ist der, beide Displays sind an und wie ihr ja wiest ... Geht eine LED nach einander an.

    Und um so mehr LEDs an gehen um so dunkler werden die Displays ..... Wenn die LEDs alle wieder ausgehen.
    Dann sind die Displays wieder hell wie vorher.

    Das heist für mich das der 9V block nicht ausreicht, und ich mochte das der 9V block nur den Arduino mit
    Strom versorgt und die Schaltung wird mit dem 12V Akku versorgt.


    Es wäre wohl am einfachsten wenn Du mit dem (falls er kräftig genug ist) eine zweite 5V-Versorgung z.Vfg. stellen würdest für alles "was Strom braucht" um den armen Onboard-Spannungswandler des Arduino davon zu entlasten.
    Ja genau das hab ich vor - so möchte ich es haben.
    Muss ich dann alle + Leitungen an den Spannungswandler an dem ja der 12V Akku hängt, anschließen.
    Und alle GND Leitungen samt Arduino GND zusammen das is klar .

    Oder was muss ich mit der + Leitung machen ?
    Geändert von Benny1989 (19.04.2014 um 23:36 Uhr)

Ähnliche Themen

  1. 15 Low Current LED´s als Lauflicht mit drei Taster mit ATMEGA8 und Bascom
    Von stekolos im Forum Eigene fertige Schaltungen und Bauanleitungen
    Antworten: 7
    Letzter Beitrag: 28.04.2017, 19:59
  2. Drei Led´s mit einem Taster unabhängig von einander schalten
    Von p@ty im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 61
    Letzter Beitrag: 10.07.2014, 12:03
  3. Gegenseitige Störung bei Schieberegistern
    Von Ofenrohr im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 27.04.2010, 20:15
  4. ATmega32 Hilfestellung bei Programm gesucht
    Von m0b0t1x im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 19.09.2009, 08:31
  5. Brache Hilfestellung bei Programmierung mit C-Control/ASM
    Von angelhaken im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 4
    Letzter Beitrag: 09.02.2005, 23:31

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen