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:
    6
    Hardware:
    RPi1/Zero
  2. Paulchen-Panther

    Paulchen-Panther Active Member Developer

    Messages:
    211
    Mit welcher Hyperion Version wolltest du denn den Effekt starten?
     
  3. gsus

    gsus New Member

    Messages:
    6
    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 Active Member Developer

    Messages:
    211
    Der ist mit der stable Version nicht kompatibel.
     
  5. gsus

    gsus New Member

    Messages:
    6
    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 Active Member Developer

    Messages:
    211
    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:
    6
    Hardware:
    RPi1/Zero
    Musste nur um 180grad drehen und tut direkt. Hab Dank ;)
     
    • Like Like x 1
  8. gsus

    gsus New Member

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