更改

杨晨-2018013294-2021A-M08-92-WW8

添加68字节2021年11月2日 (二) 03:30
3. RGB LED三色灯的程序(书52页)经过漫长debug后终于成功运行,主要的问题有:小括号中括号不分,大小写不分,缺失关键语句等等。运行的语句为:python RGB-yc.py。最终成功的程序如下:
*Python版本
import RPi.GPIO as GPIO
import time
colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0xFF00FF, 0x00FFFF]
makerobo_R = 11
makerobo_G = 12
makerobo_B = 13
def makerobo_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)
GPIO.setwarnings(False)
for i in pins:
GPIO.setup(pins[i], GPIO.OUT)
GPIO.output(pins[i], GPIO.LOW)
p_R = GPIO.PWM(pins['pin_R'],2000)
p_G = GPIO.PWM(pins['pin_G'],1999)
p_B = GPIO.PWM(pins['pin_B'],5000)
p_R.start(0)
p_G.start(0)
p_B.start(0)
def makerobo_pwm_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 makerobo_off():
GPIO.setmode (GPIO.BOARD)
for i in pins:
GPIO.setup(pins[i], GPIO.OUT)
GPIO.output(pins[i], GPIO.LOW)
def makerobo_set_Color(col):
R_val = (col & 0xff0000) >> 16
G_val = (col & 0x00ff00) >> 8
B_val = (col & 0x0000ff) >> 0
import RPi.GPIO as GPIOimport timecolors R_val = [0xFF0000makerobo_pwm_map (R_val, 0x00FF000, 0x0000FF255, 0xFFFF000, 0xFF00FF, 0x00FFFF]makerobo_R = 11makerobo_G = 12makerobo_B = 13def makerobo_setup (Rpin, Gpin, Bpin100): global pins global p_R, p_G, p_B pins G_val = {'pin_R':Rpin, 'pin_G':Gpin,'pin_B':Bpin} GPIO.setmodemakerobo_pwm_map (GPIO.BOARD) GPIO.setwarnings(False) for i in pins: GPIO.setup(pins[i]G_val, GPIO.OUT) GPIO.output(pins[i]0, GPIO.LOW) p_R = GPIO.PWM(pins['pin_R']255,2000) p_G = GPIO.PWM(pins['pin_G']0,1999100) p_B B_val = GPIO.PWMmakerobo_pwm_map (pins['pin_B']B_val,5000) p_R.start(0) p_G.start(0) p_B.start(0)def makerobo_pwm_map(x, in_min255, in_max0, out_min, out_max100): return (x-in_min)*(out_max - out_min) / (in_max -in_min) + out_mindef makerobo_off(): GPIO.setmode (GPIO.BOARD) for i in pins: GPIO.setup(pins[i], GPIO.OUT) GPIO.output(pins[i], GPIO.LOW)def makerobo_set_Color(col): R_val = (col & 0xff0000) >> 16 G_val = (col & 0x00ff00) >> 8 B_val = (col & 0x0000ff) >> 0
R_val = makerobo_pwm_map (R_val, 0, 255, 0, 100) G_val = makerobo_pwm_map (G_val, 0, 255, 0, 100) B_val = makerobo_pwm_map (B_val, 0, 255, 0, 100)  p_R.ChangeDutyCycle(100-R_val) p_G.ChangeDutyCycle(100-G_val) p_B.ChangeDutyCycle(100-B_val) def makerobo_loop(): while True: for col in colors: makerobo_set_Color(col) time.sleep(1) def makerobo_destoy(): p_R.stop() p_G.stop() p_B.stop() makerobo_off() GPIO.cleanup() if __name__ == "__main__": try: makerobo_setup(makerobo_R, makerobo_G, makerobo_B) makerobo_loop() except KeyboardInterrupt: makerobo_destroy()
70
个编辑