ใครรู้เรื่อง arduino รบกวนอธิบายโค้ดให้ทีค่ะ

พอดีได้เขียนโปรแกรมใน arduino เป็นครั้งแรก แล้วยิ่งพื้นฐาน c++ ไม่แน่นเลย ไปเจอโค้ดนี้ในเน็ตมารบกวนช่วยอธิบายให้ทีนะคะ

#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>  
#include <LiquidCrystal_I2C.h>



SoftwareSerial esp8266(2,3); //  RX  is pin 2,  TX Arduino line is pin 3.
#define DEBUG true                            
#define ONE_WIRE_BUS 7

  OneWire oneWire(ONE_WIRE_BUS);
  DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup()
{
  Serial.begin(9600);
  esp8266.begin(9600);

  sendData("AT+RST\r\n",2000,DEBUG); // rst
  sendData("AT+CWMODE=3\r\n",1000,DEBUG); //  access point
  sendData("AT+CIFSR\r\n",1000,DEBUG); // get ip address
  sendData("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections
  sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80


sensors.begin();
   lcd.begin(16,2);
    lcd.backlight();
  lcd.clear();
  lcd.setCursor(0,0);

}

void loop()
{
  
  if(esp8266.available()) // check if the esp is sending a message
  {
  
    
    if(esp8266.find("+IPD,"))
    {
       sensors.requestTemperatures();
        float x=sensors.getTempCByIndex(0);
         lcd.setCursor(0,0);
    lcd.print("Temperature: ");
      lcd.setCursor(0,1);
      lcd.print("          ");
        lcd.setCursor(0,1);
    lcd.print(x);
     delay(300);

     int connectionId = esp8266.read()-48; // subtract 48 because the read() function returns
                                           // the ASCII decimal value and 0 (the first decimal number) starts at 48
                                           // '0' - 48 = 0
                                           // '1' - 48 = 1
    
  String webpage = "<head><meta http-equiv=""refresh"" content=""10""></head>";
  webpage+="<h1>Temperature</h1><h2>";
  webpage+= x;
  webpage+="</h2>";
     String cipSend = "AT+CIPSEND=";
     cipSend += connectionId;
     cipSend += ",";
     cipSend +=webpage.length();
     cipSend +="\r\n";
    
     sendData(cipSend,1000,DEBUG);
     sendData(webpage,1000,DEBUG);
    
  
     String closeCommand = "AT+CIPCLOSE=";
     closeCommand+=connectionId; // append connection id
     closeCommand+="\r\n";
    
     sendData(closeCommand,3000,DEBUG);
    }
  }
}


String sendData(String command, const int timeout, boolean debug)
{
    String response = "";
    
    esp8266.print(command); // send the read character to the esp8266
    
    long int time = millis();
    
    while( (time+timeout) > millis())
    {
      while(esp8266.available())
      {
        
        // The esp has data so display its output to the serial window
        char c = esp8266.read(); // read the next character.
        response+=c;
      }  
    }
    
    if(debug)
    {
      Serial.print(response);
    }
    
    return response;
}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่