查看: 1184|回复: 7

Python上位机控制WS2812B

[复制链接]

该用户从未签到

发表于 2020-5-26 11:49 | 显示全部楼层 |阅读模式
本帖最后由 Kevinxing 于 2020-5-26 11:49 编辑

说在前面:
     设计师对颜色有着天生的敏锐性,而工程师眼中这些都会幻化成数值。。。(RGB..;P) 。在设计师的领域,Ai,Ps这些常用的软件中, 颜色的提取和色相都能很直观的反应出来,但是在工程方面,尤其是涉及到颜色在LED的展现方面,设计师给到的RGB, CMYK, HSV这些参数应用到LED显示多多少少是有偏差的。

由于工作的需要,设计师要求的灯光颜色,我们经常会做一个demo给到设计师。让他们实际感受一下软件中提取的颜色参数和实际在LED显示有多少差别,看看如何进行参数微调,从而到达最完美的展示效果!(我们经常会用到ws2812b的灯带来做demo展示)

但是!凡事都有但是,这种一来一回,亮一些,暗一些,好像色相偏冷了,巴拉拉啦。。。。。。各种要求,各种改!应该放一把菜刀在旁边,设计师的苦恼全部发泄在我们身上。。
*******************************************************************************************************************

在这种要求反复更改苦恼下,为了消除攻城狮与设计师之间的隔阂!一言不合就开干!python写了一款上位机,然后封装成exe。让设计师自己去调灯光效果,这样既减轻了自己的工作量,设计师们也能更快得到自己想要的东西,一举两得!

废话不多说,上软件!

操作界面

操作界面



主要的操作逻辑是,自定义输入RGBW值,点击确认键,环状部分会直观的在软件中显示颜色,同时会对下位机(Arduino连着WS2812B灯环)发送串口字符串,从而让设计师很直观,便捷的就能看出RGB在软件中和实际中的差别。(还设计了几款快捷常用色!;P)

Operation.PNG
本文末尾会附上上位机的封装exe,绝对是绿色纯净无捆绑!

上位机结束了,然后还有下位机。。。。

直接附代码吧!
[mw_shl_code=arduino,true]#include <Adafruit_NeoPixel.h>

#define PIN 3
#define MAX_LED  10
#define numdata_length 3//3通道(RGB)
Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_GRB + NEO_KHZ800 );
String comdata = "";
int numdata[numdata_length] = {0};
int flag = 0;
void setup() {
  Serial.begin(9600);
  strip.begin();           //初始化Adafruit_NeoPixel;
  strip.show();            //显示所有LED为关状态;
}
void loop() {
  int j = 0;
  //不断循环检测串口缓存,一个个读入字符串
  while (Serial.available() > 0)
  {
    comdata += char(Serial.read());
    delay(2);
    flag = 1;
  }
  //如果接收到数据则执行comdata分析操作,否则什么都不做
  if (flag == 1) {
    for (int i = 0; i < comdata.length() ; i++) {
      if (comdata == ',') {
        j++;
      }
      else {
        numdata[j] = numdata[j] * 10 + (comdata - '0');
      }
    }
    comdata = String("");
    flag = 0;

    for (uint16_t b = 0; b < MAX_LED; b++) {
      strip.setPixelColor(b, numdata[0], numdata[1], numdata[2]);
    }
    strip.show();
    delay(10);

    for (int i = 0; i < numdata_length; i++) {
      Serial.println(numdata);
      numdata = 0;
    }
  }
}[/mw_shl_code]

写到这才发现附软件压缩包超过了1M,感兴趣留下地址给你们email吧。。。。软件会持续加入更多实用的功能!

end~

该用户从未签到

发表于 2020-5-26 12:28 | 显示全部楼层
好东西,顶,捧个人场 ,哈哈。   13531382@qq.com, 快到我碗里来

该用户从未签到

发表于 2020-6-8 14:59 | 显示全部楼层
楼主,麻烦发我一上,我也想学习一下,多谢楼主分享:kwoklee@21cn.com

该用户从未签到

发表于 2020-6-12 11:43 | 显示全部楼层
最近工作非常需要,非常感谢~~!    zengqiao3@163.com   

该用户从未签到

发表于 2021-3-4 15:15 | 显示全部楼层

非常感谢~~!   443293593@QQ.com   

该用户从未签到

发表于 2021-3-4 15:39 | 显示全部楼层
谢谢给我一份 421601277@qq.com

该用户从未签到

发表于 2021-3-4 15:40 | 显示全部楼层
谢谢给我一份 421601277@qq.com

该用户从未签到

发表于 2021-3-4 17:47 | 显示全部楼层

楼主,麻烦发我一上,我也想学习一下,多谢楼主分享:
290792218@qq.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

arduino程序设计基础 blinker物联网解决方案

热门推荐

基于麦克纳姆轮的PID实例学习--机甲大师PID控制
基于麦克纳姆轮的PID实例
一 认识pid 首先要了解PID算法是什么。网上很多帖子要么就是只有理论,要么就没讲清
OLED 128*64自制可达10000000个选项的菜单(已更新)
OLED 128*64自制可达10000
OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
有没有人遇到过"MQTT Ping!"进入500ms间隔发送,偶现自动复位...
有没有人遇到过"MQTT Ping
出现该情况后,我在5V与3.3V端都加了1000uf和104。之后用弱网络进行测试,在一定程度
HC05发送数据出错
HC05发送数据出错
HC05往手机发送数据会产生错乱和缺失?
arduinoT12焊台 控制器 炫酷UI
arduinoT12焊台 控制器 炫
*声明:本项目源于https://github.com/wagiminator/ATmega-Soldering-Station 采用CC3
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表