예제 #1
0
    def getTemper(self):
        """
        获取温度

        :return: 温度,单位摄氏度
        """
        _pin = MPythonPin(self.pin, PinMode.ANALOG)
        val = _pin.read_analog()
        return 1 / (math.log(4095 / val - 1) / 3935 + 1 / 298) - 273
예제 #2
0
    def getTemper(self):
        """
        获取温度

        :return: 温度,单位摄氏度
        """
        _pin = MPythonPin(self.pin, PinMode.ANALOG)
        val = _pin.read_analog()
        return val / 4 * (3 / 10.24)
예제 #3
0
    def getVal(self):
        """
        获取按键

        :return: 返回按键,值可以是'A','B','C','D',无按键按下'None'.
        """
        _pin = MPythonPin(self.pin, PinMode.ANALOG)
        val = _pin.read_analog()
        btn = None
        if val < 100:
            btn = 'A'
        elif val > 600 and val < 1023:
            btn = 'B'
        elif val > 1700 and val < 2048:
            btn = 'C'
        elif val > 2700 and val < 3200:
            btn = 'D'
        return btn
예제 #4
0
class MicroBitPin:
    IN = 1
    OUT = 2
    PWM = 3
    ANALOG = 4

    def __init__(self, id):
        self.id = id
        self.current_mode = None
        self.mpython_pin = None

    def __change_pin_mode(self, pinmode):
        if self.current_mode is not pinmode:
            self.mpython_pin = MPythonPin(self.id, mode=pinmode)
            if pinmode == MicroBitPin.ANALOG:
                self.mpython_pin.adc.width(ADC.WIDTH_10BIT)
            self.current_mode = pinmode

    def read_digital(self):
        self.__change_pin_mode(MicroBitPin.IN)
        return self.mpython_pin.read_digital()

    def write_digital(self, value):
        self.__change_pin_mode(MicroBitPin.OUT)
        self.mpython_pin.write_digital(value)

    def read_analog(self):
        self.__change_pin_mode(MicroBitPin.ANALOG)
        return self.mpython_pin.read_analog()

    def write_analog(self, value):
        self.__change_pin_mode(MicroBitPin.PWM)
        self.mpython_pin.write_analog(value)

    def set_analog_period(period):
        #TODO
        pass

    def set_analog_period_microseconds(period):
        #TODO
        pass