9339浏览
查看: 9339|回复: 3

【FireBeetle Board-ESP32评测报告之三】LED温度表

[复制链接]
【本期主要玩法】
本次评测,DF提供了一块FireBeetle Covers-24×8 LED Matrix,就是24*8的LED点阵屏。并且提供了官方库。这样和esp32搭配后,就有得玩啦。
【FireBeetle Board-ESP32评测报告之三】LED温度表图4

【FireBeetle Board-ESP32评测报告之三】LED温度表图2【FireBeetle Board-ESP32评测报告之三】LED温度表图1


【硬件】
1、FireBeetleBoard-ESP32  1块
2、LM35 温度传感器   1
3、FireBeetle Covers-24×8 LED Matrix 1块
4、杜邦线若干

【软件】
dfrobot的官方点阵驱动库(片尾提供)
主要函数:
1、DFRobot_HT1632C(uint8_t data, uint8_t wr, uint8_t cs)
在叠装时,DATA---D6,WR---D7,CS(D2,你也可以自己拨动,可以一次控制四块点阵)
RD(D8,不用)
2、DFRobot_HT1632C::begin()
点阵打开
3、DFRobot_HT1632C::clearScreen()
清屏
4、DFRobot_HT1632C::isLedOn(boolean state)
打开所有的LED
5、DFRobot_HT1632C::inLowpower(boolean state)
低功耗控制,T为低功耗打开,类似休眠,F为恢复
6、DFRobot_HT1632C::setPixel(uint8_t x, uint8_t y)
画点函数
7、DFRobot_HT1632C::clrPixel(uint8_t x, uint8_t y)
清除点的函数
8、DFRobot_HT1632C::setPixel(uint8_t x, uint8_t y)
设置坐标
9、DFRobot_HT1632C::setPwm(uint8_t value)
这个是设置亮度的,一共是1~15,其实1已经挺亮了。
10、DFRobot_HT1632C::drawLine(uint8_t xStart, uint8_t yStart, uint8_t xStop, uint8_t yStop)
画线函数
11、DFRobot_HT1632C::clrLine(uint8_t xStart, uint8_t yStart, uint8_t xStop, uint8_t yStop)
清除线函数
12、 ht1632c.print(str,base)
显示字符函数,base是数值,可以显示滚动效果,如设置为30,那么就滚动显示一个30长度的串
后面还有很多,自己研究一下库即可,比较直观。
【接线方式】
FireBeetleBoard-ESP32
LM35
FireBeetle Covers-24×8  LED Matrix
D2

D2(在背后的拨动开关,自行设置)
D6

D6
D7

D7
VCC
VCC
VCC
GND
GND
GND
A0
Data-output

【代码】
  1. #include "DFRobot_HT1632C.h"
  2. #define DATA D6
  3. #define CS D3
  4. #define WR D7
  5. //#define RD 7
  6. DFRobot_HT1632C ht1632c = DFRobot_HT1632C(DATA, WR,CS);
  7. char str[] = "Temperature";
  8. //关于LM35变量*************温度传感器部分设置
  9. int potPin = A0;                     //设置模拟口4为LM35的信号输入端口
  10. float temperature = 0;                //设置temperature为浮点变量
  11. long val=0;                       //设置val为长整数变量
  12. float sensorValue = 0;    //临时变量
  13. void setup() {
  14.   // put your setup code here, to run once:
  15.   Serial.begin(9600);
  16.   ht1632c.begin();
  17.   ht1632c.isLedOn(true);
  18.   ht1632c.clearScreen();
  19.   ht1632c.setCursor(0,0);
  20. //ht1632c.inLowpower(true);
  21.    ht1632c.print(str,15);
  22.    ht1632c.setPwm(1);
  23.    delay(500);
  24.    
  25. }
  26. void loop() {
  27.   // val=analogRead(potPin);//温度传感器LM35接到模拟PIN4上;val变量为从LM35信号口读取到的数值
  28.     val=gett();
  29.     temperature = val*0.001409587904157*100;
  30.          //把读取到的val转换为温度数值,系数一:0.001220703125=5/4096,0~5V对应模拟口读数
  31.         //但是实测了vcc的电压为4.33V,因此对照UNO做了一个校正,选择系数一:0.001220703125*5/4.33=0.001409587904157
  32.         //1~4096,系数二:100=1000/10,1000是毫伏与伏的转换;10是每10毫伏对应一度温升。
  33.     char s_temp[5];
  34.     dtostrf(temperature,2,2,s_temp);//把温度值转换为两位整数,两位小数的字符串
  35.     ht1632c.print(s_temp);
  36.     Serial.println(s_temp);
  37.     delay(5000);
  38. }
  39. float gett(){
  40. //简单的8次的平均滤波,你也可以尝试中值滤波等
  41.    sensorValue = analogRead(potPin);
  42.    sensorValue += analogRead(potPin);
  43.    sensorValue += analogRead(potPin);
  44.    sensorValue += analogRead(potPin);
  45.    sensorValue += analogRead(potPin);
  46.    sensorValue += analogRead(potPin);
  47.    sensorValue += analogRead(potPin);
  48.    sensorValue += analogRead(potPin);
  49.    //show on the Serial Monitor
  50.    //Serial.print("temp = ");
  51.    //Serial.println(sensorValue/8);
  52.    return sensorValue/8;
  53. }
复制代码

【小结】
DFrobot提供了很棒的萤火虫系列产品,这个24*8的点阵,你可以玩温度计,时钟等。
我本来准备了两种玩法,一是blynk RTC,通过wifi把时钟传送给esp32,然后在本地通过24*8的点阵显示。二是本地RTC模块,通过esp32驱动24*8的点阵来实现本地的时钟、温度计。很可惜,目前RTC库以及blynk的RTC与esp32都会冲突,编译通过后,在运行中,显示CPU崩溃。这两个没有成功的测试其实就花去了差不多一天的时间。
现在大家看到的这个简单的堆叠小温度计,就是24*8的点阵的玩法之一。希望抛砖引玉,给大家提供更多灵感。
esp32还有挺长的路要走。。。。

下载附件FireBeetleLEDMatrix-master.zip


dsweiliang  初级技神

发表于 2017-5-31 10:20:31

这个好玩,我也买一套
回复

使用道具 举报

hnyzcj  版主

发表于 2017-5-31 21:05:17

不错不错
回复

使用道具 举报

dsweiliang  初级技神

发表于 2017-5-31 21:56:51

唉~还没上架
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail