徐于涵-2019012610-2021A-M08-91-WW8

来自iCenter Wiki
2021年11月1日 (一) 06:49Xu-yh19讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

学习笔记

  • 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)