Go Down

Topic: Re: 16 LED Ringlicht (Read 4771 times) previous topic - next topic

Megaionstorm

#15
Dec 08, 2010, 03:22 pm Last Edit: Dec 08, 2010, 04:04 pm by Megaionstorm Reason: 1
Ein erstes Photo vom 32 Led Ringlicht Prototypen.
Die Kabel sind noch nicht angelötet !



Uploaded with ImageShack.us

Denke mal das das ich den Deckel mit Silberfarbe lackieren werde !

Natürlich könnte der Led Träger auch viereckig, oval oder sternförmig sein !
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Radar

Cool!
Und lass den Dekel wie er ist :) Sieht klasse aus so!

...und jetzt warte ich auf den youtube film, der das Ding in Action zeigt :D

Megaionstorm

#17
Dec 11, 2010, 09:22 pm Last Edit: Dec 11, 2010, 09:39 pm by Megaionstorm Reason: 1
Ein Foto der Breadboard Atmega328 Schaltung, der Atmega328 wird mit 16MHz getaktet.



Uploaded with ImageShack.us

Der zweite TLC5940, für die nächsten 16 Leds, ist noch nicht angeschlossen !
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Megaionstorm

#18
Dec 13, 2010, 09:57 pm Last Edit: Dec 13, 2010, 09:59 pm by Megaionstorm Reason: 1
Ich habe meine Breadboard Ringlichtschaltung, so wie sie oben auf dem Foto zu sehen ist, mit einem L7805 und zwei Kerkos zu je 330nF und 100nF betrieben. So wie es im Datasheet des L7805 empfohlen wird. Zwischendurch sah es allerdings so aus als ob die Schaltung spinnen würde. So blieb der Ablauf zwischendurch manchmal hängen und ähnlich.

Als ich die beiden Kondensatoren am L7805 jedoch gegen zwei Elkos mit 10µF ausgetauscht hatte funktionierte die Schaltung auf Anhieb konstant fehlerfrei.

Kann mir jemand erklären woran dies liegt ?
Ist da zwischendurch die Spannung zusammengebrochen ?
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

apogee

Du hast die einfach zu klein dimensioniert.

So brach wohl manchmal die Spannung zusammen.

Das Datenblatt nennt zwar diese Kapazitäten, ich benutze aber zB immer 10µF oder 100µF

Megaionstorm

#20
Dec 19, 2010, 11:11 pm Last Edit: Dec 19, 2010, 11:20 pm by Megaionstorm Reason: 1


Das lange sind die Anoden das andere die Kathoden.
Die Löcher für die Leds würden mit einer heissen Nähnadel in den Kunststoff geschmolzen.
Danach würden die Leds mit UHU festgeklebt, nachdem ich zuvor dessen elektrische Leitfähigkeit mit 9V überprüft habe !

Als nächstes werden die Anoden mit einem ringförmigen Stück Draht zusammengelötet und die Kathoden mit einzelnen Kabeln versehen.
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Megaionstorm

Das ganze im verlöteten Zustand. Fehlt nur noch der Kabelbinder.

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

sth77

#22
Dec 21, 2010, 09:02 pm Last Edit: Dec 21, 2010, 10:12 pm by sth77 Reason: 1
Da fehlt noch mehr: Schrumpfschlauch! Ist dringend anzuraten, einfach 1- 1,5 cm Stücke abschneiden und übers Kabel und die Lötstelle ziehen.

[edit] Und natürlich erwärmen, sonst wäre es ja sinnlos...
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Megaionstorm

Wird gemacht, vermute mal das ein Fön zum erwärmen ausreichend ist.
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Joghurt

Ich denke nicht, dass das klappt. :(

Wie wäre es denn mit Heißkleber oder so, das isoliert auch und fixiert gleichzeitig.

sth77

Ich habe auch kein Heißluftgebläse, ich nutze auch nen Fön auf höchster Stufe. Klappt Tadellos.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Joghurt

Echt? Gut zu wissen! :)

Megaionstorm

Drei kurze Videos der 32 Led Version !

http://img828.imageshack.us/img828/6310/1r5.mp4
http://img718.imageshack.us/img718/2602/3q4.mp4
http://img834.imageshack.us/img834/3070/w1b.mp4
Achtung, es dauert ein paar Sekunden bis das Video auf der Webseite erscheint !

Den finalen Code für die 32 Led Version werde ich hier bald posten !
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Realizer

Hut ab ! Ein schönes funktionierendes Projekt.
Sieht gut aus, vor allem das rotierende Lauflicht im Dunklen.

Nun weiss ich ja wen ich fragen muss, wenns um's Programmieren derartiger Sachen geht, da ich Programmiertechnisch eher Anfänger bin.

Allein mit der Beschreibung hast du dir echt Mühe gegeben. Ich sag schon mal Danke im Namen aller hier ! Respekt !
Eine Kuh macht muuhh.
Viele Kuehe machen Muehe

Megaionstorm

#29
Dec 30, 2010, 10:44 pm Last Edit: Dec 30, 2010, 10:56 pm by Megaionstorm Reason: 1
Eine erweiterte Version, ist aber noch nicht die finale Version !

Teil 1:
Code: [Select]
#include "Tlc5940.h"

char* PatternFrame[] = { "00000000000000000000000000000000",
                        "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f",
                        "f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0",
                        "000000f00000000f000000f00000000f",
                        "55555555555555555555555555555555",
                        "cccccccccccccccccccccccccccccccc",
                        "ffffffffffffffffffffffffffffffff",
                        "13579bdffdb9753113579bdffdb97531",
                        "13579bdf13579bdf13579bdf13579bdf",
                        "fdb97531fdb97531fdb97531fdb97531",
                        "0123456789abcdef0123456789abcdef",
                        "fedcba987654321ßfedcba9876543210"
};
char* Frame;
int Light1[32] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int Light2[32] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
byte Zaehler;
byte Zufall;
byte Zufall2;

void setup()
{
  Tlc.init();
  Tlc.clear();
  Tlc.update();
  randomSeed(analogRead(0));
}

void loop()
{
 Zufall = random(1, 12);
 if (Zufall == 1)
 {
   RandomLightFading(Light1, 200, 2);
   PatternFading(Light1, PatternFrame[0], 5);
 }
 if (Zufall == 2)
 {
   for (Zaehler = 1; Zaehler <= 10; Zaehler += 1)
   {
     PatternFading(Light1, PatternFrame[1], 20);
     delay(1000);
     PatternFading(Light1, PatternFrame[2], 20);
     delay(1000);
   }
   PatternFading(Light1, PatternFrame[0], 5);
 }
 if (Zufall == 3)
 {
   for (Zaehler = 0; Zaehler <= 200; Zaehler += 1)
   {
     SetPattern(Light1, PatternFrame[1]);
     delay(150);
     SetPattern(Light1, PatternFrame[2]);
     delay(150);
   }  
   SetPattern(Light1, PatternFrame[0]);
 }
 if (Zufall == 4)
 {
   DeclareParam(1931,3229,4095,3229,1931,740,200,740,1931,3229,4095,3229,1931,740,200,740,1931,3229,4095,3229,1931,740,200,740,1931,3229,4095,3229,1931,740,200,740);
   ParamFading(Light1, Light2, 25);
   delay(500);
   Zufall2 = random(1, 101);
   if (Zufall2 <= 50)
   { Zufall2 = 0; }
     else { Zufall2 = 1; }
   Drehen(Light1, 750, Zufall2, 75);
   delay(500);
   PatternFading(Light1, PatternFrame[0], 25);
 }  
 if (Zufall == 5)
 {
   PatternFading(Light1, PatternFrame[7], 25);
   delay(500);
   Zufall2 = random(1, 101);
   if (Zufall2 <= 50)
   { Zufall2 = 0; }
     else { Zufall2 = 1; }
   Drehen(Light1, 750, Zufall2, 75);
   delay(500);
   PatternFading(Light1, PatternFrame[0], 25);
 }  
 if (Zufall == 6)
 {
   PatternFading(Light1, PatternFrame[8], 25);
   delay(500);
   Drehen(Light1, 1500, 1, 50);
   delay(500);
   PatternFading(Light1, PatternFrame[0], 25);
 }  
 if (Zufall == 7)
 {
   PatternFading(Light1, PatternFrame[9], 25);
   delay(500);
   Drehen(Light1, 1500, 0, 50);
   delay(500);
   PatternFading(Light1, PatternFrame[0], 25);
 }
 if (Zufall == 8)
 {
   PatternFading(Light1, PatternFrame[10], 25);
   delay(500);
   Drehen(Light1, 1500, 1, 35);
   delay(500);
   PatternFading(Light1, PatternFrame[0], 25);
 }
 if (Zufall == 9)
 {
   PatternFading(Light1, PatternFrame[11], 25);
   delay(500);
   Drehen(Light1, 1500, 0, 35);
   delay(500);
   PatternFading(Light1, PatternFrame[0], 25);
 }  
 if (Zufall == 10)
 {
   RandomLightFading(Light1, 200, 2);
   SetPattern(Light1, PatternFrame[0]);
 }
 if (Zufall == 11)
 {
   for(byte Anzahl = 1; Anzahl <= 5; Anzahl += 1)
   {
     FlashStorm(240, 16);
   }
 }      
 delay(1000);
}

void Flash(int LightOld[32])
{
  SetPattern(LightOld, PatternFrame[0]);
  delay(1);
  PatternFading(LightOld, PatternFrame[4], 1);  
  SetPattern(LightOld, PatternFrame[0]);
  PatternFading(LightOld, PatternFrame[5], 1);  
  SetPattern(LightOld, PatternFrame[0]);
  PatternFading(LightOld, PatternFrame[6], 1);
  delay(1);
  SetPattern(LightOld, PatternFrame[0]);
}

void FlashStorm(int AnzahlBlitze, byte MaxAnzahlLeds)
{
 float Flash1Fade = 13.65;
 float Flash2Fade = 27.3;
 float Flash3Fade = 40.95;
 int Helligkeit[32];
 int BlitzeBisher = 0;
 int BlitzeAktiv = 0;
 int BlitzAktiv[32];
 for(int LedNr = 0; LedNr <= 31; LedNr += 1)
 {
   Helligkeit[LedNr] = 0;
   BlitzAktiv[LedNr] = 0;
   Tlc.set(LedNr, Helligkeit[LedNr]);
 }
 Tlc.update();
 delay(1);
 while(BlitzeBisher < AnzahlBlitze)
 {
   for(byte BlitzNr = 1; BlitzNr <= MaxAnzahlLeds; BlitzNr += 1)
   {
     int LedNr;
     LedNr = random(0, 32);
     if((BlitzAktiv[LedNr] == 0) and (BlitzeAktiv < MaxAnzahlLeds) and (BlitzeBisher < AnzahlBlitze))
     {
       BlitzAktiv[LedNr] = 1;
       BlitzeAktiv = BlitzeAktiv + 1;
     }
   }
   for (int FlashFadingStep = 1; FlashFadingStep <= 100; FlashFadingStep += 1)
   {
     for (int Channel = 0; Channel <= 31; Channel += 1)
     {
       if(BlitzAktiv[Channel] == 1) Helligkeit[Channel] = Flash1Fade * FlashFadingStep;
       if(BlitzAktiv[Channel] == 2) Helligkeit[Channel] = Flash2Fade * FlashFadingStep;
       if(BlitzAktiv[Channel] == 3) Helligkeit[Channel] = Flash3Fade * FlashFadingStep;
       Tlc.set(Channel, Helligkeit[Channel]);
     }
     Tlc.update();
     delayMicroseconds(1500); // delay(1);
   }  
   for (int Channel = 0; Channel <= 31; Channel += 1)
   {
     if(BlitzAktiv[Channel] != 0) BlitzAktiv[Channel] = BlitzAktiv[Channel] + 1;
     if(BlitzAktiv[Channel] > 3)
     {
       BlitzAktiv[Channel] = 0;
       BlitzeAktiv = BlitzeAktiv - 1;
       Helligkeit[Channel] = 0;
       BlitzeBisher = BlitzeBisher + 1;
     }
   }
   for (int Channel = 0; Channel <= 31; Channel += 1)
   {
     Tlc.set(Channel, Helligkeit[Channel]);
   }
   Tlc.update();
   delay(1);
 }
 for (int Channel = 0; Channel <= 31; Channel += 1)
 {
   Light1[Channel] = 0;
   Tlc.set(Channel, 0);
 }
 Tlc.update();
 delay(1);
}

void RandomLightFading(int LightOld[32], int Wiederholung, int Geschw)
{
 float Fade[32];
 int Helligkeit[32];
 for (int Nr = 1; Nr <= Wiederholung; Nr += 1)
 {
   for (int LightNr = 0; LightNr <= 31; LightNr += 1)
   {
     Helligkeit[LightNr] = random(4095);
     Fade[LightNr] = (Helligkeit[LightNr] - LightOld[LightNr])/100;
   }
   for (int Anzahl = 1; Anzahl <= 100; Anzahl += 1)
   {
     for (int Channel = 0; Channel <= 31; Channel += 1)
     {
        Tlc.set(Channel, LightOld[Channel] + (Anzahl * Fade[Channel]));
     }
     Tlc.update();
     delay(Geschw);
   }
   for (int Channel = 0; Channel <= 31; Channel += 1)
   {
     Tlc.set(Channel, Helligkeit[Channel]);
     Light1[Channel] = Helligkeit[Channel];
   }
   Tlc.update();
 }
}

void RandomLight(int LightOld[32], int Wiederholung, int Geschw)
{
 int Helligkeit[32];
 for (int Nr = 1; Nr <= Wiederholung; Nr += 1)
 {
   for (int LightNr = 0; LightNr <= 31; LightNr += 1)
   {
     Helligkeit[LightNr] = random(4095);
   }
   for (int Anzahl = 1; Anzahl <= 100; Anzahl += 1)
   {
     for (int Channel = 0; Channel <= 31; Channel += 1)
     {
        Tlc.set(Channel, Helligkeit[Channel]);
     }
     Tlc.update();
     delay(Geschw);
   }
 }
 for (int Channel = 0; Channel <= 31; Channel += 1)
 {
   Light1[Channel] = Helligkeit[Channel];
 }
}
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Go Up