นวัตกรรม สิ่งประดิษฐ์ และเทคโนโลยี

กรุณา เข้าสู่ระบบ หรือ สมัครสมาชิก.

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
การค้นหาขั้นสูง  

ผู้เขียน หัวข้อ: NodeMCU V3 ส่งค่า A0 ขึ้นเว็บ  (อ่าน 13 ครั้ง)

NAWATTAKAM

  • Administrator
  • Sr. Member
  • *****
  • กระทู้: 365
NodeMCU V3 ส่งค่า A0 ขึ้นเว็บ
« เมื่อ: มีนาคม 30, 2019, 02:24:40 PM »

ใช้ A0 วัดสัญญาณ ค่า 0-3.3V

โดยใช้ฟังชั่น analogRead(; อ่านค่า จะค่า 0-1023
และใช้ readVolte() แปลงเป็นค่าแรงดัน


โค๊ด
#include <ESP8266WiFi.h>

int adc = A0;

const char* ssid = "3BB_xxxxx"; //// ใส่ชื่อ wifi
const char* password = "YYYYYYY";   //// ใส่พาสเวิร์ด wifi

String readStrings = ""; // สร้างตัวแปรมาเก็บข้อมูลค่าที่ส่งเข้ามา

WiFiServer server(80); //สร้าง object ของ class WiFiServer ขึ้นมาและส่งค่าพารามิเตอร์ 80 เพื่อกำหนดพอร์ต

void setup() {
  Serial.begin(9600); //กำหนด baudrate
  delay(10);

  Serial.println();
  Serial.print("Connecting to ");

  Serial.println(ssid); //แสดงข้อความ Connecting to (ชื่อ SSID ที่เราตั้ง) ผ่านทาง Serial
 
  WiFi.begin(ssid, password); // เริ่มเชื่อมต่อไปยัง ssid และ password ที่เรากำหนด
 
  while (WiFi.status() != WL_CONNECTED) { // ถ้ายังไม่เชื่อมต่อกับ wifi ให้ทำการวน loop ไปเรื่อย ๆ และ print ข้อความ ... ออกมา
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");//เมื่อเชื่อมต่อกับ wifi ได้แล้วให้ แสดง WiFi connected ผ่าน Serial
 
  // Start the server
  server.begin(); //ให้ทำการเริ่ม server
  Serial.println("Server started"); //แสดงข้อความว่า Server started ผ่าน Serial

  // Print the IP address
  Serial.println(WiFi.localIP()); //แสดง IP Address ทาง Serial

pinMode(adc, INPUT);

}

double readVolte() {
//สูตรคำนวน volte = ค่าที่อ่านได้จาก A0 * Vcc สูงสุดคือ 3.3V / ค่าที่อ่านได้สูงสุดจาก A0 คือ 1023;
int val = analogRead(adc);
double cal = val * 3.3 / 983;
return cal;
}


void loop() {


 Serial.println(readVolte());
  // put your main code here, to run repeatedly:
  WiFiClient client = server.available(); // สร้าง object ชื่อ client จาก class WiFiClient ให้เท่ากับ Server.available()
 if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    bool currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
   
       if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 0.5");  // refresh the page automatically every 0.5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.print("analog input ");
          client.print(readVolte());
          client.println(" V <br />");
          client.println("</html>");
        break;
      }
      if (c == '\n') {
        // you're starting a new line
          currentLineIsBlank = true;
        } else if (c != '\r') {
          // you've gotten a character on the current line
         currentLineIsBlank = false;
      }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
  }

 


บันทึกการเข้า