Gemoddet wird: Mein Zimmer :D

- OCinside.de PC Forum
https://www.ocinside.de

-- Gehäusemodifizierung
https://www.forum-inside.de/forums.cgi?forum=6

--- Gemoddet wird: Mein Zimmer :D
https://www.forum-inside.de/topic.cgi?forum=6&topic=1612

Ein Ausdruck des Beitrags mit 23 Antworten ergibt bei 3 Antworten pro Seite ca. 8 DIN A4 Seiten. Das entspricht bei 80 g/m² ca. 39.92 Gramm Papier.


-- Veröffentlicht durch nubbi am 11:18 am 23. Okt. 2005

habe schon seit über nem monat 300€ vonner stadt ausstehend, aber die sch**** bürokraten kommen einfach nich mit meiner kohle rüber. deshalb is im moment stillstand. das programm ist fertig, funzt auch so weit inner simulation, aber testen kann ichs noch net, da ich weder µC noch passende LEDs habe im Moment :( melde mich, sobald es neues gibt!


-- Veröffentlicht durch insider99 am 10:14 am 23. Okt. 2005

und wie schauts jetzt aus? irgentwas neues


-- Veröffentlicht durch nubbi am 23:23 am 3. Okt. 2005

über einen monat später gibts das erste update ^^
könnte ja sein, dass irgendjemand über google nach was ähnlichem sucht =)

hier der bisherige quellcode in avr-assembler:

Code

.include "tn2313def.inc"

.def temp = r16
.def temp2 = r17
.def pwm_r = r21
.def pwm_g = r22
.def pwm_b = r23

; Eigene Flags zur Vereinfachung des Farbübergangs bei Farbänderung
.def flags = r24
.equ r_reached = 0
.equ g_reached = 1
.equ b_reached = 2

.equ wait_length = 50;
; Interrupt Vectors

.org 0x00; Reset
rjmp init; Initroutine aufrufen

pwm_activate:
ldi temp, (1<<PB2) | (1<<PB3) | (1<<PB4); PB2-4 (OCnx) als
out DDRB, temp; Ausgang deklarieren
ret; -> PWM-Signal

pwm_deactivate:
ldi temp, 0x00; PB2-4 (OCnx) als
out DDRB, temp; Eingang deklarieren
ret; -> Kein PWM-Signal

pwm_setvalues:
out OCR0A, pwm_r; Compare-Register auf
out OCR0B, pwm_g; entsprechende Werte
out OCR1AL, pwm_b; setzen
ret

changecolor:
push temp; Temp sichern
change_loop:
; ------[rot]-------
in temp, OCR0A; OCR0A in temp laden
cp temp, pwm_r; temp mit pwm_r vergleichen
breq set_r_reached; wenn temp = pwm_r mit gruen weiter
brlo inc_r; wenn temp < pwm_r OCR0A erhöhen

dec_r:
dec temp; temp verringern und in OCR0A speichern
out OCR0A, temp
rjmp change_g; inc-Routine skippen

inc_r:
inc temp; temp erhöhen und in OCR0A speichern
out OCR0A, temp; ------[/rot]-------

change_g:; ------[gruen]------
in temp, OCR0B; OCR0B in temp laden
cp temp, pwm_g; temp mit pwm_g vergleichen
breq set_g_reached; wenn temp = pwm_g mit blau weiter
brlo inc_g; wenn temp < pwm_g OCR0B erhöhen

dec_g:
dec temp; temp verringern und in OCR0B speichern
out OCR0B, temp
rjmp change_b; inc-Routine skippen

inc_g:
inc temp; temp erhöhen und in OCR0B speichern
out OCR0B, temp; ------[/gruen]------

change_b:; -------[blau]-------
in temp, OCR1AL; OCR1AL in temp laden
cp temp, pwm_b; temp mit pwm_b vergleichen
breq set_b_reached; wenn temp = pwm_b warten
brlo inc_b; wenn temp < pwm_b OCR1AL erhöhen

dec_b:
dec temp; temp verringern und in OCR1AL speichern
out OCR1AL, temp
rjmp check_if_all_reached; inc-Routine skippen

inc_b:
inc temp; temp erhöhen und in OCR1AL speichern
out OCR1AL, temp; -------[/blau]------

check_if_all_reached:
sbrs flags, r_reached; wenn x_reached = false, check abbrechen
rjmp check_negative; und nächsten Durchlauf starten
sbrs flags, g_reached
rjmp check_negative
sbrs flags, b_reached
rjmp check_negative
ldi flags, 0x00; Statusbits wieder auf false setzen.
ret; Routine verlassen

check_negative:
rjmp wait_long
rjmp change_loop

init:
ldi temp, (1<<CS00); TCNT0 Prescaler = 1
out TCCR0B, temp

ldi temp, (1<<CS10) | (1<<WGM12); TCNT1 Prescaler = 1
out TCCR1B, temp; TCNT1 TOP = 0x00FF

ldi temp, (1<<COM0A0) | (1<<COM0B0) | (1<<WGM00) | (1<<WGM01); Fast PWM/Set OC0A@Top
out TCCR0A, temp; Fast PWM/Set OC0B@Top
out TCCR1A, temp; Fast PWM/Set OC1A@Top

ldi pwm_r, 0xFF; Alle Farbwerte auf
ldi pwm_g, 0xFF; 0xFF setzen
ldi pwm_b, 0xFF; -> weiß

rjmp pwm_activate; PWM aktivieren

infinite_loop:; Endlosschleife, wenn
nop; nichts zu tun ist
rjmp infinite_loop; NOP damit nichts wegoptimiert wird


wait_long:
push temp; Temp sichern
ldi temp, 0x00; Temp als Zählervariable benutzen

wlloop:
rjmp wait_short; 2. Warteroutine aufrufen
inc temp; Zähler erhöhen
cpi temp, wait_length; Checken ob temp < wait_length
brlo wlloop; wenn ja, zurück springen

pop temp; Temp wiederherstellen
ret; Routine verlassen

wait_short:
push temp; Temp sichern
ldi temp, 0x00; Temp als Zählervariable benutzen

wsloop:
inc temp; Zähler erhöhen
cpi temp, wait_length; Checken ob temp < wait_length
brlo wsloop; wenn ja, zurück springen

pop temp; Temp wiederherstellen
ret; Routine verlassen

set_r_reached:
ldi temp, (1<<r_reached); r_reached-bit in temp laden
or flags, temp; flags mit temp verodern
rjmp change_g; zur change_g-Routine springen

set_g_reached:
ldi temp, (1<<r_reached); g_reached-bit in temp laden
or flags, temp; flags mit temp verodern
rjmp change_b; zur change_b-Routine springen

set_b_reached:
ldi temp, (1<<b_reached); b_reached-bit in temp laden
or flags, temp; flags mit temp verodern
rjmp check_if_all_reached; zur Check-Routine springen


Eine Kommunikation zwischen PC und Controller ist noch nicht implementiert, folgt aber in den nächsten Stunden!


-- Veröffentlicht durch nubbi am 20:12 am 26. Aug. 2005

Dann bekomm ich aber keine gleichmäßige Ausleuchtung hin =/ Außer ich beleuchte nur eine Wand...

Andere Frage, was benutze ich am besten als Diffusor?

(Geändert von nubbi um 20:30 am Aug. 26, 2005)


-- Veröffentlicht durch Marodeur am 19:51 am 26. Aug. 2005

Musste mal bei ebay fragen.
Aber 500 ultrahelle sind auch für ein großes Zimmer mehr als ausreichend.
Ich würd sagen 100-200 sollten schon ausreichen.


-- Veröffentlicht durch nubbi am 19:40 am 26. Aug. 2005

Habe mir jetzt überlegt, in die "Stufe" einen trüben Plexiglasboden als Diffusor zu machen und die LEDs seitlich darüber leuchten zu lassen, als quasi senkrecht zur Wand. Hoffe mal, dass das so funktioniert. Kennt jemand eine Möglichkeit, sehr günstig LEDs zu bekommen? Und damit mein ich günstiger als 20Cent/Stück, denke, ich werde für das ganze Zimmer um die 500 pro Farbe benötigen :/

nubbi


-- Veröffentlicht durch nubbi am 19:03 am 22. Aug. 2005

naja, der code der µCs ist ja relativ kurz und somit recht schnell erledigt, zumal man das ja alles vorher am PC simulieren kann.
Die Software für die Farbübergänge kann man ja am PC mit ner anständigen Hochsprache programmieren, somit auch kein großer Aufwand. Viel mehr graust mir vor der Löterei :ugly:


-- Veröffentlicht durch maxpayne am 18:50 am 22. Aug. 2005

wird bestimmt sehenswert! vorallem, wenn das tatsächlich mit weichen übergängen machbar ist. sowas sollte ja sicher schon riegenwo fertig sein. ich kann mir nur vorstellen, dass es wochen dauert, soetwas selbst zu schreiben. :blubb: also dann: pimp ur room! :lol:


-- Veröffentlicht durch Modding Henus am 22:58 am 20. Aug. 2005

Ich stell mir das Sau cool vor....sieht bestimmt Hammermäßig aus....


-- Veröffentlicht durch Marodeur am 20:56 am 20. Aug. 2005

Och, den Abstrahlwinkel kann man ja auch anpassen. Einfach oben abschleifen und neu polieren. Da hatte ich auch mal n Tutorial zu, is aber in meiner Linksammlung verschütt gegangen...:(.


-- Veröffentlicht durch nubbi am 16:43 am 20. Aug. 2005

ja, 60 auf 4 meter sind auch wesentlich zu wenig. da hatte ich schon mehr im sinn :)


-- Veröffentlicht durch MisterFQ am 16:40 am 20. Aug. 2005

@nubbi. die 60 strahlen wie du vorhast nur die wand hoch... das sie oben noch die weiße decke mit anstrahlen. das ganze ist nur an einer wand etwa so auf 4 meter breite. ist nicht viel. aber wenn du das noch verteilst is das gar nichts mehr. ich schätez perönlich so die leuchtkraft auf das was eine 20-40 watt birne schafft. der abstarhlwinkel ist nicht so arf groß hab keine technischen daten von den dingern mehr.

(Geändert von MisterFQ um 16:41 am Aug. 20, 2005)


-- Veröffentlicht durch nubbi am 18:34 am 19. Aug. 2005

ich seh's gerade... die dimmbaren EVGs sind aber ziemlich teuer =/

(Geändert von nubbi um 18:34 am Aug. 19, 2005)


-- Veröffentlicht durch AssassinWarlord am 18:00 am 19. Aug. 2005

leuchtstoffröhren lassen sich dimmen (siehe neue schulische einrichtungen :D ). Kaltlichtkathoden aber irgendwie nicht, wenn man da dimmt, leuchtet nur noch ein teil der leuchte :noidea: schaut dan aus wie so ne pegelanzeige wen man etwas mehr spannung draufjagt und mal wieder weniger...


-- Veröffentlicht durch nubbi am 15:27 am 19. Aug. 2005

auf welchem raum hast du denn die 60 weißen LEDs?
Habe mir jetzt überlegt, einfach jeden cm eine LED runterleuchten zu lassen und dann R, G und B einfach abzuwechseln. evtl auch zweireihig, wenn das so nicht reicht.

#ädit: leuchtstoffröhren kann man nicht dimmen :(

(Geändert von nubbi um 17:12 am Aug. 19, 2005)


-- Veröffentlicht durch MisterFQ am 14:29 am 19. Aug. 2005

die luxeon leds hab ich hier in einem lichthaus schon gesehen, aber die machen dein projekt garantier nicht billiger :thumb:
wie gesagt probier doch mal so röhren.. die gibts bis zu nem meter zwanig länge. dann brauchste auch weniger controler. und es wird billiger.


-- Veröffentlicht durch nubbi am 14:13 am 19. Aug. 2005

bin auch zu dem schluss gekommen, dass 6 LEDs pro einheit wesentlich zu wenig sind. dann muss halt noch ein transistor hinter den µC und es kommen ein paar mehr dran :biglol:

#ädit: vielleicht kommen auch die LuxeonLEDs zum einsatz, aber da binnich mir noch nich sicher, ob die ihren preis wert sind.

(Geändert von nubbi um 14:18 am Aug. 19, 2005)


-- Veröffentlicht durch MisterFQ am 13:38 am 19. Aug. 2005

mir stellt sich grad nur die frage ob das hell genug ist... wenn du an jeden controler 6 leds machen willst und das mit 50 ist das nicht viel. grad mal 100 leds für jede farbe.

ich hab als hintergrung beleuchtung an meinem bett immoment 60 weise leds. und selbst wenn ich sie eine weiße fläche anstrahlen lasse reicht das grad mal um nachts wenn man pissen muss nicht auf die fresse zufallen.

ich würde die hier vorschlagen einen anderen weg zu gehen.  kauf dir am besten aus dem carsytling bereich ein paar led röhren (so unterbodenbeleuchtung nur nicht aus neon) . und versuch diese halt dann komplett nachzuregeln.
dann sieht man den effekt auch ;)


-- Veröffentlicht durch SirBlade am 11:34 am 19. Aug. 2005

aber 50 platinen ätzen dauert n bischen was. :)


-- Veröffentlicht durch nubbi am 23:43 am 18. Aug. 2005

dankeschön :)

mein problem ist im moment nur: wo bekomme ich relativ günstig 128 solcher mikrocontroller her :lol: direkt von Atmel? Bei Reichelt kostet einer 1.65€, da wär ich schon bei 200 Schleifchen nur für die Controller. Denke zwar, dass es auch mit ~50 Controllern gut aussehen müsste (128 ist auf Grund der 7-Bit-Adressierung des I²C-Protokolls das theoretische Maximum), aber ich will sie trotzdem günstiger bekommen :lol:
Platinen muss ich auch noch ätzen, das kann ich unter Umständen in der Schule machen :blubb:


-- Veröffentlicht durch The Papst am 23:32 am 18. Aug. 2005

So seh ich das aber auch.
Da is meine Deskunterbodenbeleuchtung ja richtig billig gegen.


-- Veröffentlicht durch BurnoutHerbert am 21:50 am 18. Aug. 2005

:godlike::godlike::godlike::godlike::godlike::godlike::godlike::godlike:


-- Veröffentlicht durch nubbi am 16:35 am 18. Aug. 2005

Da ich bald umziehe und mir etwas für das "Styling" meines Zimmers ausdenken musste, bin ich auf folgende Idee gekommen:

Oben, wo die Decke auf die Wand trifft, mache ich einmal um den ganzen Raum so ne Art Stufe rein.
also nich so:

I
I
I
I___________

sondern halt so:

I
I
I___
      I
      I________


In diese Stufe kommen haufenweise "LED-Module", die aus jeweils 6 LEDs bestehen (2 rote, 2 grüne, 2 blaue) und an der Wand herunterleuchten. Jedes Modul bekommt einen Mikrocontroller ATTiny2313, was es mir ermöglicht, jede Farbe unabhängig von der anderen zu steuern und somit _jeden_ beliebigen Farbton zu erzeugen.
Zusätzlich gibt es einen Master-Controller, der am PC angeschlossen wird und über I²C mit den Slave-Controllern kommuniziert, ihnen also mitteilt, welche Farbe sie darstellen und wann sie zu dieser wechseln sollen.

Geplante Features der Software sind:

- automatische Farbverläufe, man sagt z.b. die eine Ecke soll blau leuchten, die andere rot und die software berechnet automatisch die Farben für die Module, die dazwischen liegen.

- Wenn einem Slave-Controller mitgeteilt wird, die Farbe zu wechseln, soll nicht von jetzt auf gleich gewechselt werden, sondern die Farbe soll langsam in die andere übergehen.

- Eventuell kleine Spielereien/Effekte. zB. leuchten alle Module blau und eines leuchtet rot und "wandert" um den Raum oder sowas :)

Kostenaufwand: Schätzungsweise 150€
Zeitaufwand: Unbezahlbar ;)

Was haltet ihr davon? Habt ihr vielleicht noch Verbesserungsvorschläge oder konstruktive Kritik?

Habe das mal ins Modding-Forum gestellt, weil ich denke, dass Schaltungen dieser Art sicherlich für einige hier interessant sein dürften!

Sollten einige Lust bekommen, etwas ähnliches zu bauen, bin ich gerne bereit meine Erkenntnisse und meinen Code mit anderen zu teilen! Fotos gibt's natürlich, sobald erste Ergebnisse vorliegen :lol:

nubbi

#ädit: ich weiß, dass ich nicht der erste bin, der eine solche Idee hatte. Man suche bei google nach "Moodlight" und werde fündig. Kaufpreis 375 Schleifen für ein 50x50cm großes Panel ;) Gut, es ist ne Fernbedienung dabei, aber die kann ich auch haben, wenn ich die Schaltung am PC habe :)

(Geändert von nubbi um 16:39 am Aug. 18, 2005)


OCinside.de PC Forum
© 2001 - 2024 www.ocinside.de