Skip to content
Snippets Groups Projects
Select Git revision
  • a26664be9bf6dcdccf05c3f0cbe6c245c0ca41de
  • master default protected
  • add-joust
  • blinkisync-as-preload
  • genofire/rockets-state
  • genofire/leds_rgb_get_state
  • genofire/ble-follow-py
  • genofire/haule-ble-fs-deactive
  • hauke/ble-cleanups
  • plaetzchen/ios-workaround
  • schneider/max30001-pycardium
  • schneider/max30001-epicaridum
  • schneider/max30001
  • schneider/stream-locks
  • ios-workarounds
  • schneider/fundamental-test
  • schneider/ble-buffers
  • schneider/maxim-sdk-update
  • rahix/simple_menu
  • ch3/splashscreen
  • koalo/bhi160-works-but-dirty
  • v1.7
  • v1.6
  • v1.5
  • v1.4
  • v1.3
  • v1.2
  • v1.1
  • v1.0
  • release-1
  • bootloader-v1
  • v0.0
32 results

textbuffer.c

Blame
  • Forked from card10 / firmware
    Source project has a limited visibility.
    demo_sparabo.py 1.22 KiB
    import event
    import hardware
    from synth import tinysynth
    import math
    
    def xy_from_polar(r,deg):
    	#rad = deg/180*math.pi
    	
    	return( (
    		r * math.sin(deg), #x
    		r * math.cos(deg)  #y
    	)  )
    
    ctx = hardware.get_ctx()
    popcorn = [9,7,9,5,0,5,-3,999]
    synth = tinysynth(440,1)
    
    sequencer = None
    handler = None
    
    def on_step(data):
    	note = popcorn[data["step"]]
    	if note != 999:
    		synth.tone(note)
    		synth.start()
    	
    	
    	ctx.rgb(1,1,0).rectangle(-120,-120,240,240).fill()
    	(x,y) = xy_from_polar(90,-2*math.pi/8*data["step"]+math.pi)
    	size=180
    	ctx.rgb(0.8,0.8,0)
    	ctx.round_rectangle(
    			x-size/2,
    			y-size/2,
    			size,size,size//2
    	).fill()
    	ctx.move_to(x,y).rgb(0.5,0.5,0).text("{}".format(data["step"]))
    	hardware.display_update()
    	
    def handle_input(data={}):
        sequencer.remove()
        ev.remove()
    
    
    def init():
        ctx.text_align = ctx.CENTER
        ctx.text_baseline = ctx.MIDDLE
    
        synth = tinysynth(440,1)
        synth.decay(25)
        global sequencer
        sequencer = event.Sequence(bpm=160, steps=8, action=on_step, loop=True)
        global ev
        ev=event.Event(name="sparabo",action=handle_input, 
            condition=lambda e:  e["type"] =="button" and e["change"] and e["value"] == 2)
    
    def run():
        init();
        print("run")
        event.the_engine.eventloop()