Arduino单片机10KG电子秤,一个小白,为了给小乌龟称重量,在各种网站东拼西凑,总算做好了。
临时添加了dht11温湿度模块。
程序:
#include< HX711.h>
#include "U8glib.h"
#include< dht11.h>
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
int Weight = 0;
char str[4]; //定义重量值存储数组,5位,其中4位为数字,1位为小数点
int temp = 0; //定义重量值中间变量,,用于将获取的float型重量值转变为unsigned char数组
dht11 DHT11;
#define DHT11PIN 2
void draw(void)
{
u8g.setFont(u8g_font_8x13); //使用8x13大小的字符
u8g.setPrintPos(23, 10); // 对应 x,y 轴值
u8g.print("H:");
u8g.setPrintPos(54, 10);
u8g.print(DHT11.humidity);
u8g.setPrintPos(93, 10);
u8g.print("%");
u8g.setPrintPos(23, 26);
u8g.print("T:");
u8g.setPrintPos(54, 26);
u8g.print(DHT11.temperature);
u8g.setPrintPos(93, 26);
u8g.print("C");
u8g.setPrintPos(23, 50);
u8g.print("W:");
u8g.setPrintPos(50, 50);
u8g.print(Weight);
u8g.setPrintPos(93, 50);
u8g.print("g");
}
void setup()
{
Serial.begin(9600);
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
Init_Hx711();//初始化HX711模块连接的IO设置
Get_Maopi(); //获取毛皮
delay(400);
Get_Maopi(); //获取毛皮
}
void loop(){
int chk = DHT11.read(DHT11PIN);
Serial.print("Read sensor: ");
switch (chk)
{
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}
Weight=Get_Weight();//计算放在传感器上的重物重量
temp=Get_Weight();
if(temp<0){temp =0;}
dtostrf(temp,4,0,str);
// Serial.print("Humidity (%): ");
// Serial.println((float)DHT11.humidity, 1);
// Serial.print("Temperature (oC): ");
// Serial.println((float)DHT11.temperature, 1);
// Serial.print("W="); //串口显示重量
// Serial.print(Weight); //串口显示重量
// Serial.print(" g"); //显示单位
delay(400);
u8g.firstPage();
do
{
draw();
}
while ( u8g.nextPage() );
}
根据实际情况修改,不用dth11模块也可以。
Dht11.zip(1.6 KB, 下载次数: 42)
临时添加了dht11温湿度模块。
实物图
程序:
#include< HX711.h>
#include "U8glib.h"
#include< dht11.h>
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
int Weight = 0;
char str[4]; //定义重量值存储数组,5位,其中4位为数字,1位为小数点
int temp = 0; //定义重量值中间变量,,用于将获取的float型重量值转变为unsigned char数组
dht11 DHT11;
#define DHT11PIN 2
void draw(void)
{
u8g.setFont(u8g_font_8x13); //使用8x13大小的字符
u8g.setPrintPos(23, 10); // 对应 x,y 轴值
u8g.print("H:");
u8g.setPrintPos(54, 10);
u8g.print(DHT11.humidity);
u8g.setPrintPos(93, 10);
u8g.print("%");
u8g.setPrintPos(23, 26);
u8g.print("T:");
u8g.setPrintPos(54, 26);
u8g.print(DHT11.temperature);
u8g.setPrintPos(93, 26);
u8g.print("C");
u8g.setPrintPos(23, 50);
u8g.print("W:");
u8g.setPrintPos(50, 50);
u8g.print(Weight);
u8g.setPrintPos(93, 50);
u8g.print("g");
}
void setup()
{
Serial.begin(9600);
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
Init_Hx711();//初始化HX711模块连接的IO设置
Get_Maopi(); //获取毛皮
delay(400);
Get_Maopi(); //获取毛皮
}
void loop(){
int chk = DHT11.read(DHT11PIN);
Serial.print("Read sensor: ");
switch (chk)
{
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}
Weight=Get_Weight();//计算放在传感器上的重物重量
temp=Get_Weight();
if(temp<0){temp =0;}
dtostrf(temp,4,0,str);
// Serial.print("Humidity (%): ");
// Serial.println((float)DHT11.humidity, 1);
// Serial.print("Temperature (oC): ");
// Serial.println((float)DHT11.temperature, 1);
// Serial.print("W="); //串口显示重量
// Serial.print(Weight); //串口显示重量
// Serial.print(" g"); //显示单位
delay(400);
u8g.firstPage();
do
{
draw();
}
while ( u8g.nextPage() );
}
根据实际情况修改,不用dth11模块也可以。
Dht11.zip(1.6 KB, 下载次数: 42)