Arcade Stick mit nem Attiny 2313 leben einhauchen

Unterbodenbeleuchtung, Pimp my room, usw.

Moderator: T.Hoffmann

bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Mi, 09.12.09, 12:11

Hi,

ich habe da mal ein wenig gemalt. Geht das in die richtige Richtung. Ist der Transistor der richtige und ist der Basiswiderstand richtig angeschlossen.

Ich habe noch 3 pins frei. 2 davon gehören aber zur CLK. Doof... vielleicht könnte man noch shiften?

Grüße,

Jochen
Dateianhänge
v0.1
v0.1
bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Mi, 09.12.09, 12:13

hmm, nachträgliches Editieren ist wohl nich,oder? Ich habe die Fragezeichen vergessen.... :oops:
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Mi, 09.12.09, 12:40

Ui, ql, sowas geht?
Das geht. Man sollte es halt nicht übertreiben. Also 1/3 duty mit 60mA (wäre ja in etwa das gleiche wie 1/1 duty mit 20mA) würde ich mich nicht trauen, das geht dann doch schnell zu Lasten der Lebensdauer, aber bei 1/3 duty mit 30mA hätte ich keine Bedenken. Ist zwar immer noch nur grob die Hälfte des max. möglichen Lichts, aber immerhin. Wieso Taktrate erhöhen?
Ich würde/werde wohl einen Timer-IRQ verwenden mit 1000Hz (also 1x pro Millisekunde). Also ist jede Farbe (wenn sie grade aktiv sein soll) eine Millisekunde an und 2 Millisekunden aus. Entspricht prinzipiell einer PWM mit 1/3 duty und rund 300Hz.
Für einen Test hab ich mal ein Standard 5mm LED mit über 700mA (allerdings sehr kurzem duty) betrieben. Hat nur ein bisschen gelitten :D : viewtopic.php?p=96852#p96852

Die Zeichnung geht in die richtige Richtung.
Nur die R/G/B Leitungen an den Kollektor des entsprechenden Transistors und Emitter an Masse. Als Basis-Vorwiderstand würde ich 330Ohm verwenden. Bei einer minimalen 'High'-Spannung von 4.2V vom ATMega würden (abzüglich BE Spannung von 0.7V) also 3.5V an diesem Widerstand abfallen, das macht rund 10mA; bei einer Stromverstärkung von 100 (minimal Wert eines BC337 oder 338) könnten also theoretisch 1A über Kollektor Emitter fließen :) Das reicht locker.
Im Moment hätte ich folgende Beschaltung des ATMega8 vorgeschlagen:
PortB: Inputs von den 8 Tasten (mit aktiven Pull-Ups)
PortC0-PortC2 (3 Pins): Outputs für die Transistoren
PortC3 und PortC4: Output für die zwei LEDs im Stick
PortC5: Input vom NAND (ohne Pull-Up)
PortD: Outputs für die 8 RGB LEDs (direkt an deren gemeinsame Anode oder über PNP Treiber-Transistoren)

[EDIT]
Nachträglich editieren ist kein Problem: Rechts oben beim Post 'Optionen - Ändern'
bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Mi, 09.12.09, 13:36

Ich würde/werde wohl einen Timer-IRQ verwenden mit 1000Hz (also 1x pro Millisekunde). Also ist jede Farbe (wenn sie grade aktiv sein soll) eine Millisekunde an und 2 Millisekunden aus. Entspricht prinzipiell einer PWM mit 1/3 duty und rund 300Hz.
Na, da sind die Begehrlichkeiten natürlich geweckt. Wenn man hier noch justieren könnte um die Farben zu mischen, wäre das natürlich toll! Wäre sowas mit solch einer Schaltung möglich?
Für einen Test hab ich mal ein Standard 5mm LED mit über 700mA (allerdings sehr kurzem duty) betrieben. Hat nur ein bisschen gelitten
Das ist ja der Hammer :)
Nur die R/G/B Leitungen an den Kollektor des entsprechenden Transistors und Emitter an Masse.
Auch für RGB LEDs mit einer gemeinsamen Kathode? Die habe ich nemlich noch hier rumamliegen.
Als Basis-Vorwiderstand würde ich 330Ohm verwenden. Bei einer minimalen 'High'-Spannung von 4.2V vom ATMega würden (abzüglich BE Spannung von 0.7V) also 3.5V an diesem Widerstand abfallen, das macht rund 10mA; bei einer Stromverstärkung von 100 (minimal Wert eines BC337 oder 338) könnten also theoretisch 1A über Kollektor Emitter fließ
Und schon wieder etwas gelernt :))
Im Moment hätte ich folgende Beschaltung des ATMega8 vorgeschlagen:
PortB: Inputs von den 8 Tasten (mit aktiven Pull-Ups)
PortC0-PortC2 (3 Pins): Outputs für die Transistoren
PortC3 und PortC4: Output für die zwei LEDs im Stick
PortC5: Input vom NAND (ohne Pull-Up)
PortD: Outputs für die 8 RGB LEDs (direkt an deren gemeinsame Anode oder über PNP Treiber-Transistoren)
Vereinfacht auf jeden Fall nachher die Programmierung. Ich würde das Setup aber dahin gehend ändern wollen, dass eine RGB Led im Balltop verwendet wird. Das heisst man bräuchte nur eine zusätzlich Leitung. Die andere könnte als Input des Sticks dienen...

Grüße,
bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Mi, 09.12.09, 13:54

So,

Veränderungen:
- ich habe die Widerstände entschlackt. Sollte ja so das gleiche in grün sein.
- Pinout angepasst
- 9. RGB LED für den Stickball eingeführt
- NAND Schaltung für das Sticksignal

PC3 Stickinput
PC4 Led aktivieren für Stick

Wat meinst....
Dateianhänge
v0.2
v0.2
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Mi, 09.12.09, 14:26

Begehrlichkeiten: Wenn man hier noch justieren könnte um die Farben zu mischen, wäre das natürlich toll!
Was genau schwebt Dir da vor? Die IRQ-Frequenz auf 10kHz zu erhöhen ist noch recht problemlos möglich, da bleiben (bei 8MHz Takt) immerhin noch 800 Takte in jedem Interrupt um Code auszuführen. Damit kann man noch sinnvoll arbeiten. So könnte man pro Farbe 10 Helligkeitsstufen darstellen. Für noch mehr Helligkeitsstufen wäre eine noch höhere IRQ-Frequenz erforderlich, dann muss man aber schon sehr aufpassen, was man macht, weil sehr viele Befehle können dann nicht mehr in der IRQ Routine bearbeitet werden. Kommt halt sehr drauf an, was da genau passieren soll.
Für RGB LEDs mit einer gemeinsamen Kathode würde ich die ganze Schaltung 'umdrehen'. Also +5V über PNP Transistoren (z.B. BC327/BC328) an die R/G/B Leitungen und gemeinsame Kathode an je einen AVR Pin (oder falls 'Überbestromung' erwünscht gemeinsame Kathode über je einen NPN Transistor an Masse).

Wegen neuer Zeichnung... Gemeinsame Vorwiderstände gehen nicht, da ja die LEDs quasi parallel geschaltet sind und je nachdem wie viele an sind, unterschiedliche Vorwiderstände erforderlich wären. NPN-Transistoren für die RGB LEDs mit einer gemeinsamen Kathode verwenden (wie in Deiner Zeichnung) geht hier wohl auch, so große Ströme brauchen wir ja nicht.
bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Mi, 09.12.09, 15:29

Ich würde gerne die Farben der RGB mischen können. Dazu wären 10 Helligkeitsstufen schon richtig gut. Dimmeffekte dürften sich damit auch erzielen lassen. Mir schwebt adhoc zum Beispiel für den InitMode folgendes Szenario vor.

Die Leds leuchten langsam beim Einstecken des Sticks auf. Danach kommt ein kurzes Lauflicht oder ähnliches. Das Abblenden und Aufleuchten könnte man auch prima im Attract Mode verwenden.

Bisher haben wir noch einen Pin frei :) Den könnte man für einen Programm-Modus verwenden. Sobald der auf Masse liegt ist der Programm Modus an.

Wenn Button1 gedrückt wird, dann sind alle Buttons default rot.
Weiterer Druck auf Button1, dann sind alle Buttons blau usw..
oder auch
Wenn Button2 gedrückt wird, dann ButtonLed1 = rot, ButtonLed2 = blau, ButtonLed3 = grün usw.

Das wäre schon echt der Hammer :))

Hier die neue Version.:

- Dedizierte Widerstände sind jetzt wieder drin
- NPN Transistor Array ULN2803 für gemeinsame Kathoden eingebaut (Stickled hat leider keinen mehr abbekommen)
- BC328 als PNP Transistor für RGB Leitungen
- Werte für Widerstände hinzugefügt.
Dateianhänge
v0.3
v0.3
bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Mi, 09.12.09, 15:33

Kleinere Fehler behoben
Dateianhänge
v0.4
v0.4
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Mi, 09.12.09, 17:57

@bencao74
Schaltplan sieht gut aus!
Hier ist mal ein (völlig ungetesteter) Code für FuddelCHIEF (ohne verschiedene Helligkeitsstufen - mit 1ms IRQ).
Anschluss wie oben angegeben:
PortB: Inputs von den 8 Tasten (mit aktiven Pull-Ups)
PortC0-PortC2 (3 Pins): Outputs für die Transistoren
PortC3 und PortC4: Output für die zwei LEDs im Stick
PortC5: Input vom NAND (ohne Pull-Up)
PortD: Outputs für die 8 RGB LEDs (direkt an deren gemeinsame Anode)
Keine 'Überbestromung'. LED Vorwiderstände also bitte so, dass max. 20mA (besser nur 15) fließen. Von der langen Attract-Liste ist bisher nur Sequenz 1 'drin'. Wenn's funktioniert, kannst Du aber die anderen auch selbst erstellen.
Dateianhänge
Mega8_Led_Attract_Test3.zip
(1.65 KiB) 209-mal heruntergeladen
FuddelCHIEF
User
User
Beiträge: 28
Registriert: Di, 10.02.09, 02:34

Mi, 09.12.09, 22:21

:shock: :shock: WOW... einfach nur WOW!!!!!!!!!!!!!!!!!!!!!!! :shock: :shock:

da bin ich mal nen Tag weg und hier steht schon alles???? Mann, Männers, DAS IST DER REINSTE IRRSINN!!!!!!!!!

VIELEN DANK AN EUCH BEIDE!!!!!!!!!

Ich kann mich nur wieder und wieder bedanken, für diese echt unglaubliche Leistung in solch kurzer Zeit!!

Mir fehlen die Worte!!!

Der Fuddel
FuddelCHIEF
User
User
Beiträge: 28
Registriert: Di, 10.02.09, 02:34

Mi, 09.12.09, 23:31

Hey..

Ich weiß ja, ich bin anstrengend, aber leider hier auch wieder eine schnelle Frage zum Schaltplan... ist der dort angegebene UL2803 mit nem 74hc 20 vergleichbar?? desweiteren, der 74LS20N ( 7400N ) finde ich bei reichelt leider keinen, besteht hier auch die möglichkeit eine vergleichbare Shottky-Diode zu verwenden, die in die schaltung passt??

Danke...

Lieben Gruss

der Fuddel
bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Mi, 09.12.09, 23:57

Neee,

- der ULN2803 ist ein das NPN Transistor für meine RGB LEDs mit einer gemeinsamen Kathode. Als NPN Transistoren kannst du auch die BC317/BC318 nehmen.
- Das 7400N ist das 4-Fach NAND Gatter

Die bisherigen Schaltbilder sind für RGB LEDs mit einer gemeinsamen Kathode. Das müsste entsprechend für RGB LEDs mit einer gemeinsamen Anode angepasst werden. Guck ich mal...

Grüße,

Jochen
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Do, 10.12.09, 10:54

Bei Reichelt:
ULN 2803: http://www.reichelt.de/?;ACTION=3;LA=44 ... ICLE=22085 (ist eigentlich praktisch; dann brauch es keine einzelnen NPN Transistoren. Und wenn Du sowieso was beim R bestellen willst/musst...)
7400: http://www.reichelt.de/?;ACTION=3;LA=2; ... ICLE=10584
74LS20: http://www.reichelt.de/?;ACTION=3;LA=3; ... ICLE=10654
(Der ist etwas einfacher beim Anschließen weil da schon das 4xNAND 'drin' ist, beim 7400 muss man 3 zweifach NAND zu einem 4xNAND zusammenschalten)

@bencao74
Machst Du einen Schaltplan für FuddelCHIEF?
bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Do, 10.12.09, 11:57

@bencao74
Machst Du einen Schaltplan für FuddelCHIEF?
jep, wird gemacht. Ich ersetzte auch den 7400

Grüße
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Do, 10.12.09, 15:48

Ok. Dann kümmere ich mich da nicht weiter drum :D
Brauchst Du noch ein Beispiel Code für die Soft-PWM, oder schaffst Du das alleine?
Ich würde vmtl. 16 Helligkeitsstufen vorsehen - ist besser zum Speichern (ein Nibble=halbes Byte) und mit einem 100µS Timer-IRQ ergibt das immer noch eine PWM Frequenz von rund 200Hz (1,6mS pro Farbe; bei 3 Farben=>4.8mS Wiederholfrequenz). Das sollte eigentlich nicht flimmern.
bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Do, 10.12.09, 17:48

Hi,

----- Source
ich mach mich erstmal mit den vorhandenen Code vertraut. Leider habe ich in BASCOM noch keinerlei Erfahrung, aber geht ja grob ums gleiche ;)

Ich versteh das mit dem Muster noch nicht ganz. Der erste Wert ist &B00001000, will heissen PD3 ist active high, damit LED4 an. Farbe 0 ist rot, Farbe 1 ist grün und Farbe 3 ist blau.

hm, ganz steig ich da noch nicht durch. Kannst du mal erklären, was du da machst? Bis zum Attract ist alles klar...

Ja, mensch, ein kleines Beispiel für die Soft PWM wäre nicht schlecht...

----- Schaltung commong anode

Ich habe die NPN Transistoren für die gemeinsame Anode rausgelassen. Ist das ok? Ich konnte auf die Schnelle keinen NPN Transistor Array finden?

Ansonsten habe ich die Schaltung auf die Belegung im SRC für Fuddelchief angepasst. Sollte auch bei PC3, PC4 so passen, oder?



Grüße
Dateianhänge
ledschaltung_common_anode_fuddelchief.png
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Do, 10.12.09, 23:36

----- Source
Erklär ich Dir morgen...
Schaltplan:
Ich habe die NPN Transistoren für die gemeinsame Anode rausgelassen. Ist das ok? Ich konnte auf die Schnelle keinen NPN Transistor Array finden?
Du meinst PNP... Es gibt solche Arrays, sind aber wesentlich teurer als die Standard NPN-Type (ULN 2803): http://www.reichelt.de/?;ACTION=3;LA=44 ... ICLE=22008;
Ich denke mal, dass auch 15mA pro LED reichen. Soll ja keine 'Spielerbeleuchtung' sein oder?
Aber das müsst Ihr wissen.
ABER:
Die R/G/B Leitungen an den Kollektor des entsprechenden BC338 und Emitter an Masse. Ansonsten sollte das IMHO passen.
bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Fr, 11.12.09, 09:07

ABER:
Die R/G/B Leitungen an den Kollektor des entsprechenden BC338 und Emitter an Masse. Ansonsten sollte das IMHO passen.
Jap, klar! Neue Version.

v0.2.x Gemeinsame Anode
v0.1.x Gemeisame Kathode
Dateianhänge
v0.2.1<br /><br />v0.2.x Gemeinsame Anode <br />v0.1.x Gemeisame Kathode
v0.2.1

v0.2.x Gemeinsame Anode
v0.1.x Gemeisame Kathode
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Fr, 11.12.09, 14:40

Ok. Wegen Code...
Das Prinzip ist vom Led-Cube übernommen. Nur dass die 'Zeitschleife' nicht über Waitms x sondern über den Timer-Interrupt gesteuert wird. Welche LEDs an oder aus sind wird in dem Byte-Array 'Muster' festgelegt. Das hat den Vorteil, dass man nicht für jede Art von 'Sequenz' (Lauflicht, Blinken, Farben durchwechseln...) eine eigene Schleife schreiben muss, sondern nur eine und eine Logik die in dieser Schleife die LEDs an oder ausschaltet, je nachdem wo in der 'Gesamtsequenz' sich das Programm befindet (wird über die Variable Offset festgelegt) und welche Bits im Byte-Array gesetzt sind.
Im Attract Mode läuft folgendes:
Im ersten Schritt wird nur die aktuell anzuzeigende Farbe ausgewählt (gilt auch wenn Attract Mode=aus).
Der Stagecounter läuft von 0 bis 250; nach 250 Millisekunden wird der Offset im Byte-Array auf die nächsten 3 Bytes gesetzt.
Je nach aktueller Farbe wird das erste, zweite oder dritte Byte aus dem Byte-Array an PORTD ausgegeben und damit die entsprechenden LEDs aktiviert. Die bleiben dann eine Millisekunde lang an, dann wird die nächste Farbe (mit dem nächsten Byte aus dem Byte-Array) gesetzt, und die vorige Farbe ausgeschaltet.

Der 'FuddelCHIEF' Code hat etwa 1.2Kb. Damit also noch mehr als 6kB 'Platz' für die Muster. Ein Muster braucht 3 Bytes (1 Byte pro Farbe bei 8 LEDs), also sind mehr als 2000 Muster möglich. Jedes Muster wird 250 Millisekunden lang angezeigt. => Wenn man sich die Mühe macht, könnte man den Attract-Mode so gestalten, dass er sich erst nach etwa 8 Minuten(!) wiederholt.

@FuddelCHIEF
Der Code ist für eine Taktfrequenz von 8MHz! Also entsprechende Fusebits per Ponyprog setzen:
Erst Security Bits lesen!
Dann das Häkchen bei CKSEL2 entfernen und bei CKSEL0 setzen. Sonst nichts ändern!
Dann 'Write'.

Ich hab den Code noch ein wenig geändert, PORTD muss schließlich invers zu PINB gesetzt werden (wenn Taste auf Masse also 0 ist Taste gedrückt und entsprechendes Bit auf PORTD zu setzen...)
Dateianhänge
Mega8_Led_Attract_Test4.zip
(1.77 KiB) 200-mal heruntergeladen
bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Fr, 11.12.09, 17:01

Sooo, ich bin mal kurz mit dem Source angefangen.

Code: Alles auswählen

If Farbe = 0 Then
      Set Portc.0                                           'Rot An
      Reset Portc.1                                         'Grün Aus
      Reset Portc.2                                         'Blau Aus
      Portd = &B11111111                                    'Alle LEDs an (nur Rot)
    End If
    If Farbe = 1 Then
      Reset Portc.0                                         'Rot Aus
      Set Portc.1                                           'Grün An
      Reset Portc.2                                         'Blau Aus
      Portd = A                                             'LEDs an für gedrückte Tasten
    End If
    If Farbe = 2 Then
      Reset Portc.0                                         'Rot Aus
      Reset Portc.1                                         'Grün Aus
      Set Portc.2                                           'Blau An
      Portd = A                                             'LEDs an für gedrückte Tasten
    End If
Also zuerst wird immer alles auf rot gesetzt. Es wurde vorher in Byte A gespeichert, welche Buttons gedrückt worden sind. Diese werden zusätzlich mit Grün und Blau beleuchtet -> das ergibt dann weiss. Ist Weiss so einfach zu mischen?

Wenn ich zum Beispiel folgendes Muster haben möchte: Normal Rot, Buttondruck Blau

Code: Alles auswählen

If Farbe = 0 Then
      Set Portc.0                                           'Rot An
      Reset Portc.1                                         'Grün Aus
      Reset Portc.2                                         'Blau Aus
      
      Portd = Not A                                   
    End If
    If Farbe = 1 Then
      Reset Portc.0                                         'Rot Aus
      Set Portc.1                                           'Grün An
      Reset Portc.2                                         'Blau Aus
      ' Portd = A                                             'LEDs auskommentiert
    End If
    If Farbe = 2 Then
      Reset Portc.0                                         'Rot Aus
      Reset Portc.1                                         'Grün Aus
      Set Portc.2                                           'Blau An
      Portd = A                                             'LEDs an für gedrückte Tasten
    End If
so zum beispiel, oder?
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Fr, 11.12.09, 17:19

Ist Weiss so einfach zu mischen?
Naja, ein 'schönes' Weiß wird es nicht...
Es ist meist ein wenig 'violettstichig', weil rot und blau zu stark sind. Aber bei den FuddelCHIEF Bildern sah es ja nicht schlecht aus...
Wenn ich zum Beispiel folgendes Muster haben möchte: Normal Rot, Buttondruck Blau
Code...

Ja, passt (fast). Allerdings solltest Du während der 'Grün' Phase die LEDs explizit ausschalten, sonst leuchten diejenigen, die bei rot schon an waren auch bei grün (die LEDs würden also gelb wirken).

Code: Alles auswählen

    If Farbe = 1 Then
      Reset Portc.0                                         'Rot Aus
      Set Portc.1                                           'Grün An
      Reset Portc.2                                         'Blau Aus
      Portd = 0                                             'LEDs immer aus
    End If
Oder keinen 'Strom drauf geben', dann könntest Du es auch auskommentiert lassen:

Code: Alles auswählen

    If Farbe = 1 Then
      Reset Portc.0                                         'Rot Aus
      Reset Portc.1                                         'Grün Aus
      Reset Portc.2                                         'Blau Aus
      ' Portd = A                                             'LEDs auskommentiert - spielt keine Rolle wenn Portc.1=0
    End If
Ich würde aber die erste Möglichkeit vorziehen, da bei solchen 'Konstrukten' möglicht der Code bei allen Farben 'gleich lang' sein sollte. Hier (Timer 1mS) macht es wohl keinen Unterschied, wenn Du aber PWM Farbmischung haben willst (Timer bei 0.1mS), sollte bei jeder Farbe derselbe code ausgeführt werden, damit alles immer schön gleich lang bleibt.
FuddelCHIEF
User
User
Beiträge: 28
Registriert: Di, 10.02.09, 02:34

Sa, 12.12.09, 10:35

So .. ich wollte mich dann doch noch einmal schnell melden, damit ich nicht als verschollen gelte..

Habe im Moment leider nur Super wenig Zeit, da ich am 18. Heiraten werde, deswegen meine lange abwesenheit!

Ich bin sowas von Beeindruckt, was Ihr geleistet habt in den letzten Tagen, das mir jegliche Worte Fehlen!

Vielen Dank für die Hilfe, Mühe und Arbeit, die Ihr euch hier ge/macht habt, auch dank für das starke Interesse an diesem Projekt an Dich Borax!

Ich werde mich für die kommende Woche dann mal abmelden, um mich dann nächste Woche mit dem Test des Codes/Schaltung zu widmen ( FREU ) !!!

Vielen Dank nocheinmal!!!

Lieben Gruss

Der Fuddel
bencao74
User
User
Beiträge: 16
Registriert: Mo, 07.12.09, 10:15

Mo, 14.12.09, 12:18

@Fuddel : :) mach was draus ;)

@Borax
Ich würde aber die erste Möglichkeit vorziehen, da bei solchen 'Konstrukten' möglicht der Code bei allen Farben 'gleich lang' sein sollte. Hier (Timer 1mS) macht es wohl keinen Unterschied, wenn Du aber PWM Farbmischung haben willst (Timer bei 0.1mS), sollte bei jeder Farbe derselbe code ausgeführt werden, damit alles immer schön gleich lang bleibt.
Vielen Dank für deine Hilfe!! Jetzt muss ich meinerseits erstmal "Hausaufgaben" machen und einen Prototypen zusammenkabeln.

Zum Auflockern hier ein Bild meines aktuellen Arcade Sticks :) Mann wird das ein Fest mit ordentlicher Beleuchtung :)

Bild

http://bencao74.***link_aufgrund_spamverdacht_nicht_erlaubt***/2009/12/hi ... stmas.html
Borax
Star-Admin
Star-Admin
Beiträge: 12243
Registriert: Mo, 10.09.07, 16:28

Mo, 14.12.09, 13:02

@Fuddel
Von mir auch die besten Wünsche!
@bencao74
Ich hab Dir hier mal ein Beispiel zusammengestellt um 16 Helligkeitsstufen abzubilden. Die Helligkeitsstufen beziehen sich allerdings grundsätzlich auf alle prinzipiell 'eingeschalteten' LEDs einer Farbe. LED1 rot 50% Helligkeit und LED2 rot 20% Helligkeit geht so also nicht. LED1+LED3 50% rot, LED2+LED4 10% grün und LED5-LED8 100% blau geht aber problemlos. Mischfarben (R mit x% + G mit y% + B mit z%) gehen aber immer nur für alle 'eingeschalteten' LEDs gleichzeitig. Die Helligkeitsstufen sind als Nibbles (=4Bit=halbes Byte) in zwei weiteren Bytes des Byte-Arrays 'Muster' (zusammen mit den RGB ein/aus Werten für den Stick) abgelegt. Das Prinzip ist eigentlich das gleiche wie schon im 'Fuddelcode' beschrieben, nur dass eben noch ein Helligkeitscounter dazukommt, der in Abhängigkeit von der gerade aktiven Helligkeitsstufe die entsprechende Farbe länger oder kürzer einschaltet. Der 'Platz' reicht so immer noch für ca. 2 Minuten 'Attract-Programm' mit Dimmen/Überblenden/Lauflicht...
Falls noch was unklar ist, einfach fragen...
Dateianhänge
Mega8_Led_Attract_Test_PWM_1.zip
(2.56 KiB) 209-mal heruntergeladen
Antworten