2234|6

1万

帖子

25

TA的资源

版主

楼主
 

【DIY创意LED】公共显示模块 common [复制链接]

为了方便使用,将WS2812的实例,以及基本显示效果放在了一个公共显示模块 common 中,这样其它程序可以直接调用它,而不用重新定义,减少了重复代码。下面是基本的common代码,大家可以在这里添加自己的公共程序功能。

 

import os
import neopixel
from machine import Pin, sleep as sleep_ms

np = neopixel.NeoPixel(Pin(5), 8)

MAX_BRIGHT = 128
rainbow_color = ((255,0,0), (255,165,0), (255,255,0), (0,255,0), (0,127,255), (0,0,255), (128,0,255), (255,0,0))

# rand number from 0 to N
def rand(N = 128):
    r = os.urandom(2)
    return (r[0]*256 + r[1])%N

# set color according to the MAX_BRIGHT scale
def setcolor(np, n, color):
    r = np[n][0]*MAX_BRIGHT//256
    g = np[n][1]*MAX_BRIGHT//256
    b = np[n][2]*MAX_BRIGHT//256
    np[n] = [r, g, b]

# fill color
def clear(np, color=(0,0,0)):
    try:
        if type(color) is int:
            np.fill((color, color, color))
        else:
            np.fill(color)
        np.write()
    except:
        return

# rotate
def rotate(np, n=1):
    buf = [[0,0,0]]*np.n
    for i in range(np.n):
        buf[i] = np[(i + n)%np.n]
    for i in range(np.n):
        np[i] = buf[i]

# shift
def shift(np, n=1):
    buf = [[0,0,0]]*np.n
    for i in range(np.n):
        buf[i] = np[(i + n)%np.n] if i + n >= 0 and i + n < np.n else [0, 0, 0]
    for i in range(np.n):
        np[i] = buf[i]

# limit color range
def rangeC(c):
    c = max(0, min(MAX_BRIGHT, c))
    return c

#
def gradC(np, c, d=1):
    t = list(c)
    t[0] = rangeC(t[0] + d - rand(d+d+1))
    t[1] = rangeC(t[1] + d - rand(d+d+1))
    t[2] = rangeC(t[2] + d - rand(d+d+1))
    return t

 

此帖出自单片机论坛

最新回复

怎么看neopixel模块中的函数呀?或者说在哪 儿看呀,在文档中只看这些呀 NeoPixel 驱动 1 2 3 4 5 6 7 8 from machine import Pin from neopixel import NeoPixel   pin = Pin(0, Pin.OUT) # set GPIO0 to output to drive NeoPixels np = NeoPixel(pin, 8) # create NeoPixel driver on GPIO0 for 8 pixels np[0] = (255, 255, 255) # set the first pixel to white np.write() # write data to all pixels r, g, b = np[0] # get first pixel colour   详情 回复 发表于 2020-12-21 09:15
点赞 关注
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 

公共模块中,常用的几个函数是:

  • clear,用指定颜色清屏,默认是清零
  • rand,随机数
  • rotate,旋转
  • shift,移位。rotate和shift支持左右方向移动以及一次移动多位,数值是负数时为顺时针方向,正数为逆时针方向。
此帖出自单片机论坛
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 

py实现逻辑确实比C简单多了.

此帖出自单片机论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

189

帖子

0

TA的资源

一粒金砂(中级)

4
 

np.fill((color, color, color))中的fill函数在哪儿呀,我在网上都没有找到 python中有这个函数吗?谢谢,这个函数应该怎么用呀

此帖出自单片机论坛

点评

fill是neopixel模块中带有的功能,不是标准python的功能。  详情 回复 发表于 2020-12-19 17:31
 
个人签名单片机软件/硬件交流群:127034610
 
 

回复

1万

帖子

25

TA的资源

版主

5
 
liushiming82 发表于 2020-12-19 11:57 np.fill((color, color, color))中的fill函数在哪儿呀,我在网上都没有找到 python中有这个函数吗?谢谢, ...

fill是neopixel模块中带有的功能,不是标准python的功能。

此帖出自单片机论坛
 
 
 

回复

189

帖子

0

TA的资源

一粒金砂(中级)

6
 

怎么看neopixel模块中的函数呀?或者说在哪 儿看呀,在文档中只看这些呀

NeoPixel 驱动

1

2

3

4

5

6

7

8

from machine import Pin

from neopixel import NeoPixel

 

pin = Pin(0, Pin.OUT) # set GPIO0 to output to drive NeoPixels

np = NeoPixel(pin, 8) # create NeoPixel driver on GPIO0 for 8 pixels

np[0] = (255, 255, 255) # set the first pixel to white

np.write() # write data to all pixels

r, g, b = np[0] # get first pixel colour

此帖出自单片机论坛
 
个人签名单片机软件/硬件交流群:127034610
 
 

回复

1万

帖子

25

TA的资源

版主

7
 
liushiming82 发表于 2020-12-21 09:15 怎么看neopixel模块中的函数呀?或者说在哪 儿看呀,在文档中只看这些呀 NeoPixel 驱动 ...

neopixel的用法不复杂,可以参考官网说明:

 

http://docs.micropython.org/en/latest/esp8266/quickref.html?highlight=neopixel#neopixel-driver

 

此外在REPL下,输入np.(有小数点)后按tab键,自动补全功能会有提示。

此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表