micropython web ws2812_【SAMR21新玩法】29. WS2812应用之彩虹

【SAMR21新玩法】29. WS2812应用之彩虹

[复制链接]

前面一节介绍了WS2812的驱动方法,在此基础上,我们可以设计出多种有趣的应用。首先看看WS2812灯带显示彩虹,在makecode中已经介绍过,这里介绍用python实现的方法。

彩虹是由赤橙黄绿青蓝紫7种颜色组成,考虑到颜色可以回绕,我们可以将灯带平均分为7段,每一段的端点就是7种颜色,中间按照与端点的距离计算对应的颜色。因为WS2812是由RGB三色组成,所以需要对每种颜色分量进行插值计算,最后在合成显示的颜色。

参考子程序如下:

def np_rainbow(np, num, bright=32, offset = 0):

rb = ((255,0,0), (255,127,0), (255,255,0), (0,255,0), (0,255,255),(0,0,255),(136,0,255), (255,0,0))

for i in range(num):

t = 7*i/num

t0 = int(t)

r = round((rb[t0][0] + (t-t0)*(rb[t0+1][0]-rb[t0][0]))*bright)>>8

g = round((rb[t0][1] + (t-t0)*(rb[t0+1][1]-rb[t0][1]))*bright)>>8

b = round((rb[t0][2] + (t-t0)*(rb[t0+1][2]-rb[t0][2]))*bright)>>8

np[(i+offset)%num] = (r, g, b)

np是neopixel对象

num是彩灯的数量,数量越多效果越好,颜色变化越平滑。

bright是最大亮度,限制最大亮度可以保护眼睛视力

offset是颜色显示偏移量,周期改变offset可以实现旋转彩虹的效果,晚上看效果非常好

此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个自动化的任务,需要使用Python编程语言来实现。具体的思路如下: 1. 读取Excel表格中的数据,保存到一个列表中。 2. 使用Selenium模块打开Chrome浏览器,并访问给定的网址。 3. 在搜索框中输入列表中的每个关键词,并点击搜索按钮。 4. 找到搜索结果中唯一的元素,并点击下载链接。 5. 下载文件到本地目录中。 下面是一个简单的Python程序,可以实现上述任务: ```python import os import time from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.chrome.service import Service # 读取Excel表格中的数据 data = [] with open('data.xlsx', 'r') as f: for line in f.readlines(): data.append(line.strip()) # 设置Chrome浏览器的路径和驱动程序路径 chrome_path = 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe' driver_path = 'chromedriver.exe' # 启动Chrome浏览器 service = Service(driver_path) service.start() options = webdriver.ChromeOptions() options.binary_location = chrome_path driver = webdriver.Chrome(service=service, options=options) # 访问搜索网站 driver.get('https://std.samr.gov.cn/') # 依次搜索并下载文件 for keyword in data: # 输入关键词并搜索 search_box = driver.find_element(By.ID, 'query_text') search_box.clear() search_box.send_keys(keyword) search_box.send_keys(Keys.RETURN) # 等待搜索结果加载完成 wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'search_result'))) # 找到唯一的搜索结果并下载文件 result_links = driver.find_elements(By.CLASS_NAME, 'search_result_title') if len(result_links) == 1: result_links[0].click() time.sleep(3) download_link = driver.find_element(By.XPATH, '//a[text()="下载"]') download_url = download_link.get_attribute('href') os.system('wget -P downloads/ ' + download_url) # 关闭浏览器 driver.quit() ``` 在这个程序中,我们使用了Selenium模块来自动化浏览器操作,使用了os模块来下载文件。需要注意的是,程序中的Chrome浏览器和驱动程序的路径需要根据实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值