MicroPython动手做(13)——掌控板之RGB三色灯-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

MicroPython动手做(13)——掌控板之RGB三色灯

[复制链接]
 楼主| 发表于 2020-4-17 19:17 | 显示全部楼层
Mind+图形编程

05.jpg
 楼主| 发表于 2020-4-17 19:19 | 显示全部楼层
07.gif
 楼主| 发表于 2020-4-17 19:56 | 显示全部楼层
6、RGB蓝色呼吸灯

[mw_shl_code=arduino,true]i = None

from mpython import *

import time
while True:
    for i in range(256):
        rgb.fill( (int(0), int(0), int(i)) )
        rgb.write()
        time.sleep_ms(1)
        time.sleep_ms(20)
    for i in range(255, -1, -1):
        rgb.fill( (int(0), int(0), int(i)) )
        rgb.write()
        time.sleep_ms(1)
        time.sleep_ms(20)[/mw_shl_code]

注解:
for…in…循环语句(简称为for循环)
for语句是microPython中的一个循环控制语句,任何有序的序列对象内的元素都可以遍历,比如字符串、列表list、元组等等。

简单的for循环代码格式:
for i in [1,2,3,4,5]:
    print(i*5)
# 遍历列表[1,2,3,4,5],满足就循环执行i*5;
# 不要忘记for语句后面的英文冒号;
# 不要忘记print()函数前面的缩进。
12345

上述代码可这样理解:
¹. 一群人在排队办理业务,也就是列表[1,2,3,4,5];
². 它们中的每一个被叫到号的时候(for i in),就轮流进去一个空房间 i 办业务;
³. 每一个数字进去房间之后,都对计算机说:“我要办这个业务”,也就是print(i),然后计算机为每一个数字提供了打印服务,将1,2,3,4,5都打印在了屏幕上。

for循环的3个要点即是:1.空房间;2.一群等着办业务的人;3.业务流程
for循环:空房间

上面代码中的i就是空房间,学名叫元素(item),你可以把它当成是一个变量。给房间取一个名字,也就是“变量名”。

for循环:一群排队办业务的人
列表、字典和字符串这类数据类型往往可理解为“一群排队办业务的人”,而整数、浮点数不行。这个过程,在Python中的学名就叫做遍历。

 楼主| 发表于 2020-4-17 19:59 | 显示全部楼层
mPthon 图形编程

11.jpg
 楼主| 发表于 2020-4-17 20:09 | 显示全部楼层
18.gif
 楼主| 发表于 2020-4-19 14:34 | 显示全部楼层
7、板载三位变幻RGB彩虹灯

[mw_shl_code=arduino,true]#MicroPython动手做(13)——掌控板之RGB三色灯
#板载三位变幻RGB彩虹灯

from mpython import *
import neopixel
import time

my_rgb = neopixel.NeoPixel(Pin(Pin.P7), n=3, bpp=3, timing=1)

def make_rainbow(_neopixel, _num, _bright, _offset):
    _rgb = ((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((_rgb[t0][0] + (t-t0)*(_rgb[t0+1][0]-_rgb[t0][0]))*_bright)>>8
        g = round((_rgb[t0][1] + (t-t0)*(_rgb[t0+1][1]-_rgb[t0][1]))*_bright)>>8
        b = round((_rgb[t0][2] + (t-t0)*(_rgb[t0+1][2]-_rgb[t0][2]))*_bright)>>8
        _neopixel[(i + _offset) % _num] = (r, g, b)


offset = 0
while True:
    make_rainbow(my_rgb, 3, 10, offset)
    offset = offset + 1
    my_rgb.write()
    time.sleep_ms(100)[/mw_shl_code]
 楼主| 发表于 2020-4-19 14:41 | 显示全部楼层
mPythonX 图形编程


19.jpg
 楼主| 发表于 2020-4-19 15:19 | 显示全部楼层
8、外接八位RGB彩虹灯环

[mw_shl_code=arduino,true]#MicroPython动手做(13)——掌控板之RGB三色灯
#外接八位RGB彩虹灯环

from mpython import *
import neopixel
import time

my_rgb = neopixel.NeoPixel(Pin(Pin.P8), n=8, bpp=3, timing=1)

def make_rainbow(_neopixel, _num, _bright, _offset):
    _rgb = ((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((_rgb[t0][0] + (t-t0)*(_rgb[t0+1][0]-_rgb[t0][0]))*_bright)>>8
        g = round((_rgb[t0][1] + (t-t0)*(_rgb[t0+1][1]-_rgb[t0][1]))*_bright)>>8
        b = round((_rgb[t0][2] + (t-t0)*(_rgb[t0+1][2]-_rgb[t0][2]))*_bright)>>8
        _neopixel[(i + _offset) % _num] = (r, g, b)


offset = 0
while True:
    make_rainbow(my_rgb, 8, 6, offset)
    offset = offset + 1
    my_rgb.write()
    time.sleep_ms(100)
[/mw_shl_code]
 楼主| 发表于 2020-4-19 15:28 | 显示全部楼层
mPython X 图形编程

20.jpg
 楼主| 发表于 2020-4-19 15:50 | 显示全部楼层
9、24位流动RGB彩虹灯环

[mw_shl_code=arduino,true]#MicroPython动手做(13)——掌控板之RGB三色灯
#24位流动RGB彩虹灯环

from mpython import *
import neopixel
import time

my_rgb = neopixel.NeoPixel(Pin(Pin.P8), n=24, bpp=3, timing=1)

def make_rainbow(_neopixel, _num, _bright, _offset):
    _rgb = ((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((_rgb[t0][0] + (t-t0)*(_rgb[t0+1][0]-_rgb[t0][0]))*_bright)>>8
        g = round((_rgb[t0][1] + (t-t0)*(_rgb[t0+1][1]-_rgb[t0][1]))*_bright)>>8
        b = round((_rgb[t0][2] + (t-t0)*(_rgb[t0+1][2]-_rgb[t0][2]))*_bright)>>8
        _neopixel[(i + _offset) % _num] = (r, g, b)


offset = 0
while True:
    make_rainbow(my_rgb, 24, 10, offset)
    offset = offset + 1
    my_rgb.write()
    time.sleep_ms(100)[/mw_shl_code]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 10:38 , Processed in 0.155291 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表