当前位置:   article > 正文

树莓派C语言点灯,树莓派学习基础实验——————RGB LED灯实验

树莓派 点亮一个灯 的接线法

一、实验接线图

44bb14c68a81e55ec3a28707d61f6ec4.png

二、案例程序

c语言

#include

#include

#include

#define uchar unsigned char

#define LedPinRed 0

#define LedPinGreen 1

#define LedPinBlue 2

void ledInit(void)

{

softPwmCreate(LedPinRed, 0, 100);

softPwmCreate(LedPinGreen,0, 100);

softPwmCreate(LedPinBlue, 0, 100);

}

void ledColorSet(uchar r_val, uchar g_val, uchar b_val)

{

softPwmWrite(LedPinRed, r_val);

softPwmWrite(LedPinGreen, g_val);

softPwmWrite(LedPinBlue, b_val);

}

int main(void)

{

int i;

if(wiringPiSetup() == -1){ //when initialize wiring failed, print message to screen

printf("setup wiringPi failed !");

return 1;

}

//printf("linker LedPin : GPIO %d(wiringPi pin)\n",LedPin); //when initialize wiring successfully,print message to screen

ledInit();

while(1){

ledColorSet(0xff,0x00,0x00); //red

delay(500);

ledColorSet(0x00,0xff,0x00); //green

delay(500);

ledColorSet(0x00,0x00,0xff); //blue

delay(500);

ledColorSet(0xff,0xff,0x00); //yellow

delay(500);

ledColorSet(0xff,0x00,0xff); //pick

delay(500);

ledColorSet(0xc0,0xff,0x3e);

delay(500);

ledColorSet(0x94,0x00,0xd3);

delay(500);

ledColorSet(0x76,0xee,0x00);

delay(500);

ledColorSet(0x00,0xc5,0xcd);

delay(500);

}

return 0;

}

python

#!/usr/bin/env python

import RPi.GPIO as GPIO

import time

colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0xFF00FF, 0x00FFFF]

R = 11

G = 12

B = 13

def setup(Rpin, Gpin, Bpin):

global pins

global p_R, p_G, p_B

pins = {'pin_R': Rpin, 'pin_G': Gpin, 'pin_B': Bpin}

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'], 1999)

p_B = GPIO.PWM(pins['pin_B'], 5000)

p_R.start(100) # Initial duty Cycle = 0(leds off)

p_G.start(100)

p_B.start(100)

def map(x, in_min, in_max, out_min, out_max):

return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min

def off():

for i in pins:

GPIO.output(pins[i], GPIO.HIGH) # Turn off all leds

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)

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)

def loop():

while True:

for col in colors:

setColor(col)

time.sleep(1)

def destroy():

p_R.stop()

p_G.stop()

p_B.stop()

off()

GPIO.cleanup()

if __name__ == "__main__":

try:

setup(R, G, B)

loop()

except KeyboardInterrupt:

destroy()

三、试验成功图

f293e1d8f5b23643bd19a33fb94b2546.png

四、七色LED灯

ea6746f51bca11b598104910af08fbd1.png

标签:树莓,ledColorSet,LED,val,0x00,实验,pins,GPIO,100

来源: https://blog.csdn.net/zz619333126/article/details/100897465

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/699011
推荐阅读
相关标签
  

闽ICP备14008679号