Pages: 1 [2] 3   Go Down
Author Topic: Re: 16 LED Ringlicht  (Read 3673 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !
« Last Edit: December 08, 2010, 10:04:35 am by Megaionstorm » Logged

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

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

...und jetzt warte ich auf den youtube film, der das Ding in Action zeigt smiley-grin
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !
« Last Edit: December 11, 2010, 03:39:55 pm by Megaionstorm » Logged

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

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
« Last Edit: December 13, 2010, 03:59:21 pm by Megaionstorm » Logged

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

0
Offline Offline
God Member
*****
Karma: 1
Posts: 659
Arduino sucks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset



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.
« Last Edit: December 19, 2010, 05:20:39 pm by Megaionstorm » Logged

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

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

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

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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...
« Last Edit: December 21, 2010, 04:12:39 pm by sth77 » Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wird gemacht, vermute mal das ein Fön zum erwärmen ausreichend ist.
Logged

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

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich denke nicht, dass das klappt. smiley-sad

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

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe auch kein Heißluftgebläse, ich nutze auch nen Fön auf höchster Stufe. Klappt Tadellos.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Echt? Gut zu wissen! smiley
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !
Logged

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

Stuttgart
Offline Offline
God Member
*****
Karma: 13
Posts: 511
logic enrichments
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !
Logged

Eine Kuh macht muuhh.
Viele Kuehe machen Muehe

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eine erweiterte Version, ist aber noch nicht die finale Version !

Teil 1:
Code:
#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];
  }
}
« Last Edit: December 30, 2010, 04:56:21 pm by Megaionstorm » Logged

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

Pages: 1 [2] 3   Go Up
Jump to: