#include "HX711.h" #include "TM1637.h" #define CLK 3//pins definitions for TM1637 and can be changed to other ports #define DIO 2 TM1637 tm1637(CLK, DIO); HX711 hx711(4, 5, 64); void setup() { int8_t led[4] = {17, 17, 17, 17}; //start; //led tm1637.init();// tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7; tm1637.display(led); //hx711 scale; hx711.set_scale(-250.5813851f); hx711.tare(5); Serial.begin(115200); } bool isWeightRemove(float weight) { static float fWightOld = 0; if ((weight + 10) < fWightOld) { fWightOld = weight; return true; } fWightOld = weight; return false; } void loop() { float fWight, fWeightOld; int8_t i = 0; while (1) { fWight = hx711.get_units(3); Serial.print("\r\n"); Serial.print(fWight); fWight = fWight >= 0 ? fWight : (-fWight); if ((isWeightRemove(fWight)) == true) { for(i=0;i<5 ;i++) { tm1637.showNum((uint16_t)fWeightOld); delay(400); tm1637.clearDisplay(); delay(40); } continue; } tm1637.showNum((uint16_t)fWight); fWeightOld = fWight; } }
时间: 2024-04-27 20:22:24 浏览: 24
这段代码是使用Arduino和HX711模块以及TM1637数码管进行电子秤测量和显示的程序。
第1行和第2行分别是包含HX711和TM1637库的头文件。
第4行和第5行定义了CLK和DIO两个引脚用于连接TM1637数码管。
第6行通过CLK和DIO两个引脚创建了一个TM1637对象tm1637。
第7行通过HX711的DT、SCK和GAIN参数创建了一个HX711对象hx711。
setup()函数中,首先初始化了4个LED灯,然后初始化了TM1637数码管,设置了亮度,将数码管显示为"0000"。接下来设置了HX711模块的比例因子和进行了秤皮重校准,最后初始化串口通信。
isWeightRemove(float weight)函数用于判断是否有物品被取走,如果当前重量比上一次重量减少了10g以上,则认为有物品被取走了。该函数返回布尔值,表示是否有物品被取走。
在loop()函数中,首先定义了fWight和fWeightOld两个变量用于存储当前重量和上一次重量。接下来,使用while(1)循环进行重量的读取和显示。调用hx711.get_units(3)函数获取重量值,然后将重量值传递给isWeightRemove(float weight)函数判断是否有物品被取走。如果有物品被取走,则进行数码管的闪烁显示,否则直接将重量值显示在数码管上。最后将fWight的值赋给fWeightOld,用于下一次判断是否有物品被取走。
相关问题
#include<stdio.h> #include<malloc.h> #include<string.h> #define MAX_SIZE 50
`#include<stdio.h>` 这行头文件包含了标准输入输出库,用于程序中的基本输入输出操作,比如 printf 和 scanf 函数。
`#include<malloc.h>` 包含了内存管理函数,如 malloc 和 free,这些函数允许程序动态地分配和释放内存,以便在运行时根据需要增加或减少内存使用。
`#include<string.h>` 包含了字符串处理函数的集合,如 strlen、strcpy、strcat 等,它们用于处理以字符数组形式表示的字符串。
`#define MAX_SIZE 50` 这是一个预处理器宏定义,用来设置一个最大值(这里是50),通常在需要限制某个数组或字符串长度的地方使用。例如,如果有一个需要存放字符串的数组,可能会用这个宏来指定其最大容量。
相关问题--
1. 为什么在程序中经常看到 #define 宏定义?
2. 在什么情况下会用到 `malloc()` 函数?
3.
#include <iostream> #include <stdio.h> #include <math.h> #define N 5
这段代码是C++中的预处理指令,用于引入头文件和定义宏。具体解释如下:
1. `#include <iostream>`:引入iostream头文件,该头文件包含了C++中输入输出流的相关函数和对象,例如cout和cin。
2. `#include <stdio.h>`:引入stdio.h头文件,该头文件包含了C语言中的输入输出函数,例如printf和scanf。
3. `#include <math.h>`:引入math.h头文件,该头文件包含了数学函数的声明和定义,例如sqrt和pow。
4. `#define N 5`:定义一个宏常量N,并将其值设置为5。宏定义是一种在编译前进行文本替换的机制,这里将所有出现N的地方都替换为5。
这段代码的作用是引入所需的头文件和定义一个宏常量N,并没有实际的功能代码。
相关推荐
![application/x-gzip](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)