用树莓派实现RGB LED的颜色控制——Python版本

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

Python代码:

#!/usr/bin/env python
#*********************************************************
#	File Name :rgb.py
#	Author    :Jason Dai
#	Date      : 2015/02/04
#*********************************************************
import RPi.GPIO as GPIO
import time

colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0xFF00FF, 0x00FFFF, 0xFFFFFF, 0x9400D3]
pins = {'pin_R':11, 'pin_G':12, 'pin_B':13}  # pins is a dict

GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
for i in pins:
	GPIO.setup(pins[i], GPIO.OUT)   # Set pins' mode is output
	GPIO.output(pins[i], GPIO.HIGH) # Set pins to high(+3.3V) to off led

p_R = GPIO.PWM(pins['pin_R'], 2000)  # set Frequece to 2KHz
p_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_min

def setColor(col):   # For example : col = 0x112233
	R_val = (col & 0xFF0000) >> 16
	G_val = (col & 0x00FF00) >> 8
	B_val = (col & 0x0000FF) >> 0

	R_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 cycle
	p_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 leds
	GPIO.cleanup()

运行程序:

python rgb.py
时间: 2024-10-10 09:19:31

用树莓派实现RGB LED的颜色控制——Python版本的相关文章

用树莓派实现RGB LED的颜色控制——C语言版本号

用树莓派实现RGB LED的颜色控制  RGB色彩模式是工业界的一种颜色标准.是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代 表红.绿.蓝三个通道的颜色.这个标准差点儿包含了人类视力所能感知的全部颜色,是眼下运用最广的颜色系统之中的一个.RGB色彩模式使用RGB模型为图像中每个像素的RGB分量分配一个0~255范围内的强度值. RGB图像仅仅使用三种颜色.就能够使它们依照不同的比例混合,从而得到各种各样的颜色. 在实际的控制中.往

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

用树莓派实现RGB LED的颜色控制  RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代 表红.绿.蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一.RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0~255范围内的强度值.RGB图像只使用三种颜色,就可以使它们按照不同的比例混合,从而得到各种各样的颜色. 在实际的控制中,往往通过PW

共阳极RGB LED二极管

1)RGB LED二极管有四个引脚,它把3个普通led被封装在其内部,这三个led颜色分别为红.绿.蓝三种颜色,通过控制各个LED的亮度,你可以混合出几乎任何你想要的颜色,如下图: 2)RGB LED也分共阴极和共阳极. 共阴极:把所有负极端全部接一块接负极,即公共端为负极. 共阳极:把所有正极端全部接一块接正极,即公共端为正极. 3)共阳极RGB LED  : R.G.B这三个脚分别引出接负极,这三脚之外的第四脚为公共端接正极(阳极).如下图: 由图可看出共阳RGB LED共有4个引脚,常见的

MATLAB画图surf函数颜色控制参数c用法

专业今年开了MATLAB的课程(土木工程学MATLAB?),老师给出了保过题,为了不挂科也是苦逼百度+谷歌了半天,加上自己的琢磨,总算是明白些surf颜色控制方法了,在这里分享记录一下~初学matlab,理解的不是太深,望海涵. 题目 从excel中读取粒子,这些粒子具有三维的坐标,xyz,并且具有三维的速度,excel中的每一页内存储一个时间点的例子信息,x,y,z,vx,vy,vz,页的命名为sheet+i,希望能够先读取粒子信息到向量当中,然后粒子的位置进行图像显示,粒子采用球体进行显示,

HTML连载15-文本属性&颜色控制属性

一.文本装饰的属性 1.格式:text-decoration:underline; 2.取值: (1)underline代表下划线 (2)line-through代表删除线 (3)overline代表上划线 (4)none代表什么格式都没有(默认是这个属性) 注意:none的大多数用处在我们使用a标签的时候,可以用来去掉超级连接的下划线,可见下方演示 <head> <meta charset="UTF-8"> <title>Title</tit

STM32F1-workarea : how to drive a WS2812 RGB LED using PWM and DMA

how to drive a WS2812 RGB LED using PWM and DMA #include <stm32f10x.h> void Delay(__IO uint32_t nCount) { while(nCount--) { } } #define TIM3_CCR1_Address 0x40000434 // physical memory address of Timer 3 CCR1 register #define d2r (3.14159265/180) TIM

锐浪 报表, 当多行交叉报表时,对多行交叉报表中自由格中的多个字段控件,进行颜色控制. 取值 判断等实现

需要注意的点是: 1 . 要对自由格中对应的 字段框的背景填充方式改为:填充,否则没有效果. 2 . 代码中红色部门代码: Column 为明细网络对象属性中的 列集合 中的 交叉列的 名称,  Report.RunningDetailGrid.Columns.Item("Column_2") 3.  蓝色部门 为自由格中 控件的索引位置 ,也可以根据字段框的名称来进行控制如:  contentCell.Controls.Item("FieldBox8") 代码如下

Silverlight DataGrid数据行背景颜色控制

sdk:DataGrid数据绑定后,部分特殊的行需要用不同的背景颜色来显示.(注册DataGrid的LoadingRow事件) 1 private void radGridView_LoadingRow(object sender, DataGridRowEventArgs e) 2 { 3 4 //获取当前加载的行标(从0开始) 5 int i = e.Row.GetIndex(); 6 7 //获取DataGrid绑定的数据集合 8 ObservableCollection<CntrMstM

D3.js绘制 颜色:RGB、HSL和插值 (V3版本)

颜色和插值 计算机中的颜色,常用的标准有RGB和HSL. RGB:色彩模式是通过对红(Red).绿(Green).蓝(Blue)三个颜色通道相互叠加来得到额各式各样的颜色.三个通道的值得范围都是0~255,因此总共能表示16777216(255*255*255)种,即一千六百多万种颜色.几乎包括了人类所能识别的所有颜色,是应用最广泛的色彩模式. HSL:色彩模式是通过色相(Hue).饱和度(Saturation).明度(Lightness)三个通道的相互叠加来得到各种颜色的.其中,色相的范围为0