6813浏览
查看: 6813|回复: 8

[项目] 葡萄美酒夜光杯###垫

[复制链接]
葡萄美酒夜光杯###垫图1
葡萄美酒夜光杯,一起干了这一杯

说来也是凑巧,为了下次mechbattle,我想自己设计机子,打算从建模开始吧。刚好手上还剩一块cheap,刚好还一个LED灯环,刚好有一块锂电池,于是想着设计点东西,顺便练习建模,积累经验这个智能杯垫就是一个开始:lol

葡萄美酒夜光杯###垫图3


功能:一杯热水放在上面,杯垫会根据温度显示不同的颜色。

原理分析:利用LM35温度传感器采集外界温度信息,并将温度信息映射到LED灯上。


材料清单:


Cheapduino x 1(可以更换其他芯片如micro pro)
24位RGBLED灯环 x 1
LM35温度传感器 x 1
3.7V锂电池 x 1
4.2V锂电池充电板 x1
5V升压板 x 1
开关 x 1
导线若干


电路分析:

葡萄美酒夜光杯###垫图4
原本设计的时候没有加升压的模块,可是在测试的时候发现,LED灯和LM35工作不正常,这才想到这两个模块的供电需要5V,所以添加了一块可调升压模块


程序分析:

[mw_shl_code=cpp,true]#include <Adafruit_NeoPixel.h>
#include <MsTimer2.h>//

#define PIN 9//控制LED灯环引脚

Adafruit_NeoPixel strip = Adafruit_NeoPixel(24, PIN, NEO_GRB + NEO_KHZ800);//定义一个灯环的对象,控制灯环

uint16_t r, g, b;//记录红绿蓝三种颜色目标值
uint16_t rt, gt, bt;//记录红绿蓝三种颜色当前值

//滤波
uint16_t Filter_Value;
uint16_t Value;

void setup() {
  Serial.begin(9600);//设置波特率
  strip.begin();
  strip.show();
  MsTimer2::set(20, LEDshow);
  MsTimer2::start();
  Filter_Value = Fliter();
  rt = gt = bt = 0;
}

void loop() {
  if (inspect())Filter_Value = Fliter(); //检测颜色是否达到目标值
  Serial.println(Filter_Value);
  tempTocolor(Filter_Value);
  delay(50);
}

uint16_t  Get_AD()//采集温度信息
{
  return analogRead(A0);
}
//滤波处理
#define FILTER_N 40
uint16_t filter_buf[FILTER_N + 1];
uint16_t Fliter()
{
  uint16_t filter_sum = 0;
  uint16_t i;
  filter_buf[FILTER_N] = Get_AD();
  for (i = 0; i < FILTER_N; i++)
  {
    filter_buf = filter_buf[i + 1];
    filter_sum += filter_buf;
  }
  return (uint16_t)(filter_sum / FILTER_N);
}
bool inspect()//检测颜色是否达到目标值
{
  if (r != rt || g != gt || b != bt)return false;
  else return true;
}
void tempTocolor(uint16_t val)//将温度转换为颜色
{
  if (val > 110)
  {
    r = 127;
    b = 127;
    g = 0;
  }
  else if (val > 80)
  {
    uint16_t k = map(val, 80, 110, 0, 127);
    r = 255 - k;
    b = k;
    g = 0;
  }
  else if (val > 50)
  {
    uint16_t k = map(val, 50, 80, 0, 255);
    r = k;
    b = 0;
    g = 255 - k;
  }
  else if (val > 20)
  {
    uint16_t k = map(val, 20, 50, 0, 255);
    r = 0;
    b = 255 - k;
    g = k;
  }
  else
  {
    r = 0;
    b = 255;
    g = 0;
  }
}
void LEDshow()//显示颜色
{
  if (rt < r)rt++;
  else if (rt > r)rt--;
  if (gt < g)gt++;
  else if (gt > g)gt--;
  if (bt < b)bt++;
  else if (bt > b)bt--;
  for (uint16_t i = 0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, strip.Color(rt, gt, bt));
  } strip.show();
}
[/mw_shl_code]

细节图片:

葡萄美酒夜光杯###垫图10

葡萄美酒夜光杯###垫图5

葡萄美酒夜光杯###垫图6

葡萄美酒夜光杯###垫图7

葡萄美酒夜光杯###垫图8


葡萄美酒夜光杯###垫图9

葡萄美酒夜光杯###垫图2


下载附件智能杯垫.rar

本帖被以下淘专辑推荐:

  • · |主题: 32, 订阅: 1

hnyzcj  版主

发表于 2018-4-2 06:12:37

不错的创意。
回复

使用道具 举报

jarvis_chan  初级技神

发表于 2018-4-2 09:32:36

makerOne重出江湖!
回复

使用道具 举报

qq215104863549  初级技匠
 楼主|

发表于 2018-4-2 11:07:46

jarvis_chan 发表于 2018-4-2 09:32
makerOne重出江湖!

:lol:lol:lol:lol:lol:lol:lol:lol
回复

使用道具 举报

qq215104863549  初级技匠
 楼主|

发表于 2018-4-2 11:08:35


:lol:lol:lol:lol:lol
回复

使用道具 举报

青夏  NPC

发表于 2018-4-3 14:08:52

这种应用其实可以选用源代码的板子。
回复

使用道具 举报

安卓机器人  中级技神

发表于 2018-4-3 22:26:54

我的想法是在杯子盖上做:lol
回复

使用道具 举报

qq215104863549  初级技匠
 楼主|

发表于 2018-4-8 12:56:51

安卓机器人 发表于 2018-4-3 22:26
我的想法是在杯子盖上做

哈哈哈,是哦,还能做盖子
回复

使用道具 举报

SJHll  见习技师

发表于 2019-5-4 20:02:41

66666666666
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail