Пример #1
0
    def __init__(self, gradient, img_path, duration=5000):
        """ 
			Inits graphical components

			gradient: A gradient object to act as background
			img_path: path to images
			duration: duration of intro sequence in milliseconds
		"""
        self.screen = gradient
        self.duration = duration

        #knob image
        img = pygame.image.load(img_path + 'knob.png')
        #img = pygame.transform.scale(img, (150, 150))

        #plates
        rust = pygame.image.load(img_path + 'rust.png')
        rust = pygame.transform.scale(rust, (120, 120))

        #petrolium
        petrol = pygame.image.load(img_path + 'petrol.png')
        petrol = pygame.transform.scale(petrol, (120, 120))

        for i in range(2):
            knob = Knob(img)
            #knob.set_shadow((-6,-4), 150, 25)
            self.knobs.append(knob)

        #the two diffrent plates in a pattern
        self.knobs[0].set_plate(rust)
        self.knobs[1].set_plate(petrol)

        #position the knobs
        img_center = img.get_rect().center
        self.pos.append((125 - img_center[0], 125 - img_center[1]))
        self.pos.append((275 - img_center[0], 125 - img_center[1]))

        #texts
        center = self.screen.get_rect().center  #screen center

        #logo
        font = pygame.font.Font(pygame.font.get_default_font(), 40)
        logo = font.render('PyTone', True, BLACK)
        logo_cnt = logo.get_rect().center  # texts center
        logo = (logo, (center[0] - logo_cnt[0], 250 - logo_cnt[1])
                )  #storing surface & position in a tuple
        self.surfaces.append(logo)

        #credits
        font = pygame.font.Font(img_path + 'Actor-Regular.ttf', 10)
        credits = font.render('MIKAEL SVENSSON 2013', True, BLACKER)
        cred_cnt = credits.get_rect().center
        credits = (credits, (center[0] - cred_cnt[0], 364 - cred_cnt[1])
                   )  #storing surface & position in a tuple
        self.surfaces.append(credits)

        self.clock = pygame.time.Clock()
Пример #2
0
    def __init__(self, gradient, path):
        """ 
			gradient: A gradient object to act as background
			path: path to media
		"""
        start = 330
        stop = 60
        self.screen = gradient
        img = pygame.image.load(path + 'switch.png')
        self.switch = Knob(img, self.snap, (start, stop))
        snd = pygame.mixer.Sound(path + 'switch_snd.ogg')
        self.switch.set_sound(snd)
        self.switch.set_volume(0.5)
        self.path = path
Пример #3
0
    def getUI(self):
        """get the ui element"""
        result = Knob()
        if self.value:
            result.value = self.value
        skin = sm.getSkin('knob', self.asset)
        result.size = sm.getControlSize(skin, self.asset)
        result.knobimg_source = os.path.join(skin['path'], skin["knob"])
        result.marker_img = os.path.join(skin['path'], skin['marker'])
        result.min = sm.getMinimum('knob', self.value, self._typeInfo)
        result.max = sm.getMaximum('knob', self.value, self._typeInfo)
        result.step = sm.getStep('knob', self._typeInfo)
        result.show_label = sm.getVar(skin, self.asset, "show_label", False)
        result.show_marker = sm.getVar(skin, self.asset, "show_marker", False)

        self.uiEl = result
        self.prepareUiElement()
        if sm.getVar(skin, self.asset, "send_on_release", False):
            result.on_dragEnded = self.value_changed  # set the callback for when drag ends (self made, so no binding)
        else:
            result.bind(value=self.value_changed)
        return result
Пример #4
0
    def __init__(self, **kwargs):
        super(Otmg, self).__init__(**kwargs)

        self.progs = os.listdir("../../otmp")
        self.prog = "Roman_Numeral_Square_Root"

        self.steps = 0
        self.geardir = "CW"

        self.otm = Otm(" ")
        self.otm.load(self.prog)
        self.alph = self.otm.findchars()
        self.lasttape = self.otm.tape
        self.changetape = True

        self.lastloc = 0
        self.movedloc = False
        self.lastleftknob = 0
        self.lastrightknob = 0
        self.lastinput = [" "]
        self.setlast = False

        self.orientation = 'vertical'
        self.padding = 20

        self.row0 = BoxLayout(size_hint=(1, 0.1))
        self.row0.prev = Button(text="Previous", size_hint=(0.25, 1))
        self.row0.prev.bind(on_press=self.prev)
        self.row0.add_widget(self.row0.prev)
        self.row0.title = LabelB(text=self.prog.replace("_", " "),
                                 size_hint=(0.5, 1),
                                 halign='center',
                                 valign='top',
                                 color=(0, 0, 0, 1),
                                 font_size=25,
                                 bcolor=(1, 1, 1, 1))
        self.row0.add_widget(self.row0.title)
        self.row0.nex = Button(text="Next", size_hint=(0.25, 1))
        self.row0.nex.bind(on_press=self.nex)
        self.row0.add_widget(self.row0.nex)
        self.add_widget(self.row0)

        self.row1 = BoxLayout(size_hint=(1, 0.2))
        self.row1.tape = LabelB(text=self.otm.croptape(25),
                                size_hint=(1, 1),
                                halign='center',
                                valign='top',
                                color=(0, 0, 0, 1),
                                font_size=25,
                                bcolor=(210 / 255.0, 105 / 255.0, 30 / 255.0,
                                        1),
                                font_name='Courier New Bold')
        self.row1.add_widget(self.row1.tape)
        self.add_widget(self.row1)

        self.row15 = BoxLayout(size_hint=(1, 0.01))
        self.row15.pointer = LabelB(text='^',
                                    halign='center',
                                    color=(0, 0, 0, 1),
                                    bcolor=(210 / 255.0, 105 / 255.0,
                                            30 / 255.0, 1),
                                    valign='top')
        self.row15.add_widget(self.row15.pointer)
        self.add_widget(self.row15)

        self.row2 = BoxLayout(orientation='horizontal')
        self.row2.it1 = BoxLayout(orientation='vertical')
        self.row2.it2 = BoxLayout(orientation='horizontal')
        self.row2.it3 = BoxLayout(orientation='vertical')

        self.row2.gear_left = Image(source='Clockwise/Gear0.png',
                                    size_hint=(1, 1))
        self.row2.it1.add_widget(self.row2.gear_left)
        self.row2.desc1 = BoxLayout(orientation='horizontal')
        self.row2.actdesc1 = Button(text=" ",
                                    font_size=25,
                                    color=(0, 0, 0, 1),
                                    background_color=(32 / 255.0, 178 / 255.0,
                                                      170 / 255.0, 1),
                                    size_hint=(1, 1),
                                    background_normal='')
        self.row2.actdesc1.bind(on_press=self.write_char)
        self.row2.knob_left = Knob(size=(125, 125),
                                   step=100 / len(self.alph),
                                   knobimg_source="knob/img/knob_metal.png",
                                   marker_img="knob/img/bline.png",
                                   markeroff_color=(0.3, 0.3, 0.3, 1))
        self.row2.knob_left.bind(on_touch_move=self.change_char)
        self.row2.desc1.add_widget(self.row2.knob_left)
        self.row2.desc1.add_widget(self.row2.actdesc1)
        self.row2.it1.add_widget(self.row2.desc1)

        self.row2.it2.program = LabelB(
            text=''.join(txtformat(self.otm.cropprog(3))),
            color=(0, 0, 0, 1),
            halign='left',
            valign='top',
            bcolor=(218 / 255.0, 165 / 255.0, 32 / 255.0, 1),
            size_hint=(0.9, 1),
            font_size=20,
            font_name="Courier New Bold",
            text_size=(200, None))
        self.row2.it2.pointer = LabelB(text='->',
                                       color=(0, 0, 0, 1),
                                       halign='right',
                                       valign='middle',
                                       size_hint=(0.1, 1),
                                       bcolor=(218 / 255.0, 165 / 255.0,
                                               32 / 255.0, 1))
        self.row2.it2.add_widget(self.row2.it2.pointer)
        self.row2.it2.add_widget(self.row2.it2.program)

        self.row2.gear_right = Image(source='Clockwise/Gear0.png',
                                     size_hint=(1, 1))
        self.row2.it3.add_widget(self.row2.gear_right)
        self.row2.desc2 = BoxLayout(orientation='horizontal')
        self.row2.actdesc2 = LabelB(text='Location -->',
                                    color=(0, 0, 0, 1),
                                    bcolor=(32 / 255.0, 178 / 255.0,
                                            170 / 255.0, 1))
        self.row2.knob_right = Knob(size=(125, 125),
                                    knobimg_source="knob/img/knob_metal.png",
                                    marker_img="knob/img/bline.png",
                                    markeroff_color=(0.3, 0.3, 0.3, 1))
        self.row2.knob_right.bind(on_touch_move=self.set_location)
        self.row2.desc2.add_widget(self.row2.actdesc2)
        self.row2.desc2.add_widget(self.row2.knob_right)
        self.row2.it3.add_widget(self.row2.desc2)

        self.row2.add_widget(self.row2.it1)
        self.row2.add_widget(self.row2.it2)
        self.row2.add_widget(self.row2.it3)
        self.add_widget(self.row2)

        self.row3 = BoxLayout(orientation='horizontal', size_hint=(1, 0.3))
        self.row3.slider = OtmgSlider(min=0, max=100, value=0)
        self.row3.add_widget(self.row3.slider)
        self.add_widget(self.row3)

        self.row4 = BoxLayout(orientation='horizontal', size_hint=(1, 0.2))
        self.row4.btn1 = ToggleButton(text='Start/Stop')
        self.row4.btn1.bind(on_press=self.do_startstop)
        self.row4.add_widget(self.row4.btn1)
        self.row4.btn2 = Button(text='Step')
        self.row4.btn2.bind(on_press=self.do_step_request)
        self.row4.add_widget(self.row4.btn2)
        self.row4.btn3 = Button(text='Restart')
        self.row4.btn3.bind(on_press=self.do_restart)
        self.row4.add_widget(self.row4.btn3)
        self.row4.btn4 = Button(text='Clear')
        self.row4.btn4.bind(on_press=self.do_clear)
        self.row4.add_widget(self.row4.btn4)
        self.row4.btn5 = Button(text='EXIT')
        self.row4.btn5.bind(on_press=self.exit)
        self.row4.add_widget(self.row4.btn5)

        self.add_widget(self.row4)
Пример #5
0
# setup trellis
i2c = busio.I2C(board.SCL, board.SDA)
addresses = [0x71, 0x70]

if i2c is not None:
    print("I2C devices found: ", [hex(i) for i in i2c.scan()])

trellis = Trellis(i2c, addresses)
trellis.led.fill(False)
trellis.brightness = 1

# collect all the metronome's callbacks
ctlButtons = ControllerButtons(midi_h)
state = ButtonState()
knob = Knob()


# button reconciler
async def button_handler(clock):

    # add some button chill so we don't spam notes
    global bounce_count
    if bounce_count % 3 != 0:
        bounce_count += 1
        return
    bounce_count = 1

    # get button state
    state.set_buttons(trellis)
Пример #6
0
    def __init__(self, controller, canvas, idPiste):
        super().__init__(canvas)

        self.canvas = canvas
        self.controller = controller
        self.window = None

        self.idPiste = idPiste
        self.suivant = None
        self.precedent = None

        self.spacerLabel = Label(self,
                                 text="",
                                 background='#FFFFFF',
                                 font='Helvetica 1',
                                 height=2)
        self.spacerLabel.pack()

        self.removeButton = Button(self,
                                   text="Supprimer",
                                   command=self.askRemovePiste,
                                   width=8,
                                   cursor="hand2",
                                   background='red',
                                   font="Helvetica 8 bold",
                                   foreground="white",
                                   activebackground="#EA0000",
                                   activeforeground="#EAEAEA")
        self.removeButton.pack()

        self.spacerLabel = Label(self,
                                 text="",
                                 background='#FFFFFF',
                                 font='Helvetica 2',
                                 height=1)
        self.spacerLabel.pack()

        self.idLabel = Label(self,
                             text="CH " + str(self.idPiste),
                             background="white",
                             font='Helvetica 16 bold',
                             foreground="#A0A0A0")
        self.idLabel.pack()

        self.nameLabel = Label(self,
                               text="Veuillez charger un son",
                               background="white",
                               font='Helvetica 8 ',
                               width=19,
                               height=1)
        self.nameLabel.pack()

        self.LoadButton = Button(self,
                                 text="Charger",
                                 command=self.open_file,
                                 width=14,
                                 cursor="hand2",
                                 background='#C8C8C8',
                                 font="Helvetica 12 bold",
                                 activebackground="#B9B9B9",
                                 height=1)
        self.LoadButton.pack()

        self.spacerLabel = Label(self,
                                 text="",
                                 background='#FFFFFF',
                                 font='Helvetica 3',
                                 height=1)
        self.spacerLabel.pack()

        self.stereoLabel = Label(self,
                                 text="Stéréo",
                                 background="white",
                                 font="Helvetica 11 bold")
        self.stereoLabel.pack()

        self.stereoKnob = Knob(self, -1, 1, self.modifyStereoValue)
        self.stereoKnob.pack()

        self.spacerLabel = Label(
            self,
            text="",
            background='#FFFFFF',
            font='Helvetica 1',
            height=1,
        )
        self.spacerLabel.pack()

        self.volumeLabel = Label(self,
                                 text="Volume",
                                 background="white",
                                 font="Helvetica 11 bold")
        self.volumeLabel.pack()

        self.volumeSlider = Scale(self,
                                  orient=VERTICAL,
                                  command=self.modifyVolumeValue,
                                  background="white",
                                  troughcolor='#C8C8C8',
                                  activebackground="#D9D9D9",
                                  font='Helvetica 10 bold',
                                  width=20,
                                  length=125,
                                  cursor="hand2",
                                  highlightthickness=0)
        self.volumeSlider.config(from_=150, to=0)
        self.setVolumeValue(100)
        self.volumeSlider.pack()

        self.spacerLabel = Label(self,
                                 text="",
                                 background='#FFFFFF',
                                 font='Helvetica 1',
                                 height=1)
        self.spacerLabel.pack()

        self.speedLabel = Label(self,
                                text="Pitch",
                                background="white",
                                font="Helvetica 11 bold")
        self.speedLabel.pack()

        self.speedKnob = Knob(self, 0, 2, self.modifySpeedValue)
        self.speedKnob.pack()

        self.spacerLabel = Label(self,
                                 text="",
                                 background='#FFFFFF',
                                 font='Helvetica 1',
                                 height=1)
        self.spacerLabel.pack()

        self.muteLabel = Label(self,
                               text="Mute",
                               background="white",
                               font="Helvetica 11 bold")
        self.muteLabel.pack()

        self.muteButtonState = False
        soundOn = PhotoImage(file="Images/unMute.png", master=self.canvas)
        self.muteButton = Button(self,
                                 image=soundOn,
                                 command=self.modifyMuteState,
                                 cursor="hand2")
        self.muteButton.image = soundOn
        self.muteButton.pack()

        self.spacerLabel = Label(self,
                                 text="",
                                 background='#FFFFFF',
                                 font='Helvetica 5',
                                 height=1)
        self.spacerLabel.pack()

        self.effectButton = Button(self,
                                   text="Effet",
                                   width=14,
                                   background='#C8C8C8',
                                   font="Helvetica 11 bold",
                                   cursor="hand2",
                                   command=self.modifyEffet,
                                   activebackground="#B9B9B9")
        self.effectButton.pack()

        self.spacerLabel = Label(self,
                                 text="",
                                 background='#FFFFFF',
                                 font='Helvetica 1',
                                 height=1)
        self.spacerLabel.pack()

        self.crossFadeButtonState = False
        self.crossFadeButton = Button(self,
                                      text="CrossFade",
                                      width=14,
                                      cursor="hand2",
                                      background='#C8C8C8',
                                      font="Helvetica 11 bold",
                                      command=self.modifyCrossFade,
                                      activebackground="#B9B9B9")
        self.crossFadeButton.pack()

        self.spacerLabel = Label(self,
                                 text="",
                                 background='#FFFFFF',
                                 font='Helvetica 1',
                                 height=1)
        self.spacerLabel.pack()

        self.randomNbRepFrame = Frame(self)
        self.nbRepText = Text(self.randomNbRepFrame, height=1, width=4)
        self.nbRepText.insert(INSERT, "0")
        self.nbRepText.pack(side=LEFT)
        self.nbRepLabel = Label(self.randomNbRepFrame,
                                text="apparitions",
                                height=1,
                                width=13,
                                background='#C8C8C8')
        self.nbRepLabel.pack(side=RIGHT)
        self.randomNbRepFrame.pack()

        self.randomTimeFrame = Frame(self)
        self.timeText = Text(self.randomTimeFrame, height=1, width=4)
        self.timeText.insert(INSERT, "0")
        self.timeText.pack(side=LEFT)
        self.timeLabel = Label(self.randomTimeFrame,
                               text="secondes",
                               height=1,
                               width=13,
                               background='#C8C8C8')
        self.timeLabel.pack(side=RIGHT)
        self.randomTimeFrame.pack()

        self.randomButton = Button(self,
                                   text="Random",
                                   width=14,
                                   cursor="hand2",
                                   background='#C8C8C8',
                                   font="Helvetica 11 bold",
                                   command=self.modifyRandom,
                                   activebackground="#B0B0B0")
        self.randomButton.pack()

        self.configure(background="#FFF")
        self.pack(side=LEFT)
Пример #7
0
#from gpiozero.pins.mock import MockFactory
import os
os.environ['GPIOZERO_PIN_FACTORY'] = os.environ.get('GPIOZERO_PIN_FACTORY',
                                                    'mock')
import gpiozero
import vlc
from radioplayer import RadioPlayer
from gpiozero import Button, Device
from knob import Knob

#Device.pin_factory = MockFactory()

player = RadioPlayer()
RADIOCOMERCIALButton = Button(22)  #insert pin
RFMButton = Button(21)  #insert pin
volumeKnob = Knob(16, 17, pin_button=7)  # insert pins

RFMButton.when_pressed = player.changeToRFM
RFMButton.when_released = player.stopRFM
RADIOCOMERCIALButton.when_pressed = player.changeToRADIOCOMERCIAL
RADIOCOMERCIALButton.when_released = player.stopRADIOCOMERCIAL
volumeKnob.on_rotate_left(player.volumeDown)
volumeKnob.on_rotate_right(player.volumeUp)
volumeKnob.on_press(player.toggleMute)

#Device.pin_factory.pin(16).drive_low()
#Device.pin_factory.pin(16).drive_high()
#Device.pin_factory.pin(16).drive_low()
#Device.pin_factory.pin(16).drive_high()
#evice.pin_factory.pin(17).drive_low()
#Device.pin_factory.pin(17).drive_high()
Пример #8
0
    def __init__(self, **kwargs):
        super(Otmg, self).__init__(**kwargs)
        
        self.otm = Otm("XV1")
        self.otm.load("Roman_Numeral_Square_Root")
        self.alph = self.otm.findchars()

        #Clock.schedule_interval(self.runstep_callback, 0.0000005)

        self.lastloc = 0
        self.movedloc = False

        self.orientation = 'vertical'
        self.padding = 20
        self.row1 = BoxLayout(size_hint=(1,0.2))
        self.row1.tape = LabelB(text=self.otm.croptape(30), 
            size_hint=(1, 1),
            bold=True,
            halign='center', 
            valign='top',
            color=(0, 0, 0, 1),
            bcolor=(1, 1, 0.7, 1),
            font_name='Courier New')
        self.row1.add_widget(self.row1.tape)
        self.add_widget(self.row1)

        self.row15 = BoxLayout(size_hint=(1, 0.01))
        self.row15.pointer = LabelB(text='^', halign='center', color=(1, 0, 0 ,1), bcolor=(1, 1, 0.9, 1), valign = 'top')
        self.row15.add_widget(self.row15.pointer)
        self.add_widget(self.row15)

        self.row2 = BoxLayout(orientation='horizontal')
        self.row2.it1 = BoxLayout(orientation='vertical')
        self.row2.it2 = BoxLayout(orientation='horizontal')
        self.row2.it3 = BoxLayout(orientation='vertical')
        
        self.row2.gear_left = Image(source='cw.zip', anim_delay=-1, size_hint=(1, 1))
        self.row2.it1.add_widget(self.row2.gear_left)
        self.row2.desc1 = BoxLayout(orientation='horizontal')
        self.row2.actdesc1 = Button(text=" ",
                font_size=25,
                color=(0, 0, 0, 1),
                background_color=(138/255, 43/255, 226/255, 1),
                size_hint=(0.5, 0.5),
                background_normal='')
        self.row2.actdesc1.bind(on_press=self.write_char)
        self.row2.knob_left = Knob(size=(125,125),
                step=100/len(self.alph),
                knobimg_source="knob/img/knob_metal.png", 
                marker_img="knob/img/bline.png",
                markeroff_color=(0.3, 0.3, 0.3, 1))
        self.row2.knob_left.bind(on_touch_move=self.change_char)
        self.row2.desc1.add_widget(self.row2.knob_left)
        self.row2.desc1.add_widget(self.row2.actdesc1)
        self.row2.it1.add_widget(self.row2.desc1)
        
        self.row2.it2.program = LabelB(text=''.join(txtformat(self.otm.cropprog(3))),
                color=(0, 0, 0, 1),
                bold=True,
                halign='left',
                valign='top',
                bcolor=(1, 1, 0.8, 1),
                size_hint=(0.9, 1),
                font_name="Courier New",
                text_size=(200, None))
        self.row2.it2.pointer = LabelB(text='->',
                color=(1, 0, 0, 1),
                halign='right',
                valign='middle',
                size_hint=(0.1, 1),
                bcolor=(1, 1, 0.8, 1))
        self.row2.it2.add_widget(self.row2.it2.pointer)
        self.row2.it2.add_widget(self.row2.it2.program)

        
        self.row2.gear_right = Image(source='cw.zip', anim_delay=-1, size_hint=(1, 1))
        self.row2.it3.add_widget(self.row2.gear_right)
        self.row2.desc2 = BoxLayout(orientation='horizontal')
        self.row2.actdesc2 = LabelB(text='Location -->', color=(0, 0, 0, 1), bcolor=(1, 1, 1, 1))
        self.row2.knob_right = Knob(size=(125,125), 
                knobimg_source="knob/img/knob_metal.png", 
                marker_img="knob/img/bline.png",
                markeroff_color=(0.3, 0.3, 0.3, 1))
        self.row2.knob_right.bind(on_touch_move=self.set_location)
        self.row2.desc2.add_widget(self.row2.actdesc2)
        self.row2.desc2.add_widget(self.row2.knob_right)
        self.row2.it3.add_widget(self.row2.desc2)

        self.row2.add_widget(self.row2.it1)
        self.row2.add_widget(self.row2.it2)
        self.row2.add_widget(self.row2.it3)
        self.add_widget(self.row2)
        
        self.row3 = BoxLayout(orientation='horizontal', size_hint=(1, 0.3))
        self.row3.slider = OtmgSlider(min=0, max=100, value=0)
        self.row3.add_widget(self.row3.slider)
        self.add_widget(self.row3)

        self.row4 = BoxLayout(orientation='horizontal', size_hint=(1, 0.5))
        self.row4.btn1 = ToggleButton(text='Start/Stop')
        self.row4.btn1.bind(on_press=self.do_startstop)
        self.row4.add_widget(self.row4.btn1)
        self.row4.btn2 = Button(text='Step')
        self.row4.btn2.bind(on_press=self.do_step_request)
        self.row4.add_widget(self.row4.btn2)
        self.row4.btn3 = Button(text='Restart')
        self.row4.add_widget(self.row4.btn3)
        self.row4.btn4 = Button(text='Clear')
        self.row4.btn4.bind(on_press=self.do_clear)
        self.row4.add_widget(self.row4.btn4)
        self.row4.btn5 = Button(text='EXIT')
        self.row4.btn5.bind(on_press=self.exit)
        self.row4.add_widget(self.row4.btn5)

        self.add_widget(self.row4)
Пример #9
0
    def initGUI(self):
        """ Inits the graphical components """

        #clear background
        self.screen.clear()
        self.screen.draw()

        #knob image
        img = pygame.image.load(self.path + 'knob.png')

        #plates
        self.plate = pygame.image.load(self.path + 'rust.png')

        self.knob = Knob(img)
        self.knob.set_plate(self.plate)
        #self.knob.set_shadow((-6,-4), 150, 25)
        knb_center = self.knob.get_rect().center
        self.knob = (self.knob, (self.center[0] - knb_center[0],
                                 self.center[1] - knb_center[1])
                     )  # also stores knob.rect at blit time

        self.center = self.screen.get_rect().center

        #"back"
        back_img = pygame.image.load(self.path + 'back.png')
        back_pos = (30, 30)
        #tuple width the image and it's position and a third element containting elements Rect.
        self.back = (back_img, (30, 30), self.screen.blit(back_img, back_pos))

        #arrow
        arrow_img = pygame.image.load(self.path + 'arrow.png')
        self.arrow = (arrow_img, (self.center[0] - arrow_img.get_width() / 2,
                                  104))

        #instructions, texts
        instrs = [
            'UP', 'DOWN', 'FINE UP', 'FINE DOWN', 'PRESS ENTER TO CONFIRM'
        ]
        font = pygame.font.Font(self.path + 'Actor-Regular.ttf', 10)

        #instructions, key images
        key_images = pygame.Surface(
            (184, 69), pygame.SRCALPHA, 32
        )  #collecting those images in a surface, for flexible positioning.
        key_images_cp = key_images.get_rect().center

        img = pygame.image.load(self.path + 'key.png')
        up = pygame.transform.rotozoom(img, 90, 1)
        key_images.blit(
            up, (key_images_cp[0] - up.get_size()[0] / 2, 0))  #up arrow
        key_images.blit(
            font.render(instrs[0], True, BLACK),
            (key_images_cp[0] - font.size(instrs[0])[0] / 2, 9))  #up text
        key_images.blit(
            font.render(instrs[3], True, BLACK),
            (0, key_images_cp[1] - font.size(instrs[3])[1] / 2))  #left text
        left = pygame.transform.rotozoom(img, 180, 1)
        key_images.blit(left, (font.size(instrs[3])[0] + 5, key_images_cp[1] -
                               left.get_size()[1] / 2))  #left arrow
        right = img
        key_images.blit(
            right, (key_images.get_width() - font.size(instrs[3])[0] - 5 -
                    right.get_size()[0], key_images_cp[1] -
                    right.get_size()[1] / 2))  #right arrow (reflects left)
        key_images.blit(font.render(instrs[2], True, BLACK),
                        (key_images.get_width() - font.size(instrs[3])[0] + 5 -
                         right.get_size()[0], key_images_cp[1] -
                         font.size(instrs[2])[1] / 2))  #right text
        key_images.blit(
            font.render(instrs[1], True, BLACK),
            (key_images_cp[0] - font.size(instrs[1])[0] / 2, 44))  #down text
        down = pygame.transform.rotozoom(img, 270, 1)
        key_images.blit(down, (key_images_cp[0] - down.get_size()[0] / 2,
                               69 - down.get_size()[1]))  #up arrow

        #public parent container for instructions
        self.instructions = pygame.Surface((self.screen.get_width(), 115),
                                           pygame.SRCALPHA, 32)
        self.instructions.blit(
            key_images,
            (self.instructions.get_rect().center[0] - key_images_cp[0], 0))
        self.instructions.blit(
            font.render(instrs[4], True, BLACK),
            (self.instructions.get_rect().center[0] -
             font.size(instrs[4])[0] / 2, key_images.get_height() + 20))
Пример #10
0
    def print(self, lines):
        for k, line in enumerate(lines):
            if line is not None:
                self.lcd.setCursor(0, k)
                self.lcd.print(line)


## set up led
led = Pin(25, Pin.OUT)

## set up lcd display 0
display0 = Screen(0, sda=8, scl=9)
display1 = Screen(1, sda=6, scl=7)

## setup rotary angle sensors
knob0 = Knob(26)
knob1 = Knob(27)

## setup ultra-sonic distance sensor on Pin 20
sensor = UltrasonicSensor(20)

## set up servo motor
servo = Servo(16)

start = time.time()
ball_position = 0

while time.time() - start < 20:

    ball_position = sensor.get_distance_cm()
    ball_setpoint = 50*knob0.get_value()/100