1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

HyperCon add effect

Discussion in 'Software Support' started by gsus, 30 March 2018.

  1. gsus

    gsus New Member

    Messages:
    9
    Hardware:
    RPi1/Zero
  2. Paulchen-Panther

    Paulchen-Panther Moderator Staff Member Developer

    Messages:
    825
    Hardware:
    RPi1/Zero, RPi3, 32/64bit, +Arduino, +nodeMCU/ESP8266
    Mit welcher Hyperion Version wolltest du denn den Effekt starten?
     
  3. gsus

    gsus New Member

    Messages:
    9
    Hardware:
    RPi1/Zero
    Hallo
    war lange nicht mehr hier...
    Aber der light clock effekt interessiert auf der stable Version interessiert mich noch immer. Jemand eine Idee?
    Gruß
     
  4. Paulchen-Panther

    Paulchen-Panther Moderator Staff Member Developer

    Messages:
    825
    Hardware:
    RPi1/Zero, RPi3, 32/64bit, +Arduino, +nodeMCU/ESP8266
    Der ist mit der stable Version nicht kompatibel.
     
  5. gsus

    gsus New Member

    Messages:
    9
    Hardware:
    RPi1/Zero
    Ok. Hab mich noch nicht wirklich mit Effekten beschäftigt. Würde jetzt z.b. den snake effekt herziehen und versuchen das für die stable als uhr umzuschreiben.
    Bin offen für Anregungen
     
  6. Paulchen-Panther

    Paulchen-Panther Moderator Staff Member Developer

    Messages:
    825
    Hardware:
    RPi1/Zero, RPi3, 32/64bit, +Arduino, +nodeMCU/ESP8266
    Du kannst es ja mal mit dieser Version versuchen:

    clock.json:
    Code:
    {
        "name" : "Clock",
        "script" : "clock.py",
        "args" :
        {
            "offset" : 0,
            "hour-margin" : 2,
            "minute-margin" : 1,
            "second-margin" : 0,
            "hour-color" : [255, 0, 0],
            "minute-color" : [0, 255, 0],
            "second-color" : [0, 0, 255],
            "marker-color" : [255, 255, 255]
        }
    }
    clock.py
    Code:
    import hyperion
    import time
    from datetime import datetime
    
    def myRange(index, margin):
        return [i % hyperion.ledCount for i in range(index-margin, index+margin+1)]
    
    """ Define some variables """
    sleepTime = 1
    ledCount = hyperion.ledCount
    
    offset = hyperion.args.get('offset', 0)
    direction = bool(hyperion.args.get('direction', False))
    
    hourMargin = hyperion.args.get('hour-margin', 2)
    minuteMargin = hyperion.args.get('minute-margin', 1)
    secondMargin = hyperion.args.get('second-margin', 0)
    
    hourColor = hyperion.args.get('hour-color', (255,0,0))
    minuteColor = hyperion.args.get('minute-color', (0,255,0))
    secondColor = hyperion.args.get('second-color', (0,0,255))
    
    markerColor = hyperion.args.get('marker-color', (255,255,255))
    
    marker = ledCount/4
    markers = (0+offset, int(marker + offset) % ledCount, int(2*marker + offset) % ledCount, int(3*marker + offset) % ledCount)
    
    """ The effect loop """
    while not hyperion.abort():
    
        """ The algorithm to calculate the change in color """
        led_data = bytearray()
    
        now = datetime.now()
        h = now.hour
        m = now.minute
        s = now.second
    
        hmin = float(h+(1/60*m))
       
        if hmin > 12:
            hmin -= 12
       
        hour = float(hmin/12 * ledCount)
        led_hour = int(hour + offset) % ledCount
    
        minute = m/60. * ledCount
        led_minute = int(minute + offset) % ledCount
    
        second = s/60. * ledCount
        led_second = int(second + offset) % ledCount
    
        hourRange =  myRange(led_hour, hourMargin)
        minuteRange = myRange(led_minute, minuteMargin)
        secondRange = myRange(led_second, secondMargin)
    
        for i in range(ledCount):
            blend = [0, 0, 0]
    
            if i in markers:
                blend = markerColor
    
            if i in hourRange:
                blend = hourColor
    
            if i in minuteRange:
                blend = minuteColor
    
            if i in secondRange:
                blend = secondColor
    
            led_data += bytearray((int(blend[0]), int(blend[1]), int(blend[2])))
    
        """ send the data to hyperion """
        hyperion.setColor(led_data)
    
        """ sleep for a while """
        timediff = (datetime.now()-now).microseconds/1000000.
        time.sleep(sleepTime-timediff)
    
     
  7. gsus

    gsus New Member

    Messages:
    9
    Hardware:
    RPi1/Zero
    Musste nur um 180grad drehen und tut direkt. Hab Dank ;)
     
    • Like Like x 1
    • Informative Informative x 1
  8. gsus

    gsus New Member

    Messages:
    9
    Hardware:
    RPi1/Zero
    Gibt es eigentlich einen Sammlung für custom Effekte? Gibt doch sicher mehr von so gimiks
     
    • Like Like x 1
  9. Gurkentopf

    Gurkentopf New Member

    Messages:
    18
    Hardware:
    RPi3
    Eine Frage dazu, wie dreht man das? Gibt es ne Anleitung zu den Effekten wie man sie erstellt?
     
  10. flonko

    flonko New Member

    Messages:
    3
    Hardware:
    RPi3
    schade das "gsus" nicht mehr geantwortet hat. würde auch gerne wissen wie er die Datei angepasst hat. Bei mir läuft sie auch falsch herum. :(
     
  11. Paulchen-Panther

    Paulchen-Panther Moderator Staff Member Developer

    Messages:
    825
    Hardware:
    RPi1/Zero, RPi3, 32/64bit, +Arduino, +nodeMCU/ESP8266
    Ich würde meinen, den Parameter "offset" in der json Datei auf die Hälfte der gesamten Led's.
    Also wenn du 120 Led's insgesamt hast , dann setzt man den "offset" auf 60.
    Dann bist du bei 180°. WEIL die hälfte von 360° ist 180°. :p
     
  12. flonko

    flonko New Member

    Messages:
    3
    Hardware:
    RPi3
    hat leider nichts gebracht. Die Uhr steht nach wie vor Kopf und läuft falsch herum.:(