Python源码示例:machine.PWM

示例1
def __init__(self):
        self.notes = {
            'cdef': [
                self.C6, self.D6, self.E6, self.F6, self.G6, self.A6, self.B6, self.C7, self.D7, self.E7, self.F7, self.G7, self.A7, self.B7, self.C8, 0
            ],
            'mario': [
                self.E7, self.E7,  0, self.E7,  0, self.C7, self.E7,  0, self.G7,  0,  0,  0, self.G6,  0,  0,  0,
                self.C7,  0,  0, self.G6,  0,  0, self.E6,  0,  0, self.A6,  0, self.B6,  0, self.AS6, self.A6, 0,
                self.G6, self.E7,  0, self.G7, self.A7,  0, self.F7, self.G7,  0, self.E7,  0, self.C7, self.D7, self.B6,  0,  0,
                self.C7,  0,  0, self.G6,  0,  0, self.E6,  0,  0, self.A6,  0, self.B6,  0, self.AS6, self.A6, 0,
                self.G6, self.E7,  0, self.G7, self.A7,  0, self.F7, self.G7,  0, self.E7,  0, self.C7, self.D7, self.B6,  0,  0
            ],
            'starwars': [
                self.A4,  0,  0,  0, self.A4,  0,  0,  0, self.A4,  0,  0,  0, self.F4,  0,  0, self.C5,
                self.A4,  0,  0,  0, self.F4,  0,  0, self.C5, self.A4,  0,  0,  0,  0,  0,  0,  0,
                self.E5,  0,  0,  0, self.E5,  0,  0,  0, self.E5,  0,  0,  0, self.F5,  0,  0, self.C5,
                self.GS4, 0,  0,  0, self.F4,  0,  0, self.C5, self.A4,  0,  0,  0,  0,  0,  0,  0,
            ],
        }

        # Init
        self.pwm = PWM(Pin(27, Pin.OUT))
        self.pwm.duty(0) 
示例2
def __init__(self):
        self.notes = {
            'cdef': [
                self.C6, self.D6, self.E6, self.F6, self.G6, self.A6, self.B6, self.C7, self.D7, self.E7, self.F7, self.G7, self.A7, self.B7, self.C8, 0
            ],
            'mario': [
                self.E7, self.E7,  0, self.E7,  0, self.C7, self.E7,  0, self.G7,  0,  0,  0, self.G6,  0,  0,  0,
                self.C7,  0,  0, self.G6,  0,  0, self.E6,  0,  0, self.A6,  0, self.B6,  0, self.AS6, self.A6, 0,
                self.G6, self.E7,  0, self.G7, self.A7,  0, self.F7, self.G7,  0, self.E7,  0, self.C7, self.D7, self.B6,  0,  0,
                self.C7,  0,  0, self.G6,  0,  0, self.E6,  0,  0, self.A6,  0, self.B6,  0, self.AS6, self.A6, 0,
                self.G6, self.E7,  0, self.G7, self.A7,  0, self.F7, self.G7,  0, self.E7,  0, self.C7, self.D7, self.B6,  0,  0
            ],
            'starwars': [
                self.A4,  0,  0,  0, self.A4,  0,  0,  0, self.A4,  0,  0,  0, self.F4,  0,  0, self.C5,
                self.A4,  0,  0,  0, self.F4,  0,  0, self.C5, self.A4,  0,  0,  0,  0,  0,  0,  0,
                self.E5,  0,  0,  0, self.E5,  0,  0,  0, self.E5,  0,  0,  0, self.F5,  0,  0, self.C5,
                self.GS4, 0,  0,  0, self.F4,  0,  0, self.C5, self.A4,  0,  0,  0,  0,  0,  0,  0,
            ],
        }

        # Init
        self.pwm = PWM(Pin(27, Pin.OUT))
        self.pwm.duty(0) 
示例3
def playnotes(self, title, length=150, duty=64):
        # Init
        p = Pin(27, Pin.OUT)
        self.pwm = PWM(p)
        self.pwm.duty(0)

        if title not in self.notes:
          print('unknown title: {}'.format(title))
          return

        melody = self.notes[title]
        print('Play', title)
        for i in melody:
            if i == 0:
                self.pwm.duty(0)
            else:
                self.pwm.freq(i)
                self.pwm.duty(duty)
            time.sleep_ms(length)

        # deinit
        self.pwm.deinit() 
示例4
def digital_write(self, payload):
        """
        Write to a digital gpio pin
        :param payload:
        :return:
        """
        pin = payload['pin']
        mode = Pin.OUT
        if 'drain' in payload:
            if not payload['drain']:
                mode = Pin.OPEN_DRAIN
        pin_object = Pin(pin, mode)
        pwm = PWM(pin_object)
        pwm.deinit()
        Pin(pin, mode, value=payload['value'])
        self.input_pin_objects[pin] = None 
示例5
def pwm_freq(self, pin: Union[int, str], freq: Optional[int] = None, **kwargs) -> Optional[int]:
        """
        Get/set the frequency of a PWM PIN.

        :param pin: GPIO PIN number or configured name.
        :param freq: If set, set the frequency for the PIN in Hz.
        :param kwargs: Parameters to pass to :meth:`platypush.plugins.esp.EspPlugin.execute`.
        """
        device = self._get_device(**kwargs)
        pin = device.get_pin(pin)
        code = '''
import machine
pin = machine.PWM(machine.Pin({pin}))
pin.freq({freq})
'''.format(pin=pin, freq=freq if freq else '')

        ret = self.execute(code, **kwargs).output
        if not freq:
            return int(ret) 
示例6
def pwm_duty(self, pin: Union[int, str], duty: Optional[int] = None, **kwargs) -> Optional[int]:
        """
        Get/set the duty cycle of a PWM PIN.

        :param pin: GPIO PIN number or configured name.
        :param duty: Optional duty value to set.
        :param kwargs: Parameters to pass to :meth:`platypush.plugins.esp.EspPlugin.execute`.
        """
        device = self._get_device(**kwargs)
        pin = device.get_pin(pin)
        code = '''
import machine
pin = machine.PWM(machine.Pin({pin}))
pin.duty({duty})
'''.format(pin=pin, duty=duty if duty else '')

        ret = self.execute(code, **kwargs).output
        if not duty:
            return int(ret) 
示例7
def pwm_on(self, pin: Union[int, str], freq: Optional[int] = None, duty: Optional[int] = None, **kwargs):
        """
        Set the specified PIN to HIGH.

        :param pin: GPIO PIN number or configured name.
        :param freq: PWM PIN frequency.
        :param duty: PWM PIN duty cycle.
        :param kwargs: Parameters to pass to :meth:`platypush.plugins.esp.EspPlugin.execute`.
        """
        device = self._get_device(**kwargs)
        pin = device.get_pin(pin)
        code = '''
import machine
pin = machine.PWM(machine.Pin({pin}))

if {freq}:
    pin.freq({freq})
if {duty}:
    pin.duty({duty})

pin.on()
'''.format(pin=pin, freq=freq, duty=duty)

        self.execute(code, **kwargs) 
示例8
def pwm_off(self, pin: Union[int, str], **kwargs):
        """
        Turn off a PWM PIN.

        :param pin: GPIO PIN number or configured name.
        :param kwargs: Parameters to pass to :meth:`platypush.plugins.esp.EspPlugin.execute`.
        """
        device = self._get_device(**kwargs)
        pin = device.get_pin(pin)
        code = '''
import machine
pin = machine.PWM(machine.Pin({pin}))
pin.deinit()
'''.format(pin=pin)

        self.execute(code, **kwargs) 
示例9
def __init__(self, idx, is_debug=False):
        
        gpio_a, gpio_b, self.motor_install_dir = Motor.MOTOR_LIST[idx]
        # A相PWM
        self.pwm_a = PWM(
            Pin(gpio_a, Pin.OUT),
            freq = Motor.MOTOR_PWM_FREQUENCY,
            duty = 0)
        
        # B相PWM
        self.pwm_b = PWM(
            Pin(gpio_b, Pin.OUT),
            freq = Motor.MOTOR_PWM_FREQUENCY,
            duty = 0)
        
        # 电机安装方向
        if not self.motor_install_dir:
            self.pwm_a, self.pwm_b = self.pwm_b, self.pwm_a
        
        # 电机速度信号 取值范围: -1023 - 1023 
        self._pwm = 0
        # 设置电机的PWM
        # self.pwm(self._pwm) 
示例10
def __init__(self, name, pin,
                 ignore_case=True, on_change=None,
                 report_change=False,
                 turn_time_ms=700,
                 freq=50, min_us=600, max_us=2400, angle=180):
        self.min_us = min_us
        self.max_us = max_us
        self.us = 0
        self.freq = freq
        self.angle = angle
        self.angle_list = None
        self.turn_time_ms = turn_time_ms
        self.turn_start = None
        Device.__init__(self, name, PWM(pin, freq=self.freq, duty=0),
                        setters={"set": self.turn}, ignore_case=ignore_case,
                        on_change=on_change, report_change=report_change)
        self._init() 
示例11
def __init__(self, name, pin,
                 ignore_case=True, on_change=None,
                 report_change=False,
                 turn_time_ms=700,
                 freq=50, min_us=600, max_us=2400, angle=180):
        self.min_us = min_us
        self.max_us = max_us
        self.us = 0
        self.freq = freq
        self.angle = angle
        self.angle_list = None
        self.turn_time_ms = turn_time_ms
        self.turn_start = None
        Device.__init__(self, name, PWM(pin, freq=self.freq, duty=0),
                        setters={"set": self.turn}, ignore_case=ignore_case,
                        on_change=on_change, report_change=report_change)
        self._init() 
示例12
def __init__(self, name, pin,
                 ignore_case=True, on_change=None,
                 report_change=False,
                 turn_time_ms=700,
                 freq=50, min_us=600, max_us=2400, angle=180):
        self.min_us = min_us
        self.max_us = max_us
        self.us = 0
        self.freq = freq
        self.angle = angle
        self.angle_list = None
        self.turn_time_ms = turn_time_ms
        self.turn_start = None
        Device.__init__(self, name, PWM(pin, freq=self.freq, duty=0),
                        setters={"set": self.turn}, ignore_case=ignore_case,
                        on_change=on_change, report_change=report_change)
        self._init() 
示例13
def __init__(self, name, pin,
                 ignore_case=True, on_change=None,
                 report_change=False,
                 turn_time_ms=700,
                 freq=50, min_us=600, max_us=2400, angle=180):
        self.min_us = min_us
        self.max_us = max_us
        self.us = 0
        self.freq = freq
        self.angle = angle
        self.angle_list = None
        self.turn_time_ms = turn_time_ms
        self.turn_start = None
        Device.__init__(self, name, PWM(pin, freq=self.freq, duty=0),
                        setters={"set": self.turn}, ignore_case=ignore_case,
                        on_change=on_change, report_change=report_change)
        self._init() 
示例14
def __init__(self, name, pin,
                 ignore_case=True, on_change=None,
                 report_change=False,
                 turn_time_ms=700,
                 freq=50, min_us=600, max_us=2400, angle=180):
        self.min_us = min_us
        self.max_us = max_us
        self.us = 0
        self.freq = freq
        self.angle = angle
        self.angle_list = None
        self.turn_time_ms = turn_time_ms
        self.turn_start = None
        Device.__init__(self, name, PWM(pin, freq=self.freq, duty=0),
                        setters={"set": self.turn}, ignore_case=ignore_case,
                        on_change=on_change, report_change=report_change)
        self._init() 
示例15
def checkInit(self):
    if self.pwm_init == False:
      self.pwm_init = True
      self.pwm = machine.PWM(machine.Pin(self.pin, value=0), freq = 1, duty = 0, timer = 2) 
示例16
def analogWrite(pin, duty):
    if pin not in _pwm_map.keys():
        try:
            _pwm_map[pin] = PWM(pin, duty=duty, timer=1)
        except:
            pass
    else:
        _pwm_map[pin].duty(duty) 
示例17
def __init__(self, port, freq=50, min_us=500, max_us=2500, angle=180):
        self.min_us = min_us
        self.max_us = max_us
        self.us = 0
        self.freq = freq
        self.angle = angle
        self.port = port    
        self.pwm = PWM(port[0], freq=freq, duty=0, timer=3) 
示例18
def __init__(self, port):
        self.tx = PWM(port[0], freq=38000, duty=0, timer=1)
        self.rx = Pin(port[1], Pin.IN)
        self.rx.init(Pin.IN)
        self.rx.irq(handler=self._irq_cb, trigger=Pin.IRQ_FALLING)
        self.rx_value = 0
        self.times = 0
        self.status = 0
        self.tx_en = 0
        self.duty = 0
        self.time_num = peripheral.get_timer()
        if self.time_num == None:
            raise unit.Unit('ir application time fail')
        self.timer = Timer(self.time_num)
        self.timer.init(period=50, mode=self.timer.PERIODIC, callback=self._update) 
示例19
def play_tone(self, payload):
        """
        Play a tone on the specified pin
        :param payload:
        :return:
        """
        beeper = PWM(Pin(payload['pin']), freq=payload['freq'], duty=512)
        utime.sleep_ms(payload['duration'])
        beeper.deinit() 
示例20
def pwm_write(self, payload):
        """
        Write a value to a PWM pin
        :param payload:
        :return:
        """
        PWM(Pin(payload['pin']), freq=500, duty=payload['value']) 
示例21
def servo_position(self, payload):
        """
        Set the servo position in degrees
        :param payload:
        :return:
        """
        position = 30 + int((payload['position'] * 0.5))
        servo = PWM(Pin(payload['pin']), freq=50, duty=position)
        utime.sleep_ms(300)
        servo.deinit() 
示例22
def digital_write(self,payload):
  pin=payload['pin']
  mode=Pin.OUT
  if 'drain' in payload:
   if not payload['drain']:
    mode=Pin.OPEN_DRAIN
  pin_object=Pin(pin,mode)
  pwm=PWM(pin_object)
  pwm.deinit()
  Pin(pin,mode,value=payload['value'])
  self.input_pin_objects[pin]=None 
示例23
def pwm_write(self,payload):
  PWM(Pin(payload['pin']),freq=500,duty=payload['value']) 
示例24
def servo_position(self,payload):
  position=30+int((payload['position']*0.5))
  servo=PWM(Pin(payload['pin']),freq=50,duty=position)
  utime.sleep_ms(300)
  servo.deinit() 
示例25
def __init__(self, led_id):
        # LED字典 
        # 数据结构: (gpio管脚编号, LED灭的电平, LED亮的电平)
        led_list = [(2, False, True),(13, True, False)]

        if led_id >= len(led_list) or led_id < 0:
            print('ERROR:LED编号无效, 有效ID:{} - {}'.format(0, len(led_list-1)))
            return None
        
        gpio_id, self.LED_OFF, self.LED_ON = led_list[led_id]
        self.pin = Pin(gpio_id, Pin.OUT)
        self.pwm = PWM(self.pin, freq=1000) 
示例26
def speed(self, value):
        value = int(value)
        if abs(value) > Motor.MOTOR_MAX_PWM:
            # 判断pwm的绝对值是否越界
            value = Motor.MOTOR_MAX_PWM if value > 0 else -1*Motor.MOTOR_MAX_PWM
        
        # 设置当前的PWM信号
        self._pwm = value
        # 驱动电机驱动
        if self._pwm >= 0:
            self.pwm_a.duty(0)
            self.pwm_b.duty(abs(self._pwm))
        else:
            self.pwm_a.duty(abs(self._pwm))
            self.pwm_b.duty(0) 
示例27
def tone(frequency, duration=100, pin=SPEAKER_PIN, volume=1):
    pwm = PWM(pin, duty=volume % 50)
    pwm.freq(frequency)
    time.sleep_ms(duration)
    pwm.deinit() 
示例28
def play_boot_music():
    speaker = PWM(Pin(25), freq=20000, duty=512)
    boot_sound = [notes.D4, 0, notes.G4, 0, notes.D4, 0, notes.A4, 0]
    for i in boot_sound:
        if i == 0:
            speaker.freq(0)
            time.sleep_ms(50)
            pass
        else:
            speaker.freq(i)
            time.sleep_ms(250)

    speaker.freq(0)
    speaker.deinit() 
示例29
def play_death():
    speaker = PWM(Pin(25), freq=20000, duty=512)
    speaker.freq(notes.D4)
    time.sleep_ms(200)
    speaker.freq(0)
    time.sleep_ms(25)
    speaker.freq(notes.A2)
    time.sleep_ms(400)
    speaker.freq(0)
    speaker.deinit() 
示例30
def play_sound( note, duration ):
    speaker = PWM(Pin(25), freq=20000, duty=512)
    speaker.freq(note)
    time.sleep_ms(duration)
    speaker.freq(0)
    speaker.deinit()

# Create an instance of Snake