update esp32_air_pump/esp32_air_pump_main.h.

修正bar数据
master
慕炎 2022-01-14 13:12:26 +00:00 committed by Gitee
parent e7d210c8cc
commit 0f6b59f52d
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
1 changed files with 61 additions and 54 deletions

View File

@ -20,9 +20,9 @@ bool touch_STATE[4] = {0, 0, 0, 0}; // 定义按键触发对象状态变量初
const double min_voltage = 6; //电池检测最低电压 const double min_voltage = 6; //电池检测最低电压
double bat_voltage; double bat_voltage;
double pressure_val = 0; //气压数据 如果设置初始值为-1则不检测气压 传感器强制执行
int running_type = 0; //运行状态 0不运行 1篮球 2摩托车 3汽车 4自行车 5自定义 int running_type = 0; //运行状态 0不运行 1篮球 2摩托车 3汽车 4自行车 5自定义
uint32_t running_time; uint32_t running_time;
double pressure_val = -1; //气压数据 如果设置初始值为-1则不检测气压 传感器强制执行
int pressure_type[6] = {600000, 1305485, 3762277, 3839579, 5691781, 1305485}; //气压类型 0不运行 1篮球 2摩托车 3汽车 4自行车 int pressure_type[6] = {600000, 1305485, 3762277, 3839579, 5691781, 1305485}; //气压类型 0不运行 1篮球 2摩托车 3汽车 4自行车
float running_pressure_type; float running_pressure_type;
@ -47,7 +47,7 @@ double return_voltage_value(int pin_no)
tmp = tmp + analogRead(pin_no); tmp = tmp + analogRead(pin_no);
} }
avg = tmp / 50; avg = tmp / 50;
ADCVoltage = ((avg * 3.3) / (4095)) + 0.225; ADCVoltage = ((avg * 3.3) / (4095)) + 0.138;
inputVoltage = ADCVoltage / (R2_VOLTAGE / (R1_VOLTAGE + R2_VOLTAGE)); // formula for calculating voltage in i.e. GND inputVoltage = ADCVoltage / (R2_VOLTAGE / (R1_VOLTAGE + R2_VOLTAGE)); // formula for calculating voltage in i.e. GND
return inputVoltage; return inputVoltage;
} }
@ -123,10 +123,50 @@ long readADC()
digitalWrite(clck, LOW); digitalWrite(clck, LOW);
delayMicroseconds(1); delayMicroseconds(1);
} }
return result; return result;
} }
String TimeString(int TimeMillis) {
String stringTime;
stringTime += int(TimeMillis / 60 / 60);
stringTime += ":";
stringTime += int(TimeMillis / 60 % 60);
stringTime += ":";
stringTime += TimeMillis % 60;
return stringTime;
}
String ProcessUpdate() //页面更新
{
//自动生成一串用“,”隔开的字符串。
//HTML脚本会按照“, ”分割,形成一个字符串数组。
//并把这个数组填个表格的相应部分。
String ReturnString;
if (touch_STATE[0]) {
ReturnString += TimeString((millis() - running_time) / 1000);
} else {
ReturnString += "0";
}
ReturnString += ",";
ReturnString += bat_voltage; //电压值
ReturnString += ",";
ReturnString += pressure_val; //气压值
ReturnString += ",";
ReturnString += touch_STATE[0]; //运行状态
ReturnString += ",";
ReturnString += running_type; //运行方式
ReturnString += ",";
ReturnString += running_pressure_type; //运行气压自定义
ReturnString += ",";
ReturnString += TimeString(millis() / 1000); //系统运行时间
Serial.println(ReturnString);
return ReturnString;
}
void setup() void setup()
{ {
delay(50); delay(50);
@ -270,10 +310,6 @@ void loop()
{ {
ArduinoOTA.handle(); ArduinoOTA.handle();
ESP32Server.handleClient();
delay(2);
TenthSecondsSinceStartTask();
//触摸感应处理 //触摸感应处理
touchAttach(0, T4); touchAttach(0, T4);
touchAttach(1, T3); touchAttach(1, T3);
@ -346,15 +382,17 @@ void loop()
if ( pressure_val != -1) { //传感器正常 if ( pressure_val != -1) { //传感器正常
long adcValue = readADC(); long adcValue = readADC();
pressure_val = adcValue / 100000 * 0.0689476; if(adcValue!=-1){
pressure_type[5] = running_pressure_type*100000 / 0.0689476; pressure_val = adcValue/100000 * 0.0689476 - 0.23;
}
pressure_type[5] = (running_pressure_type + 0.23) * 100000 / 0.0689476;
if (adcValue > 600000 ) { if (adcValue > 520000 ) {
Serial.print("ADC reading: "); Serial.print("ADC reading:");
Serial.print(adcValue); Serial.print(adcValue);
Serial.print("\t"); Serial.print("\t");
Serial.print(pressure_val); Serial.print(pressure_val);
Serial.print("bar\t"); Serial.print(" bar\t");
Serial.println(pressure_type[5]); Serial.println(pressure_type[5]);
} }
@ -370,7 +408,7 @@ void loop()
} }
} else { //无传感器强制启动设定时间1分钟停机 } else { //无传感器强制启动设定时间1分钟停机
if (touch_STATE[0]) { if (touch_STATE[0]) {
if ( ((millis() - running_time) / 1000) > 60 ){ if ( ((millis() - running_time) / 1000) > 60 ) {
touch_STATE[0] = 0; touch_STATE[0] = 0;
delay(500); delay(500);
digitalWrite(RelayPin[0], HIGH); digitalWrite(RelayPin[0], HIGH);
@ -379,11 +417,15 @@ void loop()
} }
} }
} }
TenthSecondsSinceStartTask();
} }
unsigned long LastMillis = 0; unsigned long LastMillis = 0;
void TenthSecondsSinceStartTask() //100ms void TenthSecondsSinceStartTask() //100ms
{ {
ESP32Server.handleClient();
delay(2);
unsigned long CurrentMillis = millis(); unsigned long CurrentMillis = millis();
if (abs(int(CurrentMillis - LastMillis)) > 100) if (abs(int(CurrentMillis - LastMillis)) > 100)
{ {
@ -391,6 +433,7 @@ void TenthSecondsSinceStartTask() //100ms
TenthSecondsSinceStart++; TenthSecondsSinceStart++;
OnTenthSecond(); OnTenthSecond();
} }
yield();
} }
bool battery_low = 0; bool battery_low = 0;
@ -426,44 +469,7 @@ void OnTenthSecond() // 100ms 十分之一秒
} }
String TimeString(int TimeMillis) {
String stringTime;
stringTime += int(TimeMillis / 60 / 60);
stringTime += ":";
stringTime += int(TimeMillis / 60 % 60);
stringTime += ":";
stringTime += TimeMillis % 60;
return stringTime;
}
String ProcessUpdate() //页面更新
{
//自动生成一串用“,”隔开的字符串。
//HTML脚本会按照“, ”分割,形成一个字符串数组。
//并把这个数组填个表格的相应部分。
String ReturnString;
if (touch_STATE[0]) {
ReturnString += TimeString((millis() - running_time) / 1000);
} else {
ReturnString += "0";
}
ReturnString += ",";
ReturnString += bat_voltage; //电压值
ReturnString += ",";
ReturnString += pressure_val; //气压值
ReturnString += ",";
ReturnString += touch_STATE[0]; //运行状态
ReturnString += ",";
ReturnString += running_type; //运行方式
ReturnString += ",";
ReturnString += running_pressure_type; //运行气压自定义
//Serial.println(ReturnString);
return ReturnString;
}
void PocessControl(int DeviceType, int DeviceIndex, int Operation, float Operation2) void PocessControl(int DeviceType, int DeviceIndex, int Operation, float Operation2)
{ {
@ -475,16 +481,16 @@ void PocessControl(int DeviceType, int DeviceIndex, int Operation, float Operati
if (Operation % 3 == 0) if (Operation % 3 == 0)
{ //重新设置传感器 { //重新设置传感器
pressure_val =0; pressure_val = 0;
pinMode(ndrdy, INPUT); pinMode(ndrdy, INPUT);
digitalWrite(ndrdy, LOW); digitalWrite(ndrdy, LOW);
pinMode(clck, OUTPUT); pinMode(clck, OUTPUT);
digitalWrite(clck, LOW); digitalWrite(clck, LOW);
while (digitalRead(ndrdy)) {} while (digitalRead(ndrdy)) {}
while (!digitalRead(ndrdy)) {} while (!digitalRead(ndrdy)) {}
} }
else if (Operation % 3 == 1) else if (Operation % 3 == 1)
{ {
@ -535,6 +541,7 @@ void handleNotFound()
// 获取用户请求网址信息 // 获取用户请求网址信息
String webAddress = ESP32Server.uri(); String webAddress = ESP32Server.uri();
int AutheTimes = 0; int AutheTimes = 0;
//Serial.println(pressure_val);
if (!ESP32Server.authenticate(username, userpassword)) //校验用户是否登录 if (!ESP32Server.authenticate(username, userpassword)) //校验用户是否登录
{ {