用树莓派实现RGB LED的颜色控制

电路连接方式请参考另一篇博文:【用树莓派实现RGB LED的颜色控制——C语言版本】

Python代码:

#!/usr/bin/env python#*********************************************************#File Name :rgb.py#Author :Jason Dai#Date: 2015/02/04#*********************************************************import RPi.GPIO as GPIOimport timecolors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0xFF00FF, 0x00FFFF, 0xFFFFFF, 0x9400D3]pins = {'pin_R':11, 'pin_G':12, 'pin_B':13} # pins is a dictGPIO.setmode(GPIO.BOARD)# Numbers GPIOs by physical locationfor i in pins:GPIO.setup(pins[i], GPIO.OUT) # Set pins' mode is outputGPIO.output(pins[i], GPIO.HIGH) # Set pins to high(+3.3V) to off ledp_R = GPIO.PWM(pins['pin_R'], 2000) # set Frequece to 2KHzp_G = GPIO.PWM(pins['pin_G'], 2000)p_B = GPIO.PWM(pins['pin_B'], 5000)p_R.start(100)# Initial duty Cycle = 100(leds off)p_G.start(100)p_B.start(100)def map(x, in_min, in_max, out_min, out_max): # 将一个数从一个区间线性映射到另一个区间,比如将0~100之间的一个数映射到0~255之间return (x – in_min) * (out_max – out_min) / (in_max – in_min) + out_mindef setColor(col): # For example : col = 0x112233R_val = (col & 0xFF0000) >> 16G_val = (col & 0x00FF00) >> 8B_val = (col & 0x0000FF) >> 0R_val = map(R_val, 0, 255, 0, 100) # change a num(0~255) to 0~100.G_val = map(G_val, 0, 255, 0, 100)B_val = map(B_val, 0, 255, 0, 100)p_R.ChangeDutyCycle(100 – R_val)# Change duty cyclep_G.ChangeDutyCycle(100 – G_val)p_B.ChangeDutyCycle(100 – B_val)try:while True:for col in colors:setColor(col)time.sleep(0.5)except KeyboardInterrupt:p_R.stop()p_G.stop()p_B.stop()for i in pins:GPIO.output(pins[i], GPIO.HIGH) # Turn off all ledsGPIO.cleanup()运行程序:

python rgb.py

,有人要进来,有一些人不得不离开。

用树莓派实现RGB LED的颜色控制

相关文章:

你感兴趣的文章:

标签云: