(以“学习笔记 * 无序列表项”为内容创建页面) |
|||
第1行: | 第1行: | ||
学习笔记 | 学习笔记 | ||
− | * | + | * RGB LED灯实验 |
+ | 编码颜色、变化频率、亮度制造闪烁五彩灯的效果 | ||
+ | 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.setuo(pins[i], GPIO.OUT) | ||
+ | GPIO.putput(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(0.1) | ||
+ | |||
+ | def makerobo_destroy(): | ||
+ | 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() | ||
+ | |||
+ | * 轻触按键模块 | ||
+ | 轻触按键模块内部有一个轻触拨盘,当按下轻触按键的时候输出低电平,当松开轻触按键的时候保持高电平,通过LED的颜色判断轻触按键的工作状态 | ||
+ | import RPi.GPIO as GPIO | ||
+ | makerobo_BtnPin=11 | ||
+ | makerobo_Rpin=12 | ||
+ | makerobo_Gpin=13 | ||
+ | def makerobo_setup(): | ||
+ | GPIO.setmode(GPIO.BOARD) | ||
+ | GPIO.setwarnings(False) | ||
+ | GPIO.setup(makerobo_Rpin,GPIO.OUT) | ||
+ | GPIO.setup(makerobo_Gpin,GPIO.OUT) | ||
+ | GPIO.setup(makerobo_BtnPin,GPIO.IN,pull_up_down=GPIO.PUD_UP) | ||
+ | GPIO.add_event_detect(makerobo_BtnPin,GPIO.BOTH,callback=makerobo_detect,bouncetime=200) | ||
+ | |||
+ | def double_colorLED(x): | ||
+ | if x==0: | ||
+ | GPIO.output(makerobo_Rpin,1) | ||
+ | GPIO.output(makerobo_Gpin,0) | ||
+ | if x==1: | ||
+ | GPIO.output(makerobo_Rpin,0) | ||
+ | GPIO.output(makerobo_Gpin,1) | ||
+ | |||
+ | def makerobo_Print(x): | ||
+ | if x==0: | ||
+ | print('HELLO WORLD') | ||
+ | |||
+ | def makerobo_detect(chn): | ||
+ | double_colorLED(GPIO.input(makerobo_BtnPin)) | ||
+ | makerobo_Print(GPIO.input(makerobo_BtnPin)) | ||
+ | |||
+ | def makerobo_loop(): | ||
+ | while True: | ||
+ | pass | ||
+ | |||
+ | def makerobo_destroy(): | ||
+ | GPIO.output(makerobo_Gpin,GPIO.LOW) | ||
+ | GPIO.output(makerobo_Rpin,GPIO.LOW) | ||
+ | GPIO.cleanup() | ||
+ | |||
+ | if __name__=="__main__": | ||
+ | makerobo_setup() | ||
+ | try: | ||
+ | makerobo_loop() | ||
+ | except KeyboardInterrupt: | ||
+ | makerobo_destroy() | ||
+ | |||
+ | *声控台灯 | ||
+ | 通过快速产品化平台http://www.smartpi.cn/#/SdkVersionList制作语音SDK,实现声控台灯。 | ||
+ | import RPi.GPIO as GPIO | ||
+ | import time | ||
+ | GPIO.setmode(GPIO.BCM) | ||
+ | GPIO.setup(25,GPIO.IN) | ||
+ | GPIO.setup(26,GPIO.IN) | ||
+ | GPIO.setup(5,GPIO.OUT) | ||
+ | GPIO.setup(6,GPIO.OUT) | ||
+ | while True: | ||
+ | input1=GPIO.input(25) | ||
+ | input2=GPIO.input(26) | ||
+ | if(input1==True): | ||
+ | GPIO.output(5,GPIO.HIGH) | ||
+ | else: | ||
+ | GPIO.output(5,GPIO.LOW) | ||
+ | if(input2==True): | ||
+ | GPIO.output(6,GPIO.HIGH) | ||
+ | else: | ||
+ | GPIO.output(6,GPIO.LOW) |
2021年11月1日 (一) 06:49的最后版本
学习笔记
- RGB LED灯实验
编码颜色、变化频率、亮度制造闪烁五彩灯的效果
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.setuo(pins[i], GPIO.OUT) GPIO.putput(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(0.1) def makerobo_destroy(): 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()
- 轻触按键模块
轻触按键模块内部有一个轻触拨盘,当按下轻触按键的时候输出低电平,当松开轻触按键的时候保持高电平,通过LED的颜色判断轻触按键的工作状态
import RPi.GPIO as GPIO makerobo_BtnPin=11 makerobo_Rpin=12 makerobo_Gpin=13 def makerobo_setup(): GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup(makerobo_Rpin,GPIO.OUT) GPIO.setup(makerobo_Gpin,GPIO.OUT) GPIO.setup(makerobo_BtnPin,GPIO.IN,pull_up_down=GPIO.PUD_UP) GPIO.add_event_detect(makerobo_BtnPin,GPIO.BOTH,callback=makerobo_detect,bouncetime=200) def double_colorLED(x): if x==0: GPIO.output(makerobo_Rpin,1) GPIO.output(makerobo_Gpin,0) if x==1: GPIO.output(makerobo_Rpin,0) GPIO.output(makerobo_Gpin,1)
def makerobo_Print(x): if x==0: print('HELLO WORLD') def makerobo_detect(chn): double_colorLED(GPIO.input(makerobo_BtnPin)) makerobo_Print(GPIO.input(makerobo_BtnPin)) def makerobo_loop(): while True: pass def makerobo_destroy(): GPIO.output(makerobo_Gpin,GPIO.LOW) GPIO.output(makerobo_Rpin,GPIO.LOW) GPIO.cleanup()
if __name__=="__main__": makerobo_setup() try: makerobo_loop() except KeyboardInterrupt: makerobo_destroy()
- 声控台灯
通过快速产品化平台http://www.smartpi.cn/#/SdkVersionList制作语音SDK,实现声控台灯。
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(25,GPIO.IN) GPIO.setup(26,GPIO.IN) GPIO.setup(5,GPIO.OUT) GPIO.setup(6,GPIO.OUT) while True: input1=GPIO.input(25) input2=GPIO.input(26) if(input1==True): GPIO.output(5,GPIO.HIGH) else: GPIO.output(5,GPIO.LOW) if(input2==True): GPIO.output(6,GPIO.HIGH) else: GPIO.output(6,GPIO.LOW)