首页天道酬勤树莓派4b怎样制作软路由,树莓派4b能做什么

树莓派4b怎样制作软路由,树莓派4b能做什么

张世龙 05-06 04:32 130次浏览

本文使用草莓派4B点亮WS2812灯环,实现了多种颜色的变换。

草莓馅饼4B-Python-控制WS2812B WS2812参数介绍及工作原理和草莓馅饼4B连接线可能出现的问题:

以前,心血来潮,在本人的小电风扇上安装了可控LED灯WS2812,只是为了有更好的夜灯视觉效果。

WS2812 WS2812B是集控制电路和发光电路于一体的智能外部控制LED光源,其外形与5050LED灯泡相同,各元件为一个像素点。

参数的介绍和结构在这里本人不重复说明。 详情请参考以下博客/论坛等。 希望能帮上忙。

参考1

参考2

参考3

参考4

与草莓派4B连接

红色------5V

蓝色------GND

黄色------GPIO18

代码必须首先安装相关库:

sudopipinstallrpi-ws 281 x http://www.Sina.com /

sudo apt-get install python-pip以下是灯光的多个变换的代码,每个函数一个变换。

importtimefromrpi _ ws 281 ximportpixelstrip, 在colorimportargparseled _ count=16 # led灯的个数LED_PIN=18 # DI端子上,GPIO18#以下为led _ freq _ Hz=800000 # ledsignalfrequencquence dmachanneltouseforgeneratingsignal (try 10 ) led_brightness=255# setto0fordarkestand 255 forbrightestled truetoinvertthesignal (whenusingnpntransistorlevelshift ) led _ channel=0# setto ' 1 45 or 53#以下是LED模式变换的各函数defcolorwipe(strip,color ),wait_ms=20 ) : ' '一次消除显示像素的颜色。 ' ' forIinrange(strip.numpixels () ) : strip.setPixelColor(i ) I,color(strip.show ) time.sleep ) wait _ min iterations=10 ) :“”电影院灯光风格跟踪动画.“”forjinrange(iterations ) : for q in range(3)3) : for i in range(0 3 ) : strip.0.setpixel color (智商,颜色) strip.show (time.sleep ) wait_ms/1000.0 ) for i in range(0) 0,strip strip.0 3) : strip.setpixel color (智商, 0 ) defwheel ) pos )生成跨越:''0-255位置的彩虹色. ' ' if pos 853360返回颜色(pos* )0) elif pos 1703360 pos-=85返回cos wait_ms=20,iterations=1(: ' '画彩虹,所有褪色的像素一次只能画. ' ' forjinrange(256*iterations ) 3360 forinrange () wheel(Ij ) 255 ) ) strip.show ) time.sleep ) wait_ms/1000.0 ) defrainbowcycle ) strip,wait_ms=10,it

erations=5): """画出均匀分布在所有像素上的彩虹.""" for j in range(256 * iterations): for i in range(strip.numPixels()): strip.setPixelColor(i, wheel( (int(i * 256 / strip.numPixels()) + j) & 255)) strip.show() time.sleep(wait_ms / 1000.0)def theaterChaseRainbow(strip, wait_ms=50): """旋转的彩色灯光.""" for j in range(256): for q in range(3): for i in range(0, strip.numPixels(), 3): strip.setPixelColor(i + q, wheel((i + j) % 255)) strip.show() time.sleep(wait_ms / 1000.0) for i in range(0, strip.numPixels(), 3): strip.setPixelColor(i + q, 0)# Main program logic follows:if __name__ == '__main__': # Process arguments parser = argparse.ArgumentParser() parser.add_argument('-c', '--clear', action='store_true', help='clear the display on exit') args = parser.parse_args() # Create NeoPixel object with appropriate configuration. strip = PixelStrip(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL) # Intialize the library (must be called once before other functions). strip.begin() print('Press Ctrl-C to quit.') if not args.clear: print('Use "-c" argument to clear LEDs on exit') try: while True: print('Color wipe animations.') colorWipe(strip, Color(255, 255, 0)) # Red wipe colorWipe(strip, Color(0, 0, 0), 30) colorWipe(strip, Color(0, 255, 255)) # Blue wipe colorWipe(strip, Color(0, 0, 0), 30) colorWipe(strip, Color(255, 0, 255)) # Green wipe colorWipe(strip, Color(0, 0, 0), 30) print('Theater chase animations.') print('Rainbow animations.') rainbow(strip) colorWipe(strip, Color(0, 0, 0), 50) rainbowCycle(strip) colorWipe(strip, Color(0, 0, 0), 40) break while True: rainbowCycle(strip) #print('***********************') colorWipe(strip, Color(0, 0, 0), 100) except: colorWipe(strip, Color(0, 0, 0), 100) 可能会出现的问题:

问题1:提示 “strip.begin()” 该代码出错,显示错误为:

RuntimeError: ws2811_init failed with code -5 (mmap() failed)

原因:直接从IDE上运行了该程序。
解决方法:从命令行上运行程序。方法如下:
①假设程序文件放在桌面上

cd Desktop

②进入桌面后打开程序文件,假设文件名为123.py

sudo python3 123.py

③运行时若想要退出就按Ctrl + C
问题2:
不能使用中文注释?

经过验证,其实是可以的使用中文注释的,并且根本不用删除注释再运行程序,完全不受影响

问题3:
出现ImportError: No module named _rpi_ws281x的错误提示

较大的可能是安装错了,用pip安装可能是Python2的,用pip3安装就能解决

sudo pip3 install rpi-ws281x

##2020.8.29

适合机械三维设计用笔记本,四自由度机械臂原理