设计并制作一个电路(2)
由4个数码管组成,上电无显示,红色L
E 亮,说明可以输入数据;
2、第一次按下K1,最#边的数码管显示
0,其他数码管不亮,第二次按下K1,数
码管显示01,其他数码管不亮,第三次按
下 1,数码管显示012,以此类推,直到
数码管显示0123并锁定状态,即此时 1无
效;
3、按下K2恢复初始状态
刚刚回答过了
int count = 0; //计数器初始值为0
bool lock = false; //锁定状态初始值为false
void setup()
{
pinMode(2, OUTPUT); //设置LED为输出模式
digitalWrite(2, HIGH); //红色LED初始亮
}
void loop()
{
if (!lock) //未锁定状态
{
if (digitalRead(3) == LOW) //检测K1是否按下
{
count++; //计数器加1
if (count > 3) //计数器大于3,锁定状态
{
lock = true; //锁定状态为true
}
}
if (digitalRead(4) == LOW) //检测K2是否按下
{
count = 0; //计数器清零
lock = false; //锁定状态为false
}
}
display(count); //在数码管上显示计数器的值
}
void display(int num) //数码管显示函数
{
int digit[] = {9, 10, 11, 12}; //定义数码管引脚
int code[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; //定义数码管显示码
for (int i = 0; i < 4; i++)
{
digitalWrite(digit[i], LOW); //数码管引脚为低电平
delay(5); //延时5ms
digitalWrite(digit[i], HIGH); //数码管引脚为高电平
digitalWrite(13, LOW); //点亮所有数码管
shiftOut(8, 9, MSBFIRST, code[num % 10]); //将个位数显示在数码管上
shiftOut(8, 9, MSBFIRST, code[num / 10]); //将十位数显示在数码管上
delay(10); //延时10ms
digitalWrite(13, HIGH); //熄灭所有数码管
}
}
数据查询:在数据查询方面,用于数据分析的数据查询,我们觉得数据分析完全在代码层处理是非常慢的,尤其是在数据密度大,分析数据时段长的时候,这会很影响用户体验,TDengine除了可以快速插入数据,另外一个重要的点就是可在数据库层面将数据预处理(过滤、填充、时间段筛选、数据查询密度等),且速度快。
查询举例:观察一个月内的电压情况,查询出相关设备的电流电压,以及产生的告警;综合分析。根据采集间隔计算:时间范围30天43200分钟,密度为5min一个点,则是8640个值,三相电压则一次返回三组数据。
在接口中嵌入TDengine时序稀释数据查询代码示例,做到即时查询即时返回:
部分设备测点同比分析示例: