小弟做一个毕业设计 要用到的代码在下面 求大神帮忙写一下注释 谢谢
数据采集端
#include <Wire.h>
#include <LiquidCrystal_I2CT.h>
#include <DHT22.h>
//--------------------------------------------------
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define DHT22_PIN 7
// Setup a DHT22 instance
DHT22 myDHT22(DHT22_PIN);
float HUM = 0;
float TEMP = 0;
//read dth senor data
void readData() {
DHT22_ERROR_t errorCode;
errorCode = myDHT22.readData();
switch (errorCode)
{
case DHT_ERROR_NONE:
TEMP = myDHT22.getTemperatureC();
HUM = myDHT22.getHumidity();
// Serial.print("Got Data ");
// Serial.print(TEMP);
// Serial.print("C ");
// Serial.print(HUM);
// Serial.println("%");
// Alternately, with integer formatting which is clumsier but more compact to store and
// can be compared reliably for equality:
//
// char buf[128];
// sprintf(buf, "Integer-only reading: Temperature %hi.%01hi C, Humidity %i.%01i %% RH",
// myDHT22.getTemperatureCInt() / 10, abs(myDHT22.getTemperatureCInt() % 10),
// myDHT22.getHumidityInt() / 10, myDHT22.getHumidityInt() % 10);
// Serial.println(buf);
lcd.setCursor(0, 1); //newline
lcd.print(TEMP);
lcd.print("C");
lcd.print(HUM);
lcd.print("% ");
break;
case DHT_ERROR_CHECKSUM:
TEMP = myDHT22.getTemperatureC();
HUM = myDHT22.getHumidity();
// Serial.print("check sum error ");
// Serial.print(TEMP);
// Serial.print("C ");
// Serial.print(HUM);
// Serial.println("%");
break;
case DHT_BUS_HUNG:
Serial.println("BUS Hung ");
break;
case DHT_ERROR_NOT_PRESENT:
Serial.println("Not Present ");
break;
case DHT_ERROR_ACK_TOO_LONG:
Serial.println("ACK time out ");
break;
case DHT_ERROR_SYNC_TIMEOUT:
Serial.println("Sync Timeout ");
break;
case DHT_ERROR_DATA_TIMEOUT:
Serial.println("Data Timeout ");
break;
case DHT_ERROR_TOOQUICK:
Serial.println("Polled to quick ");
break;
}
}
// 取得测量值
float Get_AD() {
//return random(295, 305);
return HUM;
}
// 消抖滤波法
#define FILTER_N 12
float Value;
int i = 0;
float Filter() {
float new_value;
new_value = Get_AD();
if (Value != new_value) {
i++;
if (i > FILTER_N) {
i = 0;
Value = new_value;
}
}
else
i = 0;
return Value;
}
void setup() {
//开启传感器电
pinMode(8, OUTPUT);
digitalWrite(8, HIGH);
// pinMode(11, OUTPUT); //该端口需要选择有#号标识的数字口
// put your setup code here, to run once:
Serial.begin(9600);
Serial1.begin(9600);
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
//lcd.print("Light Reader:"); // Print a message to the LCD.
lcd.blink();
}
unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds
boolean lastConnected = false; // state of the connection last time through the main loop
const unsigned long postingInterval = 8 * 1000; // delay between updates, in milliseconds
void loop() {
DHT22_ERROR_t errorCode;
Serial.println("");
Serial1.println("");
readData();
float Filter_Value = Filter();
Serial.print(Filter_Value);
Serial.print(",");
Serial.print(TEMP);
Serial.print("|");
Serial1.print(Filter_Value);
Serial1.print(",");
Serial1.print(TEMP);
Serial1.print("|");
delay(1000);
}
接收端
#include <Wire.h>
#include <LiquidCrystal_I2CT.h>
//--------------------------------------------------
LiquidCrystal_I2C lcd(0x27, 16, 2);
String comdata = "";
char buffer[18];
int numdata[2] = {0};
int outPin=11;
int mark = 0;
void setup() {
pinMode(outPin, OUTPUT);//define out pwm
// put your setup code here, to run once:
Serial.begin(9600);
Serial1.begin(9600);
lcd.init(); // initialize the lcd
lcd.backlight(); //Open the backlight
lcd.print("Remote Data:"); // Print a message to the LCD.
lcd.blink();
}
void loop() {
int j = 0;
// put your main code here, to run repeatedly:
while (Serial1.available() > 0)
{
char cc = char(Serial1.read());
if (cc == '|') {
mark = 1;
} else {
comdata += cc;
delay(2);
}
}
if (mark == 1)
{
mark = 0;
Serial.println(comdata);
Serial.println(comdata.length());
//string token,将data按照空格或者,进行分割并截取
Serial.print("***");
// Serial.println(parameter);
int position = comdata.indexOf(',');
String hum = comdata.substring(2, position);
String temp = comdata.substring(position + 1, comdata.length() - 1);
lcd.setCursor(0, 1); //newline
lcd.print(hum);
lcd.print("% ");
lcd.print(temp);
lcd.print("C");
int hum_int= atoi(hum.c_str());
analogWrite(outPin, 150+hum_int);
comdata = String("");
}
}
|