【FireBeetle Board-ESP32评测报告之三】LED温度表
【本期主要玩法】本次评测,DF提供了一块FireBeetle Covers-24×8 LED Matrix,就是24*8的LED点阵屏。并且提供了官方库。这样和esp32搭配后,就有得玩啦。
【硬件】
1、FireBeetleBoard-ESP321块
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-ESP32LM35FireBeetle Covers-24×8LED Matrix
D2
D2(在背后的拨动开关,自行设置)
D6
D6
D7
D7
VCCVCCVCC
GNDGNDGND
A0Data-output
【代码】
#include "DFRobot_HT1632C.h"
#define DATA D6
#define CS D3
#define WR D7
//#define RD 7
DFRobot_HT1632C ht1632c = DFRobot_HT1632C(DATA, WR,CS);
char str[] = "Temperature";
//关于LM35变量*************温度传感器部分设置
int potPin = A0; //设置模拟口4为LM35的信号输入端口
float temperature = 0; //设置temperature为浮点变量
long val=0; //设置val为长整数变量
float sensorValue = 0; //临时变量
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
ht1632c.begin();
ht1632c.isLedOn(true);
ht1632c.clearScreen();
ht1632c.setCursor(0,0);
//ht1632c.inLowpower(true);
ht1632c.print(str,15);
ht1632c.setPwm(1);
delay(500);
}
void loop() {
// val=analogRead(potPin);//温度传感器LM35接到模拟PIN4上;val变量为从LM35信号口读取到的数值
val=gett();
temperature = val*0.001409587904157*100;
//把读取到的val转换为温度数值,系数一:0.001220703125=5/4096,0~5V对应模拟口读数
//但是实测了vcc的电压为4.33V,因此对照UNO做了一个校正,选择系数一:0.001220703125*5/4.33=0.001409587904157
//1~4096,系数二:100=1000/10,1000是毫伏与伏的转换;10是每10毫伏对应一度温升。
char s_temp;
dtostrf(temperature,2,2,s_temp);//把温度值转换为两位整数,两位小数的字符串
ht1632c.print(s_temp);
Serial.println(s_temp);
delay(5000);
}
float gett(){
//简单的8次的平均滤波,你也可以尝试中值滤波等
sensorValue = analogRead(potPin);
sensorValue += analogRead(potPin);
sensorValue += analogRead(potPin);
sensorValue += analogRead(potPin);
sensorValue += analogRead(potPin);
sensorValue += analogRead(potPin);
sensorValue += analogRead(potPin);
sensorValue += analogRead(potPin);
//show on the Serial Monitor
//Serial.print("temp = ");
//Serial.println(sensorValue/8);
return sensorValue/8;
}
【小结】DFrobot提供了很棒的萤火虫系列产品,这个24*8的点阵,你可以玩温度计,时钟等。我本来准备了两种玩法,一是blynk RTC,通过wifi把时钟传送给esp32,然后在本地通过24*8的点阵显示。二是本地RTC模块,通过esp32驱动24*8的点阵来实现本地的时钟、温度计。很可惜,目前RTC库以及blynk的RTC与esp32都会冲突,编译通过后,在运行中,显示CPU崩溃。这两个没有成功的测试其实就花去了差不多一天的时间。现在大家看到的这个简单的堆叠小温度计,就是24*8的点阵的玩法之一。希望抛砖引玉,给大家提供更多灵感。esp32还有挺长的路要走。。。。
这个好玩,我也买一套 不错不错 唉~还没上架
页:
[1]