เช็คโค้ดให้หน่อยครับ ผมจะอ่านค่าโวล์จาก ขา A0 แล้วส่งค่าไปเข้า Blynk โชร์เป็น Gauge และส่งค่าเข้า Line ด้วย ผมต้องแก้ตรงไหนครับ

แนะนำหน่อยครับ

ข้อความเข้า Line ได้แล้วเหลือค่าที่อ่านได้จาก A0 ยังไม่ได้

เอาโค้ตเต็มๆ มาดูหน่อยครับ ตัดมาบางส่วนวิเคราะห์ไม่ถูกครับ


#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <TridentTD_LineNotify.h>
#include <stdio.h>

//#define SSID        "Kornkanok-2.4G"
//#define PASSWORD    "0897500133"
#define LINE_TOKEN    "KFvGp9jsFD17uX2pFkRUuA8OFg4coSWPIvSOAtJ0GX7" //Line TOKEN
#define INPUT1 D4     //GPIO2
#define INPUT2 D7     //GPIO13
#define INPUT3 D6     //GPIO12
#define AnalogIN A0
#define OUTPUT1 D0    //GPIO16
#define OUTPUT2 D1    //GPIO5
#define OUTPUT3 D2    //GPIO4
#define OUTPUT4 D5    //GPIO14
#define aref_voltage 3.3 

char auth[] = "IFbabL-4B55zHPt8ibB1nErKvw97jVLG";   //Key From Blynk
char ssid[] = "Kornkanok-2.4G";                    //Wifi Name
char pass[] = "0897500133";                           //Wifi Password
int i;
bool lock11 = false; //ล็อคสถานะONของinput1
bool lock12 = false; //ล็อคสถานะOFFของinput1
bool lock21 = false; //ล็อคสถานะONของinput2
bool lock22 = false; //ล็อคสถานะOFFของinput2
bool lock31 = false; //ล็อคสถานะONของinput3
bool lock32 = false; //ล็อคสถานะOFFของinput3
BlynkTimer timer1;
BlynkTimer timer2;
BlynkTimer timer3;
BlynkTimer timer4;
BlynkTimer timer5;
WidgetLED led1(V1);
WidgetLED led2(V2);
WidgetLED led3(V3);


void timerEvent1()
{
  if(digitalRead(D4)==LOW)
    led1.on();
  else
    led1.off();
  if(digitalRead(D7)==LOW)
    led2.on();
  else
    led2.off();
  if(digitalRead(D6)==LOW)
    led3.on();
  else
    led3.off();
    
}


void timerEvent2()
{
 
  int current = analogRead(AnalogIN);  
  analogRead(AnalogIN);
  delay(10); 
  // converting that reading to voltage, for 3.3v arduino use 3.3, for 5.0, use 5.0
  float voltageA0 = current *(aref_voltage / 1023.0);  
  float Amp = ((voltageA0*9.09)-0.23); //rang 0-30
  
  Blynk.virtualWrite(V0,Amp); 
  //analogRead(AnalogIN); 
  delay(10);
  Serial.println(Amp);
  Serial.println(V0);
  delay(2000);
    
}

void timerEvent3()
{
  if(digitalRead(INPUT1)==LOW)   
{
    if(lock11 == false){
    delay(3000);
    LINE.notify("มอเตอร์บ่อใหญ่_On");
    Serial.println("Motor1_On");
    delay(5000);
    String Amp
    String LineText1;
    String string1 = "ค่ากระแสไฟ = ";
    String string2 = "A";
    LineText1 = string1+ (V0) +string2;
    Serial.println(LineText1);
    LINE.notify(LineText1);
    lock11 = true;
    }
        delay(5);
      
    }
    else{
      lock11 = false;
     
 }
 
 if(digitalRead(INPUT1)==HIGH)   
{
    if(lock12 == false){
    //delay(3000);
    LINE.notify("มอเตอร์บ่อใหญ่_OFF");
    Serial.println("Motor1_Off");
    
    lock12 = true;
    }
        delay(5);
}   
    else{
      lock12 = false;
    } 
}

void timerEvent4()
{
  if(digitalRead(INPUT2)==LOW)   
{
    if(lock21 == false){
    delay(3000);
    LINE.notify("มอเตอร์บ่อ1_ON");
    Serial.println("Motor2_On");
    delay(5000);
   
    String LineText2;
    String string21 = "ค่ากระแสไฟ = ";
    String string22 = "A";
    LineText2 = string21+ (V0) +string22;
    Serial.println(LineText2);
    LINE.notify(LineText2);
    lock21 = true;
    }
        delay(5);
      
    }
    else{
      lock21 = false;
     
 }
 
 if(digitalRead(INPUT2)==HIGH)   
{
    if(lock22 == false){
    //delay(3000);
    LINE.notify("มอเตอร์บ่อ1_OFF");
    Serial.println("Motor2_Off");
    
    lock22 = true;
    }
        delay(5);
}   
    else{
      lock22 = false;
    } 
}
void timerEvent5()
{
  if(digitalRead(INPUT3)==LOW)   
{
    if(lock31 == false){
    delay(3000);
    LINE.notify("มอเตอร์บ่อ2_3_ON");
    Serial.println("Motor2_3_On");
    delay(5000);
  
    String LineText3;
    String string31 = "ค่ากระแสไฟ = ";
    String string32 = "A";
    LineText3 = string31+ (V0) +string32;
    Serial.println(LineText3);
    LINE.notify(LineText3);
    lock31 = true;
    }
        delay(5);
      
    }
    else{
      lock31 = false;
     
 }
 
 if(digitalRead(INPUT3)==HIGH)   
{
    if(lock32 == false){
    //delay(3000);
    LINE.notify("มอเตอร์บ่อ2_3_OFF");
    Serial.println("Motor3_Off");
    
    lock32 = true;
    }
        delay(5);
}   
    else{
      lock32 = false;
    } 
}

void setup() {
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
 
//  timer3.setInterval(2000L, timerEvent3);
  Serial.printf("WiFi connecting to %s\n",  ssid);
  while(WiFi.status() != WL_CONNECTED) 
  { Serial.print("."); 
  delay(400);
  }
  Serial.printf("\nWiFi connected\nIP : ");
  Serial.println(WiFi.localIP());  
  timer1.setInterval(2000L, timerEvent1);
  timer2.setInterval(2000L, timerEvent2);
  timer3.setInterval(2000L, timerEvent3);
  timer4.setInterval(2000L, timerEvent4);
  timer5.setInterval(2000L, timerEvent5);
  pinMode(INPUT1,INPUT);        
  pinMode(INPUT2,INPUT_PULLUP);
  pinMode(INPUT3,INPUT_PULLUP);
  pinMode(OUTPUT1,OUTPUT);
  pinMode(OUTPUT2,OUTPUT);
  pinMode(OUTPUT3,OUTPUT);
  pinMode(OUTPUT4,OUTPUT); 
 
  // กำหนด Line Token
  LINE.setToken(LINE_TOKEN);
  LINE.notify("Motor_Monitor Ready");
  
}

void loop() {
  
  Blynk.run();
  timer1.run();
  timer2.run();
  timer3.run();
  timer4.run();
  timer5.run(); 
  Blynk.virtualWrite(OUTPUT1,LOW);
  Blynk.virtualWrite(OUTPUT2,LOW);
  Blynk.virtualWrite(OUTPUT3,LOW);
  Blynk.virtualWrite(OUTPUT4,LOW);
 
  
 }

ตอนนี้อ่านค่าจาก A0 ได้แล้วครับเหลือ จะเอาค่าที่คำนวณจาก A0 มาส่งเข้าไลน์ครับ

อ่านได้อย่างไร แก้ไขอะไรไปถึงได้หรอครับ

void timerEvent2()
{
 
  int current = analogRead(AnalogIN);  
  analogRead(AnalogIN);
  delay(10); 
  // converting that reading to voltage, for 3.3v arduino use 3.3, for 5.0, use 5.0
  float voltageA0 = current *(aref_voltage / 1023.0);  
  float Amp = ((voltageA0*9.09)-0.23); //rang 0-30
  
  Blynk.virtualWrite(V0,Amp); 
  //analogRead(AnalogIN); 
  delay(10);
  Serial.println(Amp);
  Serial.println(V0);
  delay(2000);
    
}

เพิ่มตรงนี้เข้าไปครับ ตอนนี้ตอดตรงเอาค่าที่คำนวณได้ มาโชร์ ใน Line ครับ

ตามนี้ครับ

โอเครครับตอนนี้ได้แล้วครับ ต้องเอาคำสั่ง

int current = analogRead(AnalogIN);  
  analogRead(AnalogIN);
  delay(10); 
  // converting that reading to voltage, for 3.3v arduino use 3.3, for 5.0, use 5.0
  float voltageA0 = current *(aref_voltage / 1023.0);  
  float Amp = ((voltageA0*9.09)-0.23); //rang 0-30

ใส่ลงไปทุก void ของการเช็คสถานะ input ของทุก Input เลยครับ
อยากจะสอบถามเพิ่มเติมครับถ้าอยากจะตรวจเช็ค สถานะ Input ว่าถ้า on ทั้ง 3 Input แล้วค่ากระแสที่อ่านได้ไม่ถึงค่าที่กำหนดให้ส่งข้อความเข้า Line ต้องเพิ่ม code ยังไงตรงไหนครับ

เอาลายละเอียดไปตั้งกระทู้ใหม่เลย เดียวจะไปตอบให้ครับ

free
hit counter