Hey Leute, Ich würde gerne bei meiner Schaltung 40 LED´s wie bei einem "Roulett" ansteuern. Dabei sollte die zutreffende LED beim nächsten versuch ausscheiden, bis es nur noch eine gibt. Hardware mäßig hätte ich gerne ein Start/ Stop und Reset. Beim bestätigen der Stop Taste sollte die Auswahl der LED immer langsamer werden bis es zu einem Ergebnis kommt. Die wechselgeschwindigkeit der LED´s könnte man dann im Programm ändern? Gestaltet sich der Plan als zu schwer zwecks der Menge der zu ansteuernden LED`s? Ich habe schon ein Paar Videos mit Lauflichtern gesehen bei denen dann z.b. 10 angesteuert werden, aber noch keins mit mehr. Da ich mich elektrotechnisch eigentlich gut aus kenne, bin ich mir bei der Frage des passendes IC´s und dem Programm nicht sicher wie ich da dran geh. Zwecks wie ich den Richtigen IC etc finde. Daher fände ich es echt toll, wenn mir jemand bzgl der Hardware und eventuell dem Programm helfen könnte. In C habe ich leider noch nie etwas in die Richtung Programmiert.
Beitrag #5680227 wurde von einem Moderator gelöscht.
Nimm einen Arduino Mega und lerne das Programmieren in C. So schwer ist das nicht, das kann jeder. Sogar ich habe das verstanden ;) Mehr Hardware als den Mega, die (low current!) LEDs und je 1 Vorwiderstand braucht es nicht.
Beitrag #5680231 wurde von einem Moderator gelöscht.
Beitrag #5680232 wurde von einem Moderator gelöscht.
Beitrag #5680233 wurde von einem Moderator gelöscht.
Beitrag #5680237 wurde von einem Moderator gelöscht.
Dirk B. schrieb: > Ich würde gerne bei meiner Schaltung 40 LED´s wie bei einem "Roulett" > ansteuern. Hallo Dirk, du könntest dich an diesen Bausatz bzw. dem zugehörigen Schaltplan orientieren. Studiere es, baue es nach, oder kaufe dir den Bausatz, um mit der Materie vertraut zu werden. Wenn du bezüglich dem LED-Verhalten "Sonderwünsche" hast, passt du halt einfach das Programm an. https://www.pollin.de/p/bausatz-roulette-810163 übrigens: Das "übliche" Roulette hat 37 (36 plus die 0) Zahlen. Mit 40 LED bist du 3 über - hat das einen Grund?
:
Bearbeitet durch User
Mani W. schrieb im Beitrag #5680237: > Keine Ahnung, wovon Du sprichst und weitere Diskussionen mit Dir > erscheinen mir nicht zielführend, also hilf doch dem TE mit einer > Gesamtschaltung, dem Layout und dem Programm... Wert ist den hier der Alkoholiker, du oder ich? Das ist ein Programmrumpf, in ein paar Minuten geschrieben. LEDs mit R an die Pins 0-40, die Taster an die folgenden 3 Pins. Die Start- und Stoptaster noch wie gewünscht anschließen, fertig. Aber erst mal meckern und den armen Fragesteller lächerlich machen. Lächerlich bist hier nur du.
1 | #define TasterStart 41
|
2 | #define TasterStop 42
|
3 | #define TasterReset 43
|
4 | |
5 | |
6 | byte led[40]; |
7 | byte ledCount; |
8 | |
9 | |
10 | |
11 | // Alle LEDs einschalten und Zähler löschen
|
12 | void resetLED() { |
13 | ledCount = 40; |
14 | for (byte n=0; n<ledCount; n++) { |
15 | pinMode(n, OUTPUT); |
16 | digitalWrite(n, HIGH); |
17 | led[n] = 1; |
18 | }
|
19 | }
|
20 | |
21 | // Per Zufall eine LED ausschalten
|
22 | // Wenn keine mehr da ist, wird 1 zurückgeliefert
|
23 | // ansonsten wird 0 zurückgeliefert
|
24 | byte nextLED() { |
25 | if (ledCount == 0) |
26 | {return 1;} |
27 | else { |
28 | byte n; |
29 | do { |
30 | n = random(0, 40); |
31 | } while(led[n] == 0); |
32 | digitalWrite(n, LOW); |
33 | led[n] = 0; |
34 | ledCount--; |
35 | return 0; |
36 | }
|
37 | }
|
38 | |
39 | |
40 | void setup() { |
41 | Serial.begin(9600); |
42 | resetLED(); |
43 | pinMode(TasterStart, INPUT); |
44 | pinMode(TasterStop, INPUT); |
45 | pinMode(TasterReset, INPUT); |
46 | }
|
47 | |
48 | void loop() { |
49 | if (digitalRead(TasterReset)) { |
50 | while(digitalRead(TasterReset)); |
51 | resetLED(); |
52 | }
|
53 | |
54 | if (digitalRead(TasterStart)) { |
55 | while(digitalRead(TasterStart)); |
56 | // Starten ...
|
57 | }
|
58 | |
59 | if (digitalRead(TasterStop)) { |
60 | while(digitalRead(TasterStop)); |
61 | // Stoppen ...
|
62 | }
|
63 | }
|
PS: Hoffentlich merkt keiner, dass du stocknüchtern bist
Danke Wegstaben V. Ich möchte auch kein Roulett, sondern "wie ein Roulett", dass eine LED nach einander angeht wie ein art Lauflicht. Der Vorgeschlagene Bausatz hatte ich auch schon gesehen, nur war ich mir nicht sicher ob es mit dem IC wie ich es mir vorstelle auch Funktioniert, bzw wie die LED´s angesteuert werden, da ja nicht jede LED ein eigenes Output Signal des IC haben kann bezogen auf die Anzahl der Pin´s /Füße? Und ENTSCHULDIGUNG wenn ich mit IC´s noch nichts gemacht habe bzw was ich brauche!!!
Sieh dir mal die WS2812 LEDs an, da gibt es auch fertige Ringe mit diesen LEDs zu kaufen. Es reicht dir dann auch ein kleines Arduino Board und es gibt kaum Verdrahtungsaufwand! Beispielcodes für Arduino gibt es da auch genug, der Rest ist lernen und ausprobieren ;)
Das Board ist eine Clon nur mit schlechterer Qualität wahrscheinlich oder? Geekcreit® Mega 2560 R3 ATmega2560-16AU Steuerplatine
Naja, so einfach ist es nun auch wieder nicht. Dirk will 40 (vierzig) LED's ansteuern. Das muss man mit Latche (z.B.74HCT373) machen. Das heißt man benötigt 5 stk 74HCT373 (oder CMos Derivate). Diese 5 stk auf der Eingangsseite paralell, und auf der Ausgangsseite die 40 LED's mit Vorwiederstände. Muss weg. hab mal einen Teil dargestellt.
Udo schrieb: > Sieh dir mal die WS2812 LEDs an da wären 40 LEDs auch am Arduino Nano kein Problem brauchen 1 Port sowie 120 Byte RAM und wären in 3,6ms rausgeschrieben, das reicht für schnelles Rausschieben. Die WS2812B gibt es als Stripes oder Einzel LEDs für jede Art von Aufbau. Kein Schiebe Register IC, kein Vorwiderstand für die LEDs, der Rest ist Software soagar für alle Farben und Helligkeiten je LED, bei 40 LEDs x 0,06A maximal 2,4A bei alle an mit Spitzenweiss da reicht sogar ein 5V Steckerschaltnetzteil.
Beitrag #5680286 wurde von einem Moderator gelöscht.
Beitrag #5680291 wurde von einem Moderator gelöscht.
Beitrag #5680292 wurde von einem Moderator gelöscht.
Hallo Dirk. Also ich finde Deine Idee super, und ich glaube auch, dass das ein gutes Projekt ist, um sich in die Thematik einzuarbeiten. Die "Du hast doch keine Ahnung" und "das kannst Du eh nicht" - Quatschköpfe vergisst Du einfach mal. Die gehören hier im Forum zum "guten Ton" ;) Der Bausatz funktioniert so, dass - wie Du schon bemerkt hast - nicht jede LED EINEN Pin bekommt. Hier werden mehrere Pins und LEDs geschickt verschaltet, dass es funktioniert. Genutzt wird dabei, dass LEDs nur in eine Richung funktionieren. Das geht schon in die Richtung Multiplexen. Im Prinzip ist das nicht schwer, macht es aber etwas komplexer. Wenn Du den Arduino nimmst, kannst Du jede LED an EINEN Pin hängen. Das macht es übersichtlicher. Dafür musst Du Dich etwas mehr mit der Hardware beschäftigen, weil Du die ja selbst aussuchen musst. Das musst Du entscheiden, welchen Weg Du gehen willst. Überlegs Dir, ich bin sicher Du bekommst für jeden Unterstützung! Gruß Sebastian
Beitrag #5680295 wurde von einem Moderator gelöscht.
Beitrag #5680302 wurde von einem Moderator gelöscht.
Joachim B. schrieb: > Kein Schiebe Register IC, kein Vorwiderstand für die LEDs, der Rest ist > Software soagar für alle Farben und Helligkeiten je LED, bei 40 LEDs x > 0,06A maximal 2,4A bei alle an mit Spitzenweiss da reicht sogar ein 5V > Steckerschaltnetzteil. Käse. Da kann das Netzteil noch so viel Strom liefern, ein Arduino Board schafft solche Strombelastungen nicht. Das klappt vielleicht wenn man die LEDs mit 2...5mA bestromt. Aber selbst dann wird der Arduino Spannungsregler zu kämpfen haben.
Beitrag #5680322 wurde von einem Moderator gelöscht.
Fragender schrieb im Beitrag #5680302: > kein Theead mehr ohne gepöbel.. nunn ja das liegt am Eingangsposting, da kann man sich veräppelt fühlen. Dirk B. schrieb: > Ich habe schon ein Paar Videos mit Lauflichtern > gesehen bei denen dann z.b. 10 angesteuert werden, aber noch keins mit > mehr. es bedarf nur weniger "Klicks" um sowas zu finden https://www.youtube.com/watch?v=yCfCK4coFWs https://www.youtube.com/watch?v=2yo0WuwBioU https://www.youtube.com/watch?v=c3zUAYnZ4-c https://www.youtube.com/watch?v=4k-TCyf7Nsg (wobei einfacher ist es mit APA oder WS Stripes)
Stabiler Alkoholiker schrieb: > Mehr Hardware als den Mega, die (low current!) LEDs und je 1 > Vorwiderstand braucht es nicht. Mit Charlieplexing (https://en.wikipedia.org/wiki/Charlieplexing) muss es nicht einmal der große Arduino Mega sein, denn es genügen 7 I/O Pins und 7 Widerstände. > Das Board ist eine Clon nur mit schlechterer Qualität > wahrscheinlich oder? Meine haben bisher alle funktioniert. Mängel dich ich bisher öfters hatte: - Scharfe Kanten - Spitze Ecken - Schief eingelötete Stiftleisten - Bootloader war nicht installiert kaufe am besten Boards, wo man die Stiftleisten selber einlöten muss. Wenn du einen ISP Programmieradapter hast, kannst du den Bootloader leicht selbst installieren. Eine kleinere Varinate vom Charlieplexing kannst du hier finden - zum abgucken: http://stefanfrings.de/knightrider/index.html
Mitlesa schrieb: > Käse. > > Da kann das Netzteil noch so viel Strom liefern, ein Arduino Board > schafft solche Strombelastungen nicht. Zwei können sich nicht benehmen, andere können nicht lesen. Warum soll man in diesem Forum überhaupt noch schreiben Stabiler Alkoholiker schrieb: > Mehr Hardware als den Mega, die (low current!) LEDs und je 1 > Vorwiderstand braucht es nicht. low current LEDs brauchen 2 mA x40 = 80mA Arduino wird vorgeschlagen, Programme gäbe es genug, und oben steht eins. Nee Leute, ihr habt mich abgehängt. Vielleicht habe ich tatsächlich das falsche Schwein geschlachtet. Aus diesem Forum werde ich nicht mehr schlau. Ich bin weg
Stefanus F. schrieb: > Mit Charlieplexing (https://en.wikipedia.org/wiki/Charlieplexing) muss > es nicht einmal der große Arduino Mega sein, denn es genügen 7 I/O Pins > und 7 Widerstände. So sieht´s aus! Stabiler Alkoholiker schrieb: > low current LEDs brauchen 2 mA > x40 = 80mA Stimmt.. aber in seinem Fall leuchtet immer nur eine LED. Daher 2mA x 1 = 2mA Ich denke, das ist ein nettes Projekt, um den Einstieg in die uC Welt zu bekommen. Am Einfachsten natürlich über Arduino.
Als Controller kannst Du ein ATtiny 44A/84A nehmen. Oder ein Arduino, wenn das einfacher für dich ist. Dann noch 7 Vorwiderstände und die 40 LED*s. Das Zauberwort heißt "Charliplexing". Dann kommst Du mit 7 Leitungen für die LED*s aus. Das ist nicht so einfach zu programmieren, aber durchaus machbar. Etwas einfacher ist Multiplexing. Dann benötigst Du aber 13 Leitungen und 6 Widerstände. Dann muss es mindestens ein ATtiny 2313A/4313 werden oder ein Arduino. Berechne die Vorwiederstände so, dass nicht mehr als 3mA pro LED fließt. Sowohl beim Charliplexing als auch beim Multiplexing kannst Du bis zu 6 LED's gleichzeitig ansteuern (aber nur bestimmte LED*s einer Gruppe). So kommst Du auf einen Plex von 7. Wenn Du es fertig hast, hast Du viel gelernt.
Schlumpf schrieb: > Stimmt.. aber in seinem Fall leuchtet immer nur eine LED. > Daher 2mA x 1 = 2mA Tja, das ist ein bischen unklar, er möchte das "würfeln" wohl so lange wiederholen bis keine LED mehr übrig ist. Bloss woher weiss das der Anwender ? Wohl in dem die zuletzt ausgewürfelte LED leuchten bleibt. Es leuchten dann immer mehr bis zum Schluss alle 40 an sind. Hier muss Dirk sich noch mal klarer werden was er EIGENTLICH will, und nicht verstecken um was es geht. Jedenfalls mit einem uC wie Arduino auch mit weniger als 40 Anschlüssen (Charlyplexing, Multiplexing) machbar, eine Realisierung nur mit Logic-ICs wie 74xx/40xx möglich ohne Programmieren aber anspuchsvoll und eine Platine voller Bauteile.
MaWin schrieb: > Tja, das ist ein bischen unklar, er möchte das "würfeln" wohl so lange > wiederholen bis keine LED mehr übrig ist. Ich hab das so verstanden: Alle LEDs werden schnell hintereinander angesteuert (aber es leuchtet immer nur eine). Die Wechselgeschwindigkeit wird reduziert bis zum Stillstand. Diese LED wird in der nächsten Runde nicht mehr angesteuert. Das Ganze so lange, bis eben keine LED mehr übrig ist.
Dirk B. schrieb: > … bin ich mir bei der Frage des passendes IC´s und dem Programm nicht > sicher wie ich da dran geh. Zwecks wie ich den Richtigen IC etc finde. Hallo Dirk, im Datenblatt vom ATmega328P/ATmega2560 (von den meisten hier unter dem Stichwort Arduino empfohlen) steht unter Absolute Maximum Ratings: > DC Current VCC and GND Pins: 200.0mA > Exposure to absolute maximum rating conditions for extended periods > may affect device reliability. Also nehmen wir mal 160mA als Grenze. Wenn alle 40 LEDs an sind, wären das 4mA pro LED. Es gibt low-current-LEDs, die damit noch hell genug sind. Der ATmega2560 (Arduino Mega 2560) hätte genügend freie Pins (für jede LED einen Pin). > In C habe ich leider noch nie etwas in die Richtung Programmiert. Dann fange doch erstmal mit einer blinkenden LED an und arbeite dich weiter hoch, wie hier auch schon gesagt wurde. > Daher fände ich es echt toll, wenn mir jemand bzgl der Hardware und > eventuell dem Programm helfen könnte. Alternativ könntest Du z.B. auch Konstantstrom-Schieberegister wie z.B. TLC5926 nehmen oder WS2812-LEDs, wie schon gesagt wurde. Dann reicht z.B. auch der kleinere ATmega328P oder andere kleinere Controller und Du hättest nicht die Grenze mit diesen "absolute maximum rating" (s.o.). Als Einsteiger möchtest Du vielleicht lieber erstmal die Variante mit den einzeln angesteuerten LEDs umsetzen, wenn Dir die 4mA pro LED reichen. Bei konkteten Fragen "Ist das so richtig, warum geht das nicht" ist es dann einfacher zu helfen. Natürlich wirst Du immer wieder Post finden, die Dir sagen: "Du machst das falsch, mach es anders." Am ende ist es Dein Projekt. Lass dich nicht beirren.
:
Bearbeitet durch User
Hallo, ich denke das geschiderte Projekt wird viel zu kompliziert gesehen, als es ist. Um einerseits zu hohen Programmieraufwand zu vermeiden, andererseits auf SMD-Bauteile verzichten zu können, schlage ich den Einsatz eines AVRs mit nachgeschaltet SIPOs vor, also einer 40-fachen Schiebekette vor. Beispiel: 1 AVR und 5 mal 8-Bit-SIPO, sind nur 6 DIL-Schaltkreise. Der Rest lösst sich leicht in BASCOM (oder einem anderen Tool) programmieren VG Micha
Beitrag #5680461 wurde von einem Moderator gelöscht.
Michael B. schrieb: > schlage ich den Einsatz eines AVRs mit nachgeschaltet SIPOs vor Dann sag' mal welchen. Den TLC5926^^ habe ich bei Reichelt z.B. nicht gefunden und SMD soll es ja wohl auch nicht sein. Vielleicht gibt es aus China auch Breakout-Boards mit soclhen Konstantstrom-Schieberegistern?
So wie es "Schlumpf" nochmal erklärt, hab ich es in meinem Post auch gemeint. Danke schon mal für die INFORMATIVEN Kommentare und möglichen Systeme. An das "Bus" System der LED´s hatte ich noch nicht gedacht.
Michael B. schrieb: >> schlage ich den Einsatz eines AVRs mit nachgeschaltet SIPOs vor Torsten C. schrieb: > Dann sag' mal welchen. 74HC595
Beitrag #5680484 wurde von einem Moderator gelöscht.
Dirk B. schrieb im Beitrag #5680484: > Nur weil ich nicht in C > ein Programm schreiben kann und mir nicht sicher bin welche Hardware ich > brauch hat man NULL Kenntnis von Elektrotechnik? Jetzt reg dich mal ab! Wenn du selbst behauptest, dass du dich elektrotechnisch ganz gut auskennst, aber dann einräumst, dass du nicht programmieren kannst und noch nie was mit ICs gemacht hast, dann muss es schon erlaubt sein zu sagen, dass du vermutlich nahezu kein Wissen hast, was für dieses Projekt vonnöten wäre. Vielleicht hast du elektrotechnisches Wissen, aber dann eben in ganz anderen Disziplinen. Aber nicht in der digitalen Elektronik. Das ist wie wenn jemand sagt, dass er gute mechanische Kenntnisse hat und jetzt am Auto was reparieren will, aber bisher an Fahrrädern geschraubt hat. Das ist ja auch grundsätzlich kein Problem und es wirft dir auch niemand vor, dass du Wissenslücken hast. Aber es muss dann erlaubt sein zu sagen, dass es viele Lösungen gibt, aber jede dieser Lösungen für jemanden mit deinem Kenntnisstand eine Herausforderung sein wird, während sie für jemanden mit besserem Kenntnisstand allesamt eher einfach sind. Daher gibt es nicht DIE ideale Lösung für dein Problem. Es gibt vielmehr viele Lösungen. Aber jede wird dich mit deinem Kenntnisstand ganz schön fordern.
Ich mach jetzt keine Vorschläge, aber SIPOs gibts doch, wie Sand am Meer, zur Not gehen auch 10 Stück klassische 4-Bit zB 74xx95. Kompliziert sehe ichs trotzdem nicht, denn jeder hat mit Elektronik mal angefangen VG Micha
Dirk B. schrieb: > So wie es "Schlumpf" nochmal erklärt, hab ich es in meinem Post auch > gemeint. Oh, also immer nur eine ELD an. Sorry wegen der "maximum rating" oben. > An das "Bus" System der LED´s hatte ich noch nicht gedacht. Willst Du denn einen Bus oder direkt ansteuern? Die Arduinos haben zum direkt ansteuern quasi einen Ausgangswiderstand von 35 Ohm (siebe Bild: 0,7 / 0,02 = 35). Da müsste wohl noch vor jede LED ein einzelner Widerstand, es sei denn die LED-Durchbruch-Spannungen passen zufällig zur Betriebsspannung und streuen nicht zu sehr. Das ist viel Löterei. Beim 74HC595^^ gilt im Prinzip das gleiche. Bei Konstantstrom-Schieberegistern oder WS2812 könntest Du auf 40 Widerstände verzichten.
:
Bearbeitet durch User
Deshalb stelle ich ja auch Fragen weil mir das Wissen fehlt? Das es dadurch schwieriger sein kann ist mir schon bewusst, deswegen möchte ich eben wissen was für Möglichkeiten es gibt um mich weiter zu informieren. Nur wie sich manche ausdrücken geht meiner Meinung gar nicht und sollte man sich doch einfach sparen.
Harry L. schrieb: > 3 x PCA9685 Hallo Dirk, darf es SMD sein, oder soll es ein DIL-Gehäise sein? Auch den PCA9685 gibt es nicht bei Reichelt und er ist in SMD. Alternative zu Reichelt: https://www.mikrocontroller.net/articles/Sammelbestellungen(Mouser)
:
Bearbeitet durch User
Das sind die Vorschläge von euch^^, ob ich es über ein Bus mache oder direkt weis ich mit den mehreren Möglichkeiten jetzt noch nicht .
Torsten C. schrieb: > Harry L. schrieb: >> 3 x PCA9685 > > Hallo Dirk, darf es SMD sein, oder soll es ein DIL-Gehäise sein? > > Auch den PCA9685 gibt es nicht bei Reichelt und er ist in SMD. > > Alternative zu Reichelt: > https://www.mikrocontroller.net/articles/Sammelbestellungen(Mouser) Den gibts auch nicht in DIL, aber es gibt haufenweise günstige Breakout-Boards. https://www.amazon.de/s/ref=nb_sb_noss_1?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=pca9685
Aufgabenstellung No.1: Dirk B. schrieb: > Dabei sollte die zutreffende LED beim nächsten Versuch > ausscheiden, bis es nur noch eine gibt. Aufgabenstellung No.2: Dirk B. schrieb: > bis es nur noch eine gibt Aufgabenstellung No.3: Dirk B. schrieb: > Hardware mäßig hätte ich gerne > ein Start/ Stop und Reset. Aufgabenstellung No.4: Dirk B. schrieb: > Beim bestätigen der Stop Taste sollte die > Auswahl der LED immer langsamer werden bis es zu einem Ergebnis kommt. Aufgabenstellung No.5: Dirk B. schrieb: > Die Wechselgeschwindigkeit der LED´s könnte man dann im Programm ändern. Hi, wenn ich das richtig sehe, ist das eine einem echten Roulette nachempfundene Schaltung, wobei die Kugel durch eine LED dargestellt wird. Würde dem Vorposter da zunächst einmal zustimmen: Wegstaben V. schrieb: > du könntest dich an diesen Bausatz bzw. dem zugehörigen Schaltplan > orientieren. Wenn du bezüglich dem LED-Verhalten "Sonderwünsche" hast, > passt du halt einfach das Programm an. > https://www.pollin.de/p/bausatz-roulette-810163 Die ganze Sache geht mit ATMEL AVRs ganz prima. Bei meinem Programm arbeite ich mit .db Tabellen, wo die einzelnen LED-Zustände abgelegt sind. Dann noch diverse Timerinterrupts, die die Beschleunigung bzw. Verlangsamung als Variation reinbringen. Das geht standardmäßig nur mit acht LEDs, weil ich nur acht Bit zur Verfügung habe. Wenn ich mehr haben will, wird es schon etwas umfangreicher. Nur so eine Idee... Viel Spaß noch. ciao gustav
Beitrag #5680529 wurde von einem Moderator gelöscht.
Stefanus F. schrieb: > Michael B. schrieb: >>> schlage ich den Einsatz eines AVRs mit nachgeschaltet SIPOs vor > > Torsten C. schrieb: >> Dann sag' mal welchen. > > 74HC595 MAX7219, benötigt 3-Portpins (SPI), kann 64 einzelne LEDs ansteuern rhf
Roland F. schrieb: > MAX7219, benötigt 3-Portpins (SPI), kann 64 einzelne LEDs ansteuern … und es gibt ihn als DIL bei Reichelt: https://www.reichelt.de/display-treiber-dil-24s-max-7219cng-p217144.html Bei diesen Multiplex-Lösungen leuchten die LEDs allerdings oft nicht so hell: 10% Einschaltzeit mit 200mA ist oft dunkler als 100% mit 20mA. Allerdings hängt das wohl vom LED-Typ ab. Es gab da schon viele Beispiele und Gegenbeispiele hier im Forum. Ich würde den MAX7219 durchaus nehmen, denn der ist handlicher als diese Breakout-Boards und auch preiswerter.
:
Bearbeitet durch User
Dirk B. schrieb: > Das sind die Vorschläge von euch^^, ob ich es über ein Bus mache oder > direkt weis ich mit den mehreren Möglichkeiten jetzt noch nicht . Nach deiner Beschreibung (immer nur 1 LED zu einer Zeit an) reicht ein uC wie Arduino mit 7 Ausgangspins, die 1 LED von 40 per Charlyplexing direkt mit bis zu 20mA zu versorgen. http://ww1.microchip.com/downloads/en/AppNotes/91029a.pdf
Charlyplexing ist zwar etwas Programmiererei aber wohl die einfachste und preiswerteste Lösung auf HW-Seite. Haben alle LEDs die gleiche Farbe? Zwei LEDs mit einer kleineren Durchbruchspannung könnten dunkel leuchten, wenn sie parallel zu einer anderen mit großer Durchbruchspannung liegen. Also ggf. einmal mit Original-LEDs prüfen um sicher zu gehen, und dann wäre das eine schöne Programmieraufgabe.
Torsten C. schrieb: > Charlyplexing ist zwar etwas Programmiererei aber wohl die einfachste > und preiswerteste Lösung auf HW-Seite. Ich würde einfach die 40 Zustände als Look-Up-Table in ein Array legen.
> Haben alle LEDs die gleiche Farbe? ein Farbwechsel brauche ich nicht, daher JA. Würde Rote LED´s kaufen
:
Bearbeitet durch User
Beitrag #5680680 wurde vom Autor gelöscht.
Dann ist das doch die perfekte Lösung. :) Charlyplexing mit Lookup-Tabelle und Arduino oder z.B. einem STM8S103F3P6 Board. Nicht um die alte Debatte zu erneuern, sondern nur um generell aufzuzeigen, dass es grundsätzlich auch für 5V Alternativen gibt, die Source-Level-Debugging können und hier incl. ST-Link-Clone preiswerter sind als ein Arduino. Der hier erwähnte STM8S103 sollte laut Datenblatt (maximum rating conditions) allerdings nicht dauerhaft mit 20mA belastet werden. Aber die LEDs wechseln ja oder man kommt mit z.B. 15mA aus. Immernoch hell genug.
Torsten C. schrieb: > Dann ist das doch die perfekte Lösung. :) > > Charlyplexing mit Lookup-Tabelle und Arduino > oder z.B. einem STM8S103F3P6 Board. hm.... und wie wäre es mit "Charlieplexing mit dem Pollin Roulette-Spiel"? Beitrag "Re: LED- Schaltung" Die Grundplatine ist vorhanden, und alles wäre direkt bereit. nur ein Taster auf der Pollin-Platine? praktischerweise hängt der Taster auf AIN1, da kann man mit einem R2R Widerstands-Netzwerk mindestens 4 Taster auf den Analog-Komperator "bedienen". nur 37 LED? Keine Sorge, mit 7 PIN schafft man 42 lED mit Charlieplexing, z.B. http://www.gunook.com/adafruit-huzzah-42-charlieplex-led-gitter/ Das Pollin design nutzt gar 13 Pin, das macht dann 156 ansteuerbare LED. mit 13 PIN liesse sich sogar ein (nicht benötigtes) RGB-Roulette (oder Lauflicht) ansteuern
:
Bearbeitet durch User
Wegstaben V. schrieb: > nur 37 LED? Keine Sorge, … Dann soll das ganze Platinen-Layout in die Tonne und eine ganz neue Platine mit 40 LEDs soll her? Wo wäre denn da der Vorteil vom Bausatz. Die LEDs sind auch nicht einheitlich rot. Ansonsten: Auf den ATTiny2313 kann man wohl irgendwie eigene SW drauf spielen falls die LOCKBIT-Fuse nicht aktiviert ist. Vielleicht gleich einen jungräulichen ATTiny2313 und einen Programmer in Reserve bestellen?
:
Bearbeitet durch User
Wenn ich das Charlieplexing verfahren nehme, würde ein Arduino Micro mit 20 I/O Pins vollkommen reichen? Bräuchte ja dann nur 7. Bei der Verdrahtung wirds zwar generell lustig mit 40 leds aber das sollte kein Problem sein. Wird die Programmierung für mich als neuling damm extrem schwer oder müsste man das nach den ersten paar Lernstunden schon hin bekommen? Bzw ist es für ein Profi ein aufwand von n paar Minuten?
Multiplexing wäre eine Alternative, bedeutet jedoch höheren Verdrahtungsaufwand, da 6-Bit vom AVR auf zB 3 mal 4 to 16 Multiplexer verteilt werden müssen. Würde unter Hinzuziehung der diversen SS-Anschlüssen funktionieren, die Shift-Register-Variante erachte ich jedoch als eleganter. Dazu reicht sogar ein 8-poliger ATTiny vollkommen aus. Nur Clock und Data braucht man, hochwissenschaftliche Abhandlungen, oder hochkomplizierte Programmiervorschläge brauchen nicht abschreckend zu wirken, da beide absolut ummötig sind. Schreib als Autor dieses Threeds einfach, ob Du bereit bist, für die komplette elektronische Hardware (LEDs, AVR, Shift- register, Lochrasterplatte, Platinenstecker, Netzteil) bereit bist, maximal 35 EURO für den Einkauf bei gängigen Elektronik- händlern zu zahlen. Desweiteren brauchst Du einen Rechner mit LPT-Schnittstelle und BASCOM-AVR. Billiger und leicht verständlicher wird es nicht werden! Meine Hilfe ist Dir gewiss. VG Micha
Michael B. schrieb: > Multiplexing wäre eine Alternative Es soll immer nur genau eine LED leuchten. Dirk B. schrieb: > ist es für ein Profi ein aufwand von n paar Minuten? Für den ersten Ansatz benötigt ein Profi ca. 2..4 Stunden für die SW, wenn die HW bereit steht. Für Verschönerungen fällt einem immer wieder was Neues ein: Bessere Tastenentprellung, Timing über Interrupts, Lookups über PROGMEM, … > Wenn ich das Charlieplexing verfahren nehme, würde ein Arduino Micro mit > 20 I/O Pins vollkommen reichen? Ja. > Bräuchte ja dann nur 7. Plus die drei für die Taster (im einfachsten Fall, ein Pin pro Taster). > Wird die Programmierung für mich als Neuling dann extrem schwer oder > müsste man das nach den ersten paar Lernstunden schon hin bekommen? Viele Einsteiger machen das mit Arduino und dann wirst auch Du das in ein paar Lernstunden hin bekommen. Was mich betrifft: An Debugging über Serial.Print konnte ich mich nie gewöhnen; ich schwöre auf C-Code Source-Level-Debugging und wäre eine schlechte Hilfe.
:
Bearbeitet durch User
Wie gesagt, für nur eine LED muss es kein multiplexing sein, aber danke Doch so "lange" wenn man sich sehr gut auskennt? Hätte ich jetzt doch nicht gedacht. Vielen dank schonmal
Dirk B. schrieb: > Doch so "lange" wenn man sich sehr gut auskennt? > Hätte ich jetzt doch nicht gedacht. Es gibt bestimmt auch Leute, die behaupten, mit weniger Stunden auszukommen. * Die Lookup-Tabellen erstellen, * die richtigen Ports richtig initialisieren, * den Zustandsautomaten erstellen und überlegen, ob er wirklich passt, * die LEDs mit konstanter Geschwindigkeit ansteuern und * sich um die langsam werdende Kugel kümmern. Wenn man pro Schritt im Mittel 30 Minuten rechnet, sind das schon 2,5 Stunden. Und vorher muss die Hardware fertig sein.
Die Diskussion im Forum geht schon STUNDEN, vielleicht ist der Zeitrahmen für DIESES Projekt ja auch egal. Es geht um ERFAHRUNGEN sammeln mit PRAKTISCHER ELEKTRONIK, also nicht den Mut verlieren VG Micha
Dirk B. schrieb: > Wie gesagt, für nur eine LED muss es kein multiplexing sein, aber danke Ist die Frage, was du unter Multiplexing verstehst. Bei immer nur einer LED ist das sogar der Idealzustand. Wenig Pins, wenig Widerstände, keine Treiber erforderlich und dennoch volle Helligkeit (wenn gewünscht). Bei Charlieplexing nochmal weniger Pins.
H.Joachim S. schrieb: > Bei Charlieplexing nochmal weniger Pins. Ich dachte, Charlieplexing wäre inzwischen Konsens.
Ich selber hatte natürlich mit Multiplexing nur das Aufdröseln von parallelen Bits zu den einzelnen Ausgängen gemeint, was natürlich keine Multiplexanzeige darstellt. Eine reine Multiplexanzeige hat logischerweise weniger Lötarbeit zur Folge, bedarf jedoch höheren Programmieraufwand und es besteht die Gefahr der Überlastung einzelner LEDs bei Programmierfehlern VG Micha
Dirk B. schrieb: > Wie gesagt, für nur eine LED muss es kein multiplexing sein, aber danke > > Doch so "lange" wenn man sich sehr gut auskennt? > Hätte ich jetzt doch nicht gedacht. Was hättest du denn gedacht? 15 Minuten? Wie weltfremd kann man sein? Aber ich warte immer noch auf einen kurzen Abriss deiner "elektrotechnischen Kentnisse". Was hast du denn schon an Projekten gemacht? Dann kann man solche Erwartungshaltungen eventuell auch besser einschätzen und man könnte eine Lösung anbieten mit Mitteln die du vielleicht schon kennst. Denn sind wir ehrlich, du wirst keine der hier vorgeschlagenen Lösungen selber umsetzen. Hast du überhaupt schon mal einen Controller in Betrieb genommen, eine LED angeschlossen und ein Programm dafür erstellt diese blinken zu lassen? Also mal eine Basis für alles weitere geschaffen? Wenn nein, warum fängst du damit nicht erst mal an sondern diskutierst hier ersthaft welchen Multiplex-Modus man jetzt nehmen sollte. Vielleicht bekommst du dann auch mal ein Gefühl für Entwicklungszeiten.
:
Bearbeitet durch User
Warum wurde dieser Beitrag bitte gelöscht? > Nein wird es nicht. Mit Null Kenntnissen ist JEDES Projekt schwierig. > Mit Erfahrung und sicherer Handhabung der Bauteile und Tools gibt es > natürlich zig Wege es zu lösen. > Natürlich stellt es an sich kein Problem dar. Aber kannst du nix dann > kannst du nix. Das war eine völlig allgemeine Erkentnis. Nicht mal auf den TE bezogen. Auf niemanden direkt bezogen. Was soll das? Langsam wird es lächerlich.
Michael B. schrieb: > Ich selber hatte natürlich mit Multiplexing nur > das Aufdröseln von parallelen Bits zu den einzelnen > Ausgängen gemeint... Hi, meine Idee wäre auch, über den noch zur Verfügung stehenden (restlichen) Port noch eine 1 aus 10 Demultiplexer-Logik 7490 und 74141 BCD-codemäßig anzusteuern, womit man die Anzahl der LEDs auf 80 hinbekäme. Der eine Port beim ATtiny hat ja statt 8 Bit nur 7 Bit. BCD braucht nur vier. 8 Bit für die "Daten", die 4 Bit für das "Demultiplexen". Das Prog. im Anhang ist 8-bittig noch. Wie gesagt, das Prinzip "Lauflicht" mit verschiedenen Mustern. ciao gustav
:
Bearbeitet durch User
MaWin schrieb: > Tja, das ist ein bischen unklar, er möchte das "würfeln" wohl so lange > wiederholen bis keine LED mehr übrig ist. Bloss woher weiss das der > Anwender ? Wohl in dem die zuletzt ausgewürfelte LED leuchten bleibt. Das wäre möglich, aber nicht sehr sinnvoll. Sinnvoll wäre hingegen: sie bleibt einfach aus, insbesondere auch beim "Wählvorgang". Wenn man das so (also sinnvoll!) designed, kommt sogar Batteriebetrieb ernsthaft in Frage, denn es leuchtet zu jeder Zeit immer nur maximal eine einzige LED...
Hallo, ich denke, die Schieberegistermethode, wäre die beste, generell und auch für Elektronikanfänger. Mit ASM-Kauderwelsch schreckt man nur ab! Ein Tiny, programmiert mit einfachst und effektivem BASCOM-Code (meine persönliche Meinung) erschlägt das Problem, deswegen steht mein Angebot, den Code unter den entsprechenden Vorraussetzungen zu liefern VG Micha
Michael B. schrieb: > die Schieberegistermethode, wäre die > beste, generell und auch für Elektronikanfänger. und was genau findest du an Charlieplexing kompliziert? Es sind sicherlich zusätzliche Schieberegister etc. deines Vorschlags nicht nur hardwaretechnisch aufwändiger. Michael B. schrieb: > Mit ASM-Kauderwelsch schreckt man nur ab! Stimmt. Egal, welche Hardware-Lösung man da nutzt. Hier mal etwas code in C: http://stefanfrings.de/knightrider/index.html eine Lookup-Tabelle für 40 LED ist jetzt nicht sehr aufwändig, und muss nur 1 mal erstellt werden ...
:
Bearbeitet durch User
Beitrag #5682977 wurde von einem Moderator gelöscht.
Roland F. schrieb: > MAX7219, benötigt 3-Portpins (SPI), kann 64 einzelne LEDs ansteuern Wäre doch ne Superidee, wenn mans so am einfachsten lösen kann, man kann ja als Einzelner nicht alle IC-Typen kennen VG Micha
Eine Matrix-Schaltung mit Ringförmiger Anordnung ist für mich keineswegs weniger Aufwändig, als der Verdrahtungsaufwand für Charlieplexing.
PS: Der MAX7219 ist doch ideal (ich kannte den bisher noch nicht) Da Dieser das Zeitmultiplexing selber, also ohne Programm im AVR, managt, hätte ich jetzt auch keine Vorbehalte gegen multiplexte Ansteuerung, die Gefahr von LED-Überlastung wäre dann vom Tisch VG Micha
Moin, Michael B. schrieb: > bedarf jedoch höheren > Programmieraufwand und es besteht die Gefahr der > Überlastung einzelner LEDs bei Programmierfehlern Michael B. schrieb: > hätte ich jetzt auch keine > Vorbehalte gegen multiplexte Ansteuerung, die Gefahr > von LED-Überlastung wäre dann vom Tisch Was haste denn hier immer fuer ne Panik mit deinen ueberlasteten LEDs und "Programmieraufwand"? Nachdem ja eh' immer nur 1 LED leuchten soll, kann man doch die Vorwiderstaende so dimensionieren, dass da nix ueberlastet wird. der Charlieplex ist auch recht simpel zu programmieren; da machste 2 Arrays mit je 40 byte Groesse; in's eine Array kommen die Daten fuer's Ausgangsregister, also ob 0 oder 1 ausgegeben wird und ins andere Array kommen die Daten fuer's Tristate-Register; also welche der Ausgaenge dann tatsaechlich 0 oder 1 treibt. Dann wird die anzuzeigende Zahl "ausgewuerfelt"; diese Zahl als Index auf die beiden Array hergenommen, der jeweilige Wert genau 1x aus den Arrays ausgelesen und in sein entprechendes IO-Register geschrieben. Schon leuchtet die eine LED und nix kann ueberlastet werden... 'ne simplere HW wirds nicht geben und ne simplere SW auch kaum. Gruss WK
Dergute W. schrieb: > Charlieplex Hi, zwei LEDs antiparallel, eine Diode in Sperrichtung, die andere in Durchlass. Soweit ich das sehe, muss die Sperrspannung der Dioden beachtet werden. Das ist aber bei den 5V (und Vorwiderständen) kein Problem. Gegenbeispiel:Bei dem UAA170 Laufpunkt-Digital-Thermometer kommt es zum schwachen Leuchten von nicht angesteuerten Dioden. Das lässt sich bei der Art von Matrizierung nicht vermeiden. ciao gustav
:
Bearbeitet durch User
Schlumpf schrieb: > Ich hab das so verstanden: > Alle LEDs werden schnell hintereinander angesteuert (aber es leuchtet > immer nur eine). > Die Wechselgeschwindigkeit wird reduziert bis zum Stillstand. > Diese LED wird in der nächsten Runde nicht mehr angesteuert. > Das Ganze so lange, bis eben keine LED mehr übrig ist. Ich vermute sehr, dass darin viel mehr Arbeit steckt als in der Beschaltung mit 40 LEDs. Dergute W. schrieb: > ins andere Array kommen die Daten fuer's Tristate-Register Und ins dritte Array kommt die Info, ob diese Zahl schon mal "gezogen" wurde. Karl B. schrieb: > Das lässt sich bei der Art von Matrizierung nicht vermeiden. Doch, durch geeignetes zeitlich Ansteuern der Matrix. Aber ich würde wegen der einfachen Verdrahtung (eine gemeinsame Masse-Ring-Leitung) auch die Schieberegister-Variante nehmen...
:
Bearbeitet durch Moderator
Moin, Karl B. schrieb: > Hi, > zwei LEDs antiparallel, eine Diode in Sperrichtung, die andere in > Durchlass. Soweit ich das sehe, muss die Sperrspannung der Dioden > beachtet werden. Ja - wenn die max. zulaessige Sperrspannung der einen LED kleiner ist als die Durchlassspannung der antiparallel geschalteten LED, dann schon. Das muessen dann aber ganz schoen eigenartige LEDs sein. > Das ist aber bei den 5V (und Vorwiderständen) kein Problem. Das kommt noch erleichternd dazu. > > Gegenbeispiel:Bei dem UAA170 Laufpunkt-Digital-Thermometer kommt es zum > schwachen Leuchten von nicht angesteuerten Dioden. Das lässt sich bei > der Art von Matrizierung nicht vermeiden. Ich hab' keine Ahnung, wie der UAA170 genau intern aufgebaut ist und die LEDs ansteuert - werd's auch mangels Interesse kaum rausfinden. Aber natuerlich kann man Charlieplexing so betreiben, dass keine LEDs vor sich hinfunzeln, wenn sie's nicht sollen. Ausnahme: Die Kennlinien der LEDs sind so kacke, dass die Spannung, die an einer richtig leuchtenden LED abfaellt, schon reicht, um 2 LEDs in Reihe zum Funzeln zu bringen. Bei meinem ollen VU-Meter hab' ich echt die gammeligsten, aeltesten LEDs genommen, die bei mir so rumflogen - und da leuchtet nix, wenn's nicht soll (Und nachdem da auch mehrere LEDs "gleichzeitig" leuchten sollen, ist's da tatsaechlich etwas aufwendiger mit dem Timing der Ansteuerung, etc. Das braucht's aber hier alles nicht, denn es soll ja immer nur eine LED leuchten). Gruss WK
Nochmal zur angeblichen Panik bei zeitmultipexer Ansteuerung von LEDs bzw Siebensegmentanzeigen. Wir wollen eine deutliche, damit helle Anzeige, definiert im Datenblatt sind maximale Dauerströme, welche den Betrieb im Simultanbetrieb maximal definieren. Der Vorwiderstand wird entsprechend berechnet. Alles bisher geschnallt? Üblich ist heutzutage die zeitmultiplexe Ansteuerung, meisstens wird dann die (Einzel)LED nur noch mit 1/8 oder weniger gebulst. Dadurch ist der Helligkeitseindruck entsprechend geringer, ist auch das klar? Der Hersteller gestattet jedoch einen wesentlich höheren Peakstrom für wenige Microsecunden, jedoch nur bei längeren Pausen. Dadurch kann man mit einem wesentlich kleineren Rv arbeiten, wegen des um ein mehrfach höheren Stromes, welcher jedoch im Dauerbetrieb die LED zerschiessen würde. Habe ich einen Anzeigechip, wekcher HARDWAREMAESSIG diese zeitmultiplexe Anzeige übernimmt, ist man auf der sicheren Seite. Möchte man das softwaremässig mittels programmierter Bit- und Digitpins lösen MUSS dieser entsprechende Softwarebaustein bereits fertig sein und darf durch weitere Softwareexperimente nicht mehr beeinflussbar sein. Ansonsten dürfen die überlasteten LED(-Bausteine) wieder ausgelötet werden. Die Problematik ist unter Elektronikpraktiker seit langem bekannt, musste hier jedoch den Vorwurf der Panikmache loswerden. VG Micha
Moin, tl,dr. Es geht hier um eine Schaltung, bei der genau 1 (von 40) LED(s) leuchten soll - nicht mehrere LEDs "visuell gleichzeitig". Gruss WK
Der Dirk hat sich längst für Charlieplexing entschieden. Ich halte das für eine gute Wahl. Andere Methoden haben auch ihre Existenzberechtigung, brauchen nun aber nicht weiter diskutiert zu werden. Der Dirk wird nun sicher Teile kaufen und es ausprobieren. Vielleicht meldet er sich bald mit weiterführenden Fragen, bei denen wir ihm helfen können. Jedenfalls sind Diskussionen um alternative Methoden für den Dirk jetzt nicht mehr hilfreich.
Reise nach Jerusalem auf elektronisch: Warum machst Du nicht ein Array aus 40 Elementen mit initlalsierung aller Elemente auf 0. Wenn ein Element 1 gesetzt ist ist es ausgeschieden. Dann nimmst Du drei bis vier I2C nach Parallel Decoder z.b. von MCP(Microchip). Sagen wir mal ein Decoder hat 10 Ausgänge. Die I2C Adresse ist einstellbar. Wobei 0x30 erst mal fiktiv ist. Dann schickst Du über I2C die Bitfolge der ersten 10 Array Elemente an Adresse 0x30. Dann schickst Du über I2C die Bitfolge der zweiten 10 Array Elemente an Adresse 0x31. Dann schickst Du über I2C die Bitfolge der dritten 10 Array Elemente an Adresse 0x32. Dann schickst Du über I2C die Bitfolge der vierten 10 Array Elemente an Adresse 0x33. Gruß Andreas
Moin, Andreas V. schrieb: > Dann nimmst Du drei bis vier I2C nach Parallel Decoder z.b. von > MCP(Microchip). > .... Na, das ist doch viel zu simpel. Wie waers gleich mit einem 48 Port GBit-Ethernetswitch und 40 BeagleBones oder Raspies - an jedem haengt eine LED und alle sind per Ethernet am Switch verbunden. Dann noch eine Datenbank mit KI-Javabackend auf einem Server in der Cloud. Per Blockchain wird man dann festhalten koennen, welche LEDs schon mal an waren. Obwohl: Der Raspi hat kein GBitEthernet, da wirds dann langam wahrscheinlich eng mit der Echtzeitfaehigkeit bei IPv6. Beim Beagle weissichs nicht auswendig. Hmmm, das wird schwierig.... Aber vielleicht gibts EU- oder Landes-Foerdermittel;-) SCNR, WK
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.