อันนี้เป็นโค้ดที่อ่านขา Analog (A0) โดยผมอยากสร้าง Scale monitor เเละใช้ตัวปรับค่าความต้านทานที่ขา Analog (A0) ในการจำลองอ่านค่า Voltage กับ pH โดย Scale Voltage 0-3 v ส่วน pH 4-10 เเละ 4-20 mA
อย่างตัวอย่างเช่น ป้อนเเรงดันให้ขา A0 0 v = pH 4 , 3 v = pH 10 เเบบนี้ทำได้ไหมครับ คือผมใช้ pH sensor รุ่นเก่า มันส่งเป็นสัญญาณมาตรฐาน 4-20 mA เลยต้องใช้ ตัวเเปลง เป็นเเรงดัน ป้อนเข้า Nodemcu V3 เพื่อควบคุม relay ตามเเรงดันที่เรากำหนด
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
char auth[] = "fyglxE-xxZZMaMexHhi1LZHGysuNjYhu"; //Token key
char server[] = "elec.cmtc.ac.th";
char ssid[] = "prem";
char pass[] = "01234567";
int port = 8080;
void setup() {
Serial.begin(115200);
Serial.println("กำลังเชื่อมต่อไปที่ Blynk Server");
WiFi.begin(ssid, pass); //เชื่อมต่อ WiFi
Blynk.config(auth, server, port); //กำหนด Token key , ชื่อ Server และ port
Blynk.connect(); //เชื่อมต่อไปยัง Blynk
}
BLYNK_CONNECTED() { // ฟังก์ชันนี้ทำงานเมื่อต่อ Blynk ได้
Serial.println("App Blynk ทำงาน!");
}
void loop() {
int sensorValue = analogRead(A0);
float volts = sensorValue * (3.3 / 1023.0);
if(volts >= 3.0){
Serial.print(" Voltage = ");
Serial.print(volts,2);
Serial.println(" V");
Blynk.virtualWrite(V0, volts);
}
else if(volts <3.0){
Serial.print(" Voltage = ");
Serial.print(volts,2);
Serial.println(" V");
Blynk.virtualWrite(V0, volts);
}
float ph = volts * 3.3;
Serial.print(" pH = ");
Serial.print(ph,2);
Serial.println(" ");
Blynk.virtualWrite(V1, ph);
Blynk.run();
delay(100);
}