极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13554|回复: 1

求大神帮忙写一下程序注释

[复制链接]
发表于 2016-5-7 23:14:09 | 显示全部楼层 |阅读模式
小弟做一个毕业设计 要用到的代码在下面 求大神帮忙写一下注释  谢谢

数据采集端



#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("");

  }
}


回复

使用道具 举报

发表于 2016-5-9 17:00:54 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 23:13 , Processed in 0.106266 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表