Ankündigung

Einklappen
Keine Ankündigung bisher.

[Misterhouse] RGB Sequencer

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • commander0815
    antwortet
    Hi RaK,
    ich habe hier auch ein Dali Gateway.
    Wird im MOment nur zum Dimmen von Leuchtstoffröhren verwendet.
    Was hast Du denn da dranhängen?
    LG
    Klaus

    Einen Kommentar schreiben:


  • RaK
    antwortet
    Fertisch . Nicht schön, aber selten.

    Folgende Einträge in der *.mht
    Code:
    EIB6,     10/0/3,               Bad_Rot,     OG_Bad,
    EIB6,     10/0/4,               Bad_Gruen,   OG_Bad,
    EIB6,     10/0/5,               Bad_Blau,    OG_Bad,
    EIB1,     10/0/6,               SequenzerAn,    OG_Bad,
    EIB1,     10/0/7,               Bad_Spiegel,    OG_Bad,
    Sollte Selbsterklärend sein.

    Folgender Perl Code als sequenzer.pl im Code Verzeichnis:
    Code:
    # noloop=start
    my ($current_hue) = 0;
    my ($ro,$go,$bo) = hsv2rgb(0 , 255, 255);
    # noloop=stop
    
    if (!($New_Second % 2) == 0 && state $SequenzerAn eq ON && state $Bad_Spiegel eq ON) {
      my ($r,$g,$b);
      $current_hue += 5;
      if ($current_hue >= 255) { $current_hue = 0; }
      ($r, $g, $b) = hsv2rgb($current_hue, 255, 255);
      $r = int( $r/255*100); $g = int( $g/255*100); $b = int( $b/255*100);
      set $Bad_Rot   $r if ($ro != $r);
      set $Bad_Gruen $g if ($go != $g);
      set $Bad_Blau  $b if ($bo != $b);
      ($ro, $go, $bo) = ($r,$g,$b);
      printf("RGB %3i %3i %3i\n",$r,$g,$b);
    }
    
    if (state_changed $Bad_Spiegel eq OFF) {
      set $Bad_Rot   0; set $Bad_Gruen 0; set $Bad_Blau  0;
      set $SequenzerAn OFF;
      printf("RGB %3i %3i %3i\n",0,0,0);
    } elsif (state_changed $Bad_Spiegel eq ON) {
      set $Bad_Rot   $ro; set $Bad_Gruen $go; set $Bad_Blau  $bo;
      printf("RGB %3i %3i %3i\n",$ro,$go,$bo);
    }
    
    sub hsv2rgb {
      my ($H,$S,$V) = @_;
      my ($R,$G,$B) = (0,0,0);
      my ($var_r, $var_g, $var_b);
    
      $H = $H/255; $S = $S/255; $V = $V/255;
    
      if ( $S == 0 )
      {
         $R = $V * 255; $G = $V * 255; $B = $V * 255;
      }
      else
      {
         my $var_h = $H * 6;
         if ( $var_h == 6 ) { $var_h = 0;}      # H must be < 1
         my $var_i = int( $var_h ) ;         # Or ... $var_i = floor( var_h )
         my $var_1 = $V * ( 1 - $S );
         my $var_2 = $V * ( 1 - $S * ( $var_h - $var_i ) );
         my $var_3 = $V * ( 1 - $S * ( 1 - ( $var_h - $var_i ) ) );
    
         if      ( $var_i == 0 ) { $var_r = $V     ; $var_g = $var_3 ; $var_b = $var_1 ;}
         elsif ( $var_i == 1 ) { $var_r = $var_2 ; $var_g = $V     ; $var_b = $var_1 ;}
         elsif ( $var_i == 2 ) { $var_r = $var_1 ; $var_g = $V     ; $var_b = $var_3 ;}
         elsif ( $var_i == 3 ) { $var_r = $var_1 ; $var_g = $var_2 ; $var_b = $V     ;}
         elsif ( $var_i == 4 ) { $var_r = $var_3 ; $var_g = $var_1 ; $var_b = $V     ;}
         else                  { $var_r = $V     ; $var_g = $var_1 ; $var_b = $var_2 ;}
    
         $R = $var_r * 255;                  # RGB results from 0 to 255
         $G = $var_g * 255;
         $B = $var_b * 255;
      }
      return ($R, $G, $B);
    }
    Die hsv2rgb bekommt man sicherlich für unsere Zwecke noch schlanker hin (Wertebereich 0 bis 100 zB). Dann sinkt der Rechenbedarf. Aber das ist die Kür

    Bedienung ist dann wie folgt:
    Zwei EIB1 Items (SequenzerAn und Bad_Spiegel). Beides als UM auf zwei Taster.

    Bad_Spiegel toggelt das Licht an und aus. Bei an wird der letzte Farbwert wieder eingestellt.

    SequenzerAn auf ON und schon beginnt das Farbenspiel (einmal durch den Farbkreis in 100 Sekunden) bis entweder SequenzerAn wieder auf Off gesetzt wird, oder das Licht ausgeschaltet wird.

    Ich hoffe das reicht als "Beispiel" für ein wenig Perl Code nach dem ich immer gefragt werde.

    Fragen? Fragen!

    Wer hat noch DALI an MH? Was habt ihr so an Funktionen implementiert?

    Einen Kommentar schreiben:


  • RaK
    antwortet
    FileV-RGB-comparison.svg - Wikipedia, the free encyclopedia

    Hab was gefunden. Ist eigentlich ganz logisch. Man kann das mit dem Farbmodel HSV erledigen.

    Einen Kommentar schreiben:


  • RaK
    antwortet
    Hab was gefunden. Im wesentlichen kann man das mit dem HSV Farbraum erledigen, nein nicht Hamburger Sportverein .

    Einen Kommentar schreiben:


  • thoweiss
    antwortet
    Hallo Rak,

    schau mal hier: LINK

    unten auf der Seite ist der Quelltext für einen RGB-Fader mit Sonderfunktionen als bascom-basic programm verlinkt.

    Ich habe das Programm in einem ATMEL laufen für meinen Springbrunnen - tuts prima.

    Sollte eigentlich acuh in perl umsetzbar sein.

    Gruß,
    Thorsten

    Einen Kommentar schreiben:


  • RaK
    hat ein Thema erstellt [Misterhouse] RGB Sequencer.

    [Misterhouse] RGB Sequencer

    Hallo Jungs,

    ich bin gerade dabei mit DALI zu spielen. RGB ist der nächste logische Schritt. Dafür würde ich gerne einen RGB Sequenzer für MH bauen.

    Funktion stelle ich mir so vor:
    - Tastendruck löst Sequenzer aus
    - MH steuert solange den Regenbogen durch (Farben, Geschwindigkeiten anpassbar) bis wieder auf die Taste gedrückt wird.

    Ergo brauchen wir:
    - drei Gruppenadressen (Taster und drei Dimmkanäle)
    - noch eine beliebig lange Liste von RGB Farbwerten, die dann inkl. Interpolation dazwischen abgefahren werden
    - eine Zeitkonstante, die die Geschwindigkeit bestimmt (für einen kompletten Durchlauf)
    - ein boolean für Loop Ja/Nein

    Hat jemand mit dem MH schon was ähnliches realisiert?

    Wie sehen die Algorithmen aus für das "durchfahren" der Farbwerte.

    Liebe Grüße
Lädt...
X