示例#1
0
class Motor:
    def __init__(self, pin1, pin2, kind='dc'):
        self.kind = kind
        if kind == 'dc' or kind == 'step':
            self.left = Pin(pin1, Pin.OUT)
            self.right = Pin(pin2, Pin.OUT)
        elif kind == 'servo':
            self.left = PWM(Pin(pin1), freq=50, duty=77)
            self.right = None
        else:
            raise ()

    def main(self, v1, v2, wtime=5):
        if self.kind == 'dc' or self.kind == 'step':
            self.left.value(v1)
            self.right.value(v0)

        elif self.kind == 'servo':
            self.left.duty()

        time.sleep(wtime)

    def __del__(self):
        if self.kind == 'dc' or self.kind == 'step':
            self.main(0, 0)
示例#2
0
class GPIO():
	def __init__(self,pin,pulse=0):
		self.pin = pin
		self.pulse = pulse
		if pulse == 0:
			self.pin=Pin(self.pin,Pin.OUT)
			self.pin.value(0)
		elif pulse == 1:
			self.pin=PWM(Pin(self.pin),Pin.OUT)
			self.pin.freq(500)
               
        def on(self):
                self.pin.value(1)

        def off(self):
                self.pin.value(0)

        def toggle(self):
		self.pin.value(not self.pin.value())

	def repeat(self,n,t=0.5):
		for i in range(n):
			self.toggle()
			time.sleep(t)
		self.off()

	def scale(self,n):
                if n > 100:
                        n = 100
                elif n < 0:
                        n = 0
                percent = n*10
		self.pin.duty(percent)
		return (percent)

	def fade_in(self,step=5,t=0.1):
                for i in range(0,100,step):
                        self.scale(i)
                        time.sleep(t)
        def fade_out(self,step=5, t=0.1):
                for i in range(0,100,step):
                        self.scale(100-i)
                        time.sleep(t)
                self.scale(0)

        def help():
                print("")
                print("Cheat Sheet Wemos D1 Mini")
                print("-------------------------")
                print("                   ____________")
                print("                  /            |")
                print("             RST-|         =   |- TX")
                print("              A0-|   ESP8266   |- RX")
                print("NO PWM GPIO16 D0-|         SCL-|- D1 GPIO5")
                print("       GPIO14 D5-|-SCK     SDA-|- D2 GPIO4")
                print("       GPIO12 D6-|-MISO        |- D3 GPIO0 PullUp")
                print("       GPIO13 D7-|-MOSI        |- D4 GPIO2 PullUp Built-in Led")
                print("PullDn GPIO15 D8-|             |- G")
                print("             3v3-|_____________|- 5V")
                print("")
class PWMLight(DimmableLight):
    def __init__(self, server, pin, freq=1000):
        super().__init__(server, 'light-' + str(uid), \
                         self.get_state, self.set_state, \
                         self.get_level, self.set_level)
        if pin in pwm_pins:
            self.dimmable = True
            self._pin = PWM(GPIO(pin), freq=freq, duty=0)
        else:
            self.dimmable = False

    def get_state(self):
        return self._pin.value(), 0

    def set_state(self, state):
        if state == 'on' or state == '1' or state == 'True':
            self._pin.on()
            return True, 0
        else:
            self._pin.off()
            return False, 0

    def get_level(self):
        return self._pin.duty(), 0

    def set_level(self, level):
        #convert brightness from percent (0 - 100) to duty (0 - 1023)
        duty = round(1023 * (int(brightness)/100))
        self._pin.duty(duty)
        return level, 0
示例#4
0
class GPIO():
	def __init__(self,pin,pulse=0):
		self.pin = pin
		self.pulse = pulse
		if pulse == 0:
			self.pin=Pin(self.pin,Pin.OUT)
			self.pin.value(0)
		elif pulse == 1:
			self.pin=PWM(Pin(self.pin),Pin.OUT)
			self.pin.freq(500)

        def on(self):
                self.pin.value(1)

        def off(self):
                self.pin.value(0)

	def repeat(self,n,t=0.5):
		for i in range(n):
			self.pin.value(1)
			time.sleep(t)
			self.pin.value(0)
			time.sleep(t)

	def scale(self,n):
                if n > 100:
                        n = 100
                elif n < 0:
                        n = 0
                percent = n*10
		self.pin.duty(percent)
                        

        def help():
                print("Cheat Sheet")
                print("---------------------------------------")
                print("D0 IO                           GPIO16")
                print("D1 IO SCL                       GPIO5")
                print("D2 IO SDA                       GPIO4")
                print("D3 IO 10k Pull Up               GPIO0")
                print("D4 IO 10k Pull Up, Built-in Led GPIO2")
                print("D5 IO SCK                       GPIO14")
                print("D6 IO MISO                      GPIO12")
                print("D7 IO MOSI                      GPIO13")
                print("D8 IO 10k Pull Down             GPIO15")
                print("All Pins have PWM except D0")
示例#5
0
class LED_a():
    isPWMinit = False

    def __init__(self, pin, freq=1000):
        self.pin = pin
        self.freq = freq
        self.led = Pin(self.pin, Pin.OUT)
        self.led.value(1)

    def deinit(self):
        if self.isPWMinit:
            self.led.deinit()
            self.isPWMinit = False
            self.led = Pin(self.pin, Pin.OUT)
            self.led.value(1)

    def brightness(self, value=None):
        if value == None:
            if self.isPWMinit:
                return 255 - (self.led.duty() >> 2)
            else:
                return (self.led.value() + 1) % 2
        elif value >= 255:
            value = 255
            self.on()
        elif value <= 0:
            value = 0
            self.off()
        else:
            if not self.isPWMinit:
                self.led = PWM(Pin(self.pin), self.freq)
                self.led.init()
                self.isPWMinit = True
            self.led.duty(((256 - value) << 2) - 1)

    def fade_up(self, delay=5):
        # pwmIntervals = 100
        # R = (pwmIntervals * math.log10(2))/(math.log10(255));
        # for i in range(pwmIntervals):
        # led_red.brightness(int(math.pow(2, (i / R)) - 1))
        # time.sleep_ms(t)
        for i in range(100):
            self.brightness(int(sin((i - 50) / 100 * pi) * 128 + 128))
            sleep_ms(delay)

    def fade_down(self, delay=5):
        for i in range(100):
            self.brightness(int(sin((i + 50) / 100 * pi) * 128 + 127))
            sleep_ms(delay)

    def pulse(self, delay=5):
        self.fade_up(delay)
        self.fade_down(delay)

    def on(self):
        self.deinit()
        self.led.value(0)

    def off(self):
        self.deinit()
        self.led.value(1)

    def toggle(self):
        self.deinit()
        self.led.value((self.led.value() + 1) % 2)
示例#6
0
class LED():
    isPWMinit = False

    def __init__(self, pin, freq=1000):
        self.pin = pin
        self.freq = freq
        self.led = Pin(self.pin, Pin.OUT)
        #self.pwmIntervals = 255
        #self.R = self.pwmIntervals /log(1023)            #R = 36.79391

    def deinit(self):
        if self.isPWMinit:
            self.led.deinit()
            self.isPWMinit = False
            self.led = Pin(self.pin, Pin.OUT)
            self.led.value(1)

    def brightness(self, value=None):
        if value == None:
            if self.isPWMinit:
                return (self.led.duty() >> 2)
            else:
                return self.led.value()
        elif not 0 <= value <= 255:
            raise ValueError("Brightness out of range")
        else:
            if not self.isPWMinit:
                self.led = PWM(Pin(self.pin), self.freq)
                self.led.init()
                self.isPWMinit = True
            self.led.duty(value << 2)

            # Next Line was inspired by
            # https://diarmuid.ie/blog/pwm-exponential-led-fading-on-arduino-or-other-platforms/
            # but i dropped it because it doesn't look better than linear fading for me.
            #self.led.duty(int(exp(   (value / 36.79391)) - 1))
            # Next Line was inspired by this post:
            # https://electronics.stackexchange.com/a/11100
            # but it looked even worse
            #self.led.duty(int(1 / (1 + exp( ((value / 21) -6) * -1)) * 1024))

    def fade_up(self, delay=5):
        for i in range(100):
            self.brightness(int(sin((i - 50) / 100 * pi) * 128 + 128))
            sleep_ms(delay)

    def fade_down(self, delay=5):
        for i in range(100):
            self.brightness(int(sin((i + 50) / 100 * pi) * 128 + 127))
            sleep_ms(delay)

    def pulse(self, delay=5):
        self.fade_up(delay)
        self.fade_down(delay)

    def on(self):
        self.deinit()
        self.led.value(1)

    def off(self):
        self.deinit()
        self.led.value(0)

    def toggle(self):
        self.deinit()
        self.led.value((self.led.value() + 1) % 2)