Слияние кода завершено, страница обновится автоматически
# RGB pwm灯控制类
# 需要了解RPi.GPIO的使用方法可以查看《RPi.GPIO使用手册》
# RPi.GPIO官网:https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/
import RPi.GPIO as GPIO
class RGB_light(object):
# GPIO_mode:引脚编号系统方式(GPIO.BCM、GPIO.BOARD)
# LED_mode:LED共阳为1、共阴为0
def __init__(self, GPIO_mode, LED_mode, red_channel, green_channel, blue_channel):
self.__LED_mode = LED_mode
GPIO.setmode(GPIO_mode)
GPIO.setwarnings(False)
GPIO.setup([red_channel, green_channel, blue_channel], GPIO.OUT)
self.__red_pwm = GPIO.PWM(red_channel, 100)
self.__green_pwm = GPIO.PWM(green_channel, 100)
self.__blue_pwm = GPIO.PWM(blue_channel, 100)
if self.__LED_mode == 1:
self.__red_pwm.start(100)
self.__green_pwm.start(100)
self.__blue_pwm.start(100)
else:
self.__red_pwm.start(0)
self.__green_pwm.start(0)
self.__blue_pwm.start(0)
self.__red = 0
self.__green = 0
self.__blue = 0
# 常用颜色
self.RED = 0xff0000
self.GREEN = 0x00ff00
self.BLUE = 0x0000ff
self.YELLOW = 0xffff00
self.WHITE = 0xffffff
self.PINK = 0xffc0cb
self.GOLD = 0xffd700
self.CYAN = 0x00ffff
self.SKYBLUE = 0x87ceeb
self.ORANGE = 0xffa500
# 0 <= rgb <= 0xffffff
def set_rgb(self, rgb):
self.__red = (rgb & 0xff0000) >> 16
self.__green = (rgb & 0x00ff00) >> 8
self.__blue = rgb & 0x0000ff
self.start()
# 0 <= red <= 255
def set_red(self, red):
self.__red = red
self.start()
# 0 <= green <= 255
def set_green(self, green):
self.__green = green
self.start()
# 0 <= blue <= 255
def set_blue(self, blue):
self.__blue = blue
self.start()
def get_rgb(self):
rgb = (self.__red << 16) | (self.__green << 8) | self.__blue
return hex(rgb)
def get_red(self):
return self.__red
def get_green(self):
return self.__green
def get_blue(self):
return self.__blue
def start(self):
if self.__LED_mode == 1:
self.__red_pwm.start((255 - self.__red) / 255.0 * 100)
self.__green_pwm.start((255 - self.__green) / 255.0 * 100)
self.__blue_pwm.start((255 - self.__blue) / 255.0 * 100)
else:
self.__red_pwm.start(self.__red / 255.0 * 100)
self.__green_pwm.start(self.__green / 255.0 * 100)
self.__blue_pwm.start(self.__blue / 255.0 * 100)
def stop(self):
if self.__LED_mode == 1:
self.__red_pwm.start(100)
self.__green_pwm.start(100)
self.__blue_pwm.start(100)
else:
self.__red_pwm.start(0)
self.__green_pwm.start(0)
self.__blue_pwm.start(0)
############################
## 举例 ##
import time
test = RGB_light(GPIO.BOARD, 1, 33, 35, 37)
test.set_rgb(test.WHITE)
time.sleep(2)
test.set_red(20)
time.sleep(2)
test.set_green(20)
time.sleep(2)
test.set_blue(20)
time.sleep(2)
test.stop()
time.sleep(2)
test.start()
time.sleep(2)
test.set_rgb(test.GOLD)
print(test.get_rgb())
time.sleep(2)
GPIO.cleanup()
############################
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )