Show Posts
Pages: [1] 2 3 ... 26
1  International / Deutsch / Re: RGB Strip LP8806 on: Today at 02:03:11 am
Ja, mit FastLED geht das.

https://github.com/FastLED/FastLED/wiki/Multiple-Controller-Examples

siehe "Multiple led arrays"

Code bitte als

Code:
#Code formatieren, Danke.

Und Du verwendest einen LPD8806, keinen LP8806..., steht auch so in Deinem Code, bitte mal den Thread Namen korrigieren.

2  International / Deutsch / Re: RGB Strip LP8806 on: Today at 12:58:54 am
Kein Problem. Der LPD8806 ist ein sehr guter Controller/Treiber, weil sauschnell. An einem Teensy kommt der mit bis zu 22MBit pro Sekunde (!) klar. Leider nur 7 Bit/Farbe. Wird sehr gern für POV/Lightpainting Anwendungen genommen, wo man teilweise extrem hohe fps braucht, wenn es gut aussehen soll.

Zurück zur Frage: Du kannst den Strip an allen vorgesehenen Stellen teilen, danach das Ende vom einen Stück elektrisch mit dem Anfang vom anderen Stück verbinden und alles ist gut.

Die Daten-/Clockleitung an den Arduino (Uno reicht) anschließen, FastLED installieren, Beispiele ausprobieren und los geht es.

Welche LEDs an und welche aus sind, bzw. welche Muster/Animationen wo laufen, ist nur eine Frage der Software, die Du schreibst.

Grüße

Helmuth

P.S. Welchen Strip genau hast Du? Den, den ETT in Deutschland vertreibt? Wieviele LEDs pro LPD8806? Wieviele LEDs insgesamt?
3  International / Deutsch / Re: Speaker auslegen und lautstarke erhöhen on: September 18, 2014, 07:31:18 am
Hi Jurs, ich will echt nicht klugscheixxen, aber ich stehe nunmal auf präzisen Sprachgebrauch...  smiley-wink

Ich meinte Verzerrung im akustischen Sinne - eine ungewollte Veränderung der Schwingungsform. (Verursacht durch die "Vorspannung" der Membran bei anliegender Gleichspannung.)

http://de.wikipedia.org/wiki/Verzerrung_%28Akustik%29

Deine Ausführungen beziehen sich auf eine Entzerrung, das Absenken oder Anheben von Frequenzbereichen mit einem Filter, welcher die Resonanzfrequenz eines LS verschiebt und den gesamten Frequenzgang verändert.

http://de.wikipedia.org/wiki/Entzerrung_%28Tontechnik%29

@Muecke sei vielleicht noch darauf hingewiesen, dass man auch rein mechanisch den Wirkungsgrad eines LS in einem engen Frequenzbereich steigern kann: mit einem Horn. Zumindest, wenn man direkt davor steht...

http://de.wikipedia.org/wiki/Horn_%28Lautsprecher%29

Einfach mal diversen kegel-/trichterförmigen Plastikmüll an den LS halten, Du wirst überrascht sein...

Beste Grüße

Helmuth
4  International / Deutsch / Re: Speaker auslegen und lautstarke erhöhen on: September 18, 2014, 06:07:51 am
Ich verstehe, der Kondensator erhöht den Wirkungsgrad und vermeidet Verzerrungen. Danke für die Erklärung!
Grüße
Helmuth
5  International / Deutsch / Re: Speaker auslegen und lautstarke erhöhen on: September 18, 2014, 05:38:43 am
Sicher, dass ein LS nicht auch mit gepulster Gleichspannung läuft? Bewegt sich die Membran eben nur in eine Richtung...?

edit: Ok, habe die Ursache des Gleichspannungsanteils verstanden. Ist der Kondensator für diese Anwendung jetzt ein "must have" oder nur Ausdruck guten Stils?

Gruß

Helmuth
6  International / Deutsch / Re: Speaker auslegen und lautstarke erhöhen on: September 18, 2014, 05:31:07 am
Kurze Frage @jurs: Wenn der LS nur piepsen soll, warum nicht nur mit einem Vorwiderstand direkt anschließen? Gibt das Probleme wg. der Selbstinduktion?

Und welche Gleichspannung? Woher kommt die bei korrekter Programmierung?

Gesetzt den Fall es gibt Gleichspannungsanteile - ist das ein Problem, wenn der Vorwiderstand den Strom auf ein erträgliches Maß begrenzt?

Oder stehe ich gerade voll auf dem Schlauch?

@Doc: "Edit: Dein Kondensator filtert Gleichspannungen raus, sonst ploppt es ständig im LS, man will ja nur Sinusförmige Signal an den LS bzw. Verstärker weiterleiten."

Warum ploppt es ständig? Und es kommt doch ein Rechtecksignal aus dem Arduino, oder? Und wo die "Mittellinie" liegt ist doch egal, oder? Ich dachte, ich hätte mal einen LS mittels 1K Widerstands direkt angeschlossen und der piepse genau so, wie ich das wollte. Hatte ich da nur Glück?

Gruß

Helmuth
7  International / Deutsch / Re: Besserer Sternenhimmel! on: September 18, 2014, 05:20:29 am
Für die Motivation: so kann das z.B. am Ende aussehen

http://www.youtube.com/watch?v=OSVZKjsbgAo&feature=youtu.be
8  International / Deutsch / Re: Besserer Sternenhimmel! on: September 18, 2014, 04:27:52 am
Die Kommentare sind dazu gedacht, dass Du verstehst, was der Sketch macht. Wenn da steht "FastLED spezifisch, entfällt bei dir" bedeutet das, dass man es nur braucht, wenn man FastLED verwendet.

Mein Codeschnipsel ist die Funktion zum Faden und die Funktion zum zufälligen Neufestlegen von oberen und unteren Grenzen, sowie Fadegeschwindigkeit und -richtung.

Ja, die Datenausgabe an 10 einzelne LEDs an 10 PWM Pins muss Du jetzt selbst schreiben.
(Stichworte: Schleife, now[], analogWrite)

Und zu "Delta soll nicht 0 sein" würde ich sagen, Du beschäftigst dich mal mit den absoluten Grundlagen von Mathe und Programmierung. No offence.

Nein, bitte keine PNs an mich, sondern alles hier ins Forum, damit alle etwas davon haben. Außerdem bin ich selbst nur sehr sporadisch hier unterwegs.

Eines noch: Ich gebe hier sehr gern Hilfe zur Selbsthilfe, aber ich werde keinen fertigen Code liefern. Ich habe mir etwas dabei gedacht, das Beispiel unvollständig zu lassen. Klar könnte ich Dein Problem in 5 Minuten lösen, aber das ist nicht der Sinn dieses Forums. Der Sinn ist es nach meinem Verständnis, mit Hilfe anderer zu lernen.
Das bedeutet, selbst viel zu lesen, selbst viel zu probieren und zu versuchen (was es bei Code Fragen auch erforderlich macht, das komplette Setup betriebsbereit auf dem Tisch stehen zu haben), selbst zu spielen und selbst Fehler zu machen.
Erfahrung ist die Summe der selbstgemachten Fehler.

Ich unterstütze im Rahmen meiner bescheidenen Möglichkeiten jeden, der Intitiative, Engagement und den Willen sich durchzubeißen zeigt. Ich unterstütze keine Faulheit.

Und jetzt setz Dich hin und schreibe eine ShowLEDs Funktion, welche Du dann selber testest. Ich erwarte eine Erfolgsmeldung! smiley-wink


Mit den besten Grüßen

Helmuth



9  International / Deutsch / Re: Besserer Sternenhimmel! on: September 17, 2014, 06:47:19 pm
Zustimmung, das macht Sinn. Habe es nochmal unter den Code geschrieben.

Beste Grüße

Helmuth
10  International / Deutsch / Re: Besserer Sternenhimmel! on: September 17, 2014, 06:28:52 pm
Hi Uwe,

mit 256 RGB LEDs garantiert nicht. 768 Byte Bildspeicher + 3*256 Byte + 512 Byte... nee, keine Chance...

Aber gefragt waren ja 10 LEDs (und nur monochrom), das sollte - so, wie gezeigt - selbst mit RGBs auf einem ATTiny laufen.

@ Leon: Ich griff die Idee von Jortox mit den individuellen Parametern für jede LED auf, weil er das so vorgeschlagen hat, praktikabler wäre natürlich ein einziger Min und Max Wert für alle LEDs und Delta als Byte deklariert.

Ich hab den Code so improvisiert, wie er ist, um
A) eine mögliche Herangehensweise zu zeigen und
B) weil das zufällig gerade das LED Setup war, das in der Kiste ganz oben lag...

Kann man natürlich auch noch ganz anders und RAM schonender machen, ist aber einem Einsteiger schwerer zu vermitteln. Natürlich ist der Code nicht perfekt - aber hoffentlich nachvollziehbar.

Übrigens kann man grundsätzlich mit einem UNO und einer 16x16 Matrix schon einiges machen - verwendet dann aber sehr viel Zeit für die Optimierung des Codes. Ein AT2560 gibt einem da deutlich mehr Freiraum zum Gestalten und kreativ Sein.

Beste Grüße

Helmuth

edit nochmal @Leon: Wenn verschiedene Parametersets gespeichert werden müssen, mache ich das gern mit einem 2dimensionalem Array, aber dann ist der Code schnell schwer lesbar.
11  International / Deutsch / Re: Besserer Sternenhimmel! on: September 17, 2014, 09:58:53 am
Hier, habe dir das mal schnell in FastLED geschrieben, damit das Prinzip klar wird. Sieht ganz nett aus, jedenfalls mit 256 einzeln angesteuerten LEDs... smiley-wink

Für bessere Verständlichkeit habe ich die ganzen Parameter in einzelne Arrays geschrieben.

analogWrite() verwendest du dann in deiner angepassten ShowLEDs() Funktion.

Musst Dich nur noch um die "stehenden" Pixel kümmern (sieht aber nichtmal schlecht aus) und um den regelmäßigen Aufruf von SetParamerters() im Hauptloop. Natürlich ohne jedesmal now[] zu verändern, denn es soll ja nicht springen, sondern faden... Und ich würde wetten, dass Du in einer Woche Lust auf Gammacorrection bekommst, mal sehen...

Kommst Du mit dem Code soweit zurecht?


Code:
#include <FastLED.h> // FastLED spezifisch, entfällt bei dir

#define CHIPSET     WS2812 // FastLED spezifisch, entfällt bei dir
#define LED_PIN     23 // FastLED spezifisch, entfällt bei dir
#define COLOR_ORDER GRB // FastLED spezifisch, entfällt bei dir

#define BRIGHTNESS  20 // FastLED spezifisch, entfällt bei dir

#define NUM_LEDS 256

CRGB leds[NUM_LEDS]; // FastLED spezifisch, entfällt bei dir

byte mini[NUM_LEDS];
byte maxi[NUM_LEDS];
byte now[NUM_LEDS];
int delta[NUM_LEDS];

void setup() {
  FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS); // FastLED spezifisch, entfällt bei dir
  FastLED.setBrightness(BRIGHTNESS); // FastLED spezifisch, entfällt bei dir
  SetParameters();
}

void loop() {  
  CalculateValues();
  ShowLEDs();
}

void SetParameters(){
  for(int i = 0; i < NUM_LEDS; i++) {         // alle LEDs
    mini[i] = random(50);           // minimale Helligkeit (0-50)
    maxi[i] = 100 + random(155);    // maximale Helligkeit (100-255)
    delta[i] = 5-random(10);         // Schrittweite zwischen -5 und +5
    now[i] = random(255);        // Startwerte
  }
}

void CalculateValues() {  // jede LED hoch- oder runterzählen
  for(int i = 0; i < NUM_LEDS; i++) {
    if (now[i]+delta[i] > maxi[i] || now[i]+delta[i] < mini[i]) {  // wäre der nächste Schritt außerhalb mini und maxi?
      delta[i] = -delta[i];    // Richtungswechsel
      now[i] = now[i] + delta[i]; // weiterzählen
    }
    else { // wenn nächster Schritt innerhalb mini und maxi
      now[i] = now[i] + delta[i];  // sofort weiterzählen
    }
  leds[i][0] = now[i];  // FastLED spezifisch, entfällt bei dir (hier werden nur die rot-Werte auf now[i] gesetzt)
  }
}

void ShowLEDs() {  // LEDs ausgeben
  FastLED.show();  // FastLED spezifisch, entfällt bei dir - hier ist DEIN CODE gefragt...
}
edit: Wenn jemand damit auf einem UNO spielen will, muss NUM_LEDS deutlich herabgesetzt werden. 100 LEDs sollten funktionieren, habe ich aber nicht getestet.

Beste Grüße

Helmuth

edit: Bitte nicht im nachhinein an den Posts rumeditieren (jedenfalls nichts löschen), sonst liest sich der Thread am Ende sehr merkwürdig, weil Fragen und Antworten nicht mehr zusammen passen.
12  International / Deutsch / Re: Besserer Sternenhimmel! on: September 17, 2014, 09:29:29 am
Warte kurz, wenn ich zu Hause bin, schreibe ich Dir mal was...

Wenn Delta 0 ist, fadet natürlich nichts mehr...

edit: Die Arraydeklaration ist Murks und das schöne an einer Funktion ist, dass man sie nur noch aufzurufen baucht, wenn man sie einmal definiert hat...

Deinen Code wird dir der Compiler (zu Recht!) um die Ohren hauen...  smiley-wink
13  International / Deutsch / Re: Besserer Sternenhimmel! on: September 17, 2014, 08:15:52 am
Das war nur ein Beispiel, das ich gerade zur Hand hatte, wie man mit einer Schleife ein Array bearbeitet.

Der rote Teil berechnet einen Sinuswert aus einem durchlaufendem Counter, damit eine Variable "schwingt". Brauchst Du erstmal nicht.

In Deinem Fall würde CalculateParameters() z.B. so aussehen:

Code:
void CalculateParameters() {
    for(int i = 0; i < 10; i++) {         // alle LEDs
       leds[i][0] = random(50);           // minimale Helligkeit (0-50)
       leds[i][1] = 100 + random(155);    // maximale Helligkeit (100-255)
       leds[i][3] = 5-random(10);         // Schrittweite zwischen -5 und +5
  }
}

Die rufst Du natürlich nicht ständig auf, sondern nur alle paar Sekunden. Siehe dazu BlinkWithoutDelay im Playground.


14  International / Deutsch / Re: Besserer Sternenhimmel! on: September 17, 2014, 07:04:34 am
Siehe vorheriger Post. Meintest Du das?
15  International / Deutsch / Re: Besserer Sternenhimmel! on: September 17, 2014, 06:57:25 am
Ja, ich habe das Grundprinzip an einer LED erklärt. Da Du die Daten aber alle in einem Array stehen hast, ist es dann leicht, in jeder der 3 Funktionen mittels einer for-Schleife die Operationen für alle 10 Kanäle auszuführen. Das hält den Code schlank und übersichtlich...

Und es ist dann egal, ob Du das mit 10 oder mit 1000 LEDs machst, dein Code ist also schön flexibel

Beispiel

Code:
void MoveOscillators() {
   for(int i = 0; i < MAX_OSCIS; i++) {
    p[i] = sin8(osci[i]);
  }
}

Pages: [1] 2 3 ... 26