中文编程
首发于中文编程

大疆机甲大师教育机器人Python API中文化之四五:云台灯效,指定序号

续上文大疆机甲大师教育机器人Python API中文化之三:底盘灯效

视频演示

(友情提示:有背景音请关音箱)

这个API只能指定云台一边或两边的LED按照某种模式进行亮暗。

https://www.zhihu.com/video/1170579065899102208

例程主体

完整代码仍开源在此,这里仅贴出主要部分。

def start():
    云台灯(常量.云台所有, 白色, 常量.效果常亮)
    时间.睡眠(2)
    云台灯(常量.云台所有, 黑色, 常量.效果熄灭)
    时间.睡眠(1)
    云台灯(常量.云台左, 绿色, 常量.效果呼吸)
    云台灯(常量.云台右, 红色, 常量.效果闪烁)
    时间.睡眠(4)
    云台灯(常量.云台左, 黄色, 常量.效果走马灯)
    云台灯(常量.云台右, 蓝色, 常量.效果走马灯)
    时间.睡眠(4)

def 云台灯(位置, 颜色, 灯效):
    LED灯.云台(位置, 颜色['红'], 颜色['绿'], 颜色['蓝'], 灯效)

视频演示

这个API可以指定云台两侧可独立控制的 8 颗 LED 灯中的一个或多个进行亮灭。

独立控制LEDhttps://www.zhihu.com/video/1170578994839162880

例程主体

视频中仅拍了左侧,1,3,5,7处LED依次点亮,然后熄灭,改为偶数序号点亮。

def start():
    云台灯(常量.云台所有, 黄色, 常量.效果常亮)
    时间.睡眠(2)
    云台灯(常量.云台左, 绿色, 常量.效果熄灭)
    云台灯(常量.云台右, 红色, 常量.效果熄灭)
    for 序号 in range(1, 5):
        云台单灯(常量.云台左, 序号 * 2 - 1, 常量.效果常亮)
        云台单灯(常量.云台右, 序号 * 2, 常量.效果常亮)
        时间.睡眠(1)
    云台单灯(常量.云台左, 偶数, 常量.效果常亮)
    云台单灯(常量.云台右, 奇数, 常量.效果常亮)
    云台单灯(常量.云台左, 奇数, 常量.效果熄灭)
    云台单灯(常量.云台右, 偶数, 常量.效果熄灭)
    时间.睡眠(2)

def 云台单灯(位置, 序号, 灯效):
    LED灯.云台单灯(位置, 序号, 灯效)

def 云台灯(位置, 颜色, 灯效):
    LED灯.云台(位置, 颜色['红'], 颜色['绿'], 颜色['蓝'], 灯效)

奇数 = [1, 3, 5, 7]
偶数 = [2, 4, 6, 8]

关于API命名

之前的灯效常量命名添加了”效果“前缀。也将之前的”装甲左顶“改为了”云台左“。

“云台单灯”其实有些不妥,因为它的中间参数可以是列表用于指定多个灯。也许“云台指定灯”?

关于API设计

前一个API中,“闪烁”和“走马灯”效果应该可以由后一个API结合“常亮”和“熄灭”效果完成。感觉API的层次有些交错。

发布于 2019-10-24

文章被以下专栏收录

    在所有编程语言和领域中尝试编写中文代码,开发相关工具,总结经验,一致代码风格。包括中文命名,汉化现有语言,创造中文语法的编程语言等等。作为最熟悉的母语,用来编写代码会让代码更容易被自己和母语相同的其他开发者理解。基于英文的编程语言和框架中,使用中文命名有时有技术问题。希望这里为后人趟雷,填坑。多数现有API是英文的,这里也会对其中一些常用的进行汉化。当然,这里也会对基于中文的编程语言进行探讨。包括汉化基于英文的编程语言,以及创造新的编程语言。