树莓派GPIO控制RGB彩色LED灯-Scratch2.0-树莓派的功能之一

2019-12-01 20:01:00
key10
转贴
1675

树莓派GPIO通过PWM来控制RGB彩色LED灯,可以显示任何我们想要的颜色。

 

RGB模块简介

这个RGB彩色LED里其实有3个灯,分别是红灯、绿灯和蓝灯。控制这三个灯分别发出不同强度的光,混合起来就能发出各种颜色的光了。 LED灯上的4根引脚分别是GND,R,G,B。 GND需要接地。我们把它连到树莓派的电源地上。 R,G,B分别是红绿蓝灯的正极接口。我们把它们连接到树莓派的GPIO口上。

RGB彩色LED灯模块.jpgRGB彩色LED灯模块.jpg

硬件连接

R接到树莓派GPIO18

G连接树莓派GPIO15

B连接树莓派GPIO14

其中GPIO编号方式为BCM编号方式,具体请看

 

电路连接原理图如下:

树莓派连接RGB彩色LED灯原理图树莓派连接RGB彩色LED灯原理图

程序代码

新建RGB_LED.py文件,输入以下代码:

 
                  
                  #!/usr/bin/env python 
                  
                  # encoding: utf-8 
                  
                  import RPi
                  .GPIO 
                  
                  import time
 
R
                  ,G
                  ,B
                  =
                  
                  18
                  ,
                  
                  15
                  ,
                  
                  14 RPi
                  .GPIO
                  .setmode
                  (RPi
                  .GPIO
                  .BCM
                  )
 
RPi
                  .GPIO
                  .setup
                  (R
                  , RPi
                  .GPIO
                  .OUT
                  )
RPi
                  .GPIO
                  .setup
                  (G
                  , RPi
                  .GPIO
                  .OUT
                  )
RPi
                  .GPIO
                  .setup
                  (B
                  , RPi
                  .GPIO
                  .OUT
                  )
 
pwmR 
                  = RPi
                  .GPIO
                  .PWM
                  (R
                  , 
                  
                  50
                  )
pwmG 
                  = RPi
                  .GPIO
                  .PWM
                  (G
                  , 
                  
                  50
                  )
pwmB 
                  = RPi
                  .GPIO
                  .PWM
                  (B
                  , 
                  
                  50
                  )
 
pwmR
                  .start
                  (
                  
                  0
                  )
pwmG
                  .start
                  (
                  
                  0
                  )
pwmB
                  .start
                  (
                  
                  0
                  ) 
                  
                  try
                  :
 
    t 
                  = 
                  
                  1 
                  
                  while 
                  
                  True
                  : 
                  
                  # 红色灯全亮,蓝灯,绿灯全暗(红色) pwmR
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        pwmG
                  .ChangeDutyCycle
                  (
                  
                  0
                  )
        pwmB
                  .ChangeDutyCycle
                  (
                  
                  0
                  )
        time
                  .sleep
                  (t
                  ) 
                  
                  # 绿色灯全亮,红灯,蓝灯全暗(绿色) pwmR
                  .ChangeDutyCycle
                  (
                  
                  0
                  )
        pwmG
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        pwmB
                  .ChangeDutyCycle
                  (
                  
                  0
                  )
        time
                  .sleep
                  (t
                  ) 
                  
                  # 蓝色灯全亮,红灯,绿灯全暗(蓝色) pwmR
                  .ChangeDutyCycle
                  (
                  
                  0
                  )
        pwmG
                  .ChangeDutyCycle
                  (
                  
                  0
                  )
        pwmB
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        time
                  .sleep
                  (t
                  ) 
                  
                  # 红灯,绿灯全亮,蓝灯全暗(黄色) pwmR
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        pwmG
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        pwmB
                  .ChangeDutyCycle
                  (
                  
                  0
                  )
        time
                  .sleep
                  (t
                  ) 
                  
                  # 红灯,蓝灯全亮,绿灯全暗(洋红色) pwmR
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        pwmG
                  .ChangeDutyCycle
                  (
                  
                  0
                  )
        pwmB
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        time
                  .sleep
                  (t
                  ) 
                  
                  # 绿灯,蓝灯全亮,红灯全暗(青色) pwmR
                  .ChangeDutyCycle
                  (
                  
                  0
                  )
        pwmG
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        pwmB
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        time
                  .sleep
                  (t
                  ) 
                  
                  # 红灯,绿灯,蓝灯全亮(白色) pwmR
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        pwmG
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        pwmB
                  .ChangeDutyCycle
                  (
                  
                  100
                  )
        time
                  .sleep
                  (t
                  ) 
                  
                  except KeyboardInterrupt
                  : 
                  
                  pass pwmR
                  .stop
                  (
                  )
pwmG.stop()
pwmB.stop()
 
RPi.GPIO.cleanup() 
Python

然后,运行这个py脚本,就可以看到RGBLED灯在7种颜色间切换。

百度统计