找回密码
 立即注册
搜索
查看: 375|回复: 0

当色彩照进现实——RGB LED 驱动及控制(3)

[复制链接]

266

主题

0

回帖

1119

积分

管理员

积分
1119
发表于 2023-12-18 22:44:53 | 显示全部楼层 |阅读模式

当我们实现了控制界面,剩下的问题如何把选择的颜色信息( RGB )告诉 LED 驱动板,常用的方式就是串口了。对于单片机来说更为专业的叫法是 Uart 口,即 Universal Asynchronous Receiver/Transmitter(通用异步收发器)接口。

pySerial

在使用 Python 编程时,可以选用 pySerial 库,它具备了良好的跨平台特性。成文之时,最新版本是 2.7 。可以在 https://pypi.python.org/pypi/pyserial 下载到。

特性

  • 纯Python开发;
  • 在各平台( Windows、Linux、BSD、Jython、IronPython )使用相同的类;
  • 支持 Python 2.3+ 及 Python 3.x ;
  • 支持硬件 RTS/CTS 、软件 Xon/Xoff 流控;
  • 支持网络远程串口控制协议 RFC2217;

库的安装方式

  • 使用PyPI

    pip install pyserial
    easy_install -U pyserial
  • 使用源码包

    python setup.py install(python3 setup.py install)
  • Windows 下可直接使用安装包

    软件包被安装于 Lib\site-packages\serial 目录,文件夹名 serial 就是包的名字。导入时可使用 import serial

使用方法

在不考虑多线程收发的情况下,使用方法很简单。先实例化对象,然后配置串口号(串口名称)、波特率、数据位数、奇偶校验方式、停止位数等,再打开。当然也可以在实例化对象的同时就一次性完成以上操作。接下来就可以直接使用读/写操作了。

#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ = 'mayt'

import serial

def color2rgb(color):
    rgb = [(color >> 16) & 0xff,
           (color >> 8) & 0xff,
            color & 0xff
          ]
    return rgb

if __name__ == '__main__':
    sp = serial.Serial()
    sp.port = 'COM10'
    sp.baudrate = 9600
    sp.bytesize = serial.EIGHTBITS
    sp.parity = serial.PARITY_NONE
    sp.stopbits = serial.STOPBITS_ONE
    sp.open()
    print(sp)
    color = 0x123456
    sp.write(color2rgb(color))
    sp.close()

控制 LED

由于仅用于简单的演示,所以就不设计帧格式了,每次直接发送 3 个字节的 RGB 信息。如果连续发下去的速度比较快,驱动板可能一下子收到大于 3 字节的数据,分帧处理一下即可。

运行效果:

文至此篇,已经完成了上位机控制 LED 所需要做的工作。下一篇文章将讲述 LED 驱动的实现,欢迎阅读。


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

本版积分规则

Archiver|手机版|小黑屋|棱讯科技 ( 粤ICP备2024228160号-2|粤公网安备44030002003510号 )

GMT+8, 2024-7-27 17:03 , Processed in 0.019338 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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