#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(D5, D6); //rx,tx
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);
#define RE D7
#define DE D7
const byte O2[] = {0x01 ,0x03 ,0x00 ,0x00 ,0x00 ,0x02 ,0xC4 ,0x0B};
byte values[20];
#define WIFI_SSID "iPhone" // user wifi
#define WIFI_PASSWORD "00000000" // รหัสไวไฟ //
//----------------------------------------Host & httpsPort
const char* host = "script.google.com";
const int httpsPort = 443;
//----------------------------------------
WiFiClientSecure client; //--> Create a WiFiClientSecure object.
String command = "";
char commandStart = '<';
char commandEnd = '>';
String data[10];
String cmd[10];
String GAS_ID = "AKfycbyHKQRvpoMQC1en39Jcm_RwSaW2C3naWpGyvijuByRdjD2Oei_XsjrLTJtaihqhf-Xjqg"; //--> spreadsheet script ID
String url;
String data_send;
int ec_val[3];
int tds_val[3];
unsigned long previousMillis = 0;
const long interval = 1000;
unsigned long previousMillis2 = 0;
const long interval2 = 10000;
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
lcd.begin (16,2);
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
pinMode(RE, OUTPUT);
pinMode(DE, OUTPUT);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
client.setInsecure();
}
void handle2(String command2) {
Serial.println("Received: '" + command2 + "'");
tds_val[2]= getStringPartByNr(command2, ',', 0).toInt();
}
void loop() {
while (Serial.available() > 0) {
int input = Serial.read();
if (input == commandStart) {
command = "";
} else if (input == commandEnd) {
handle2(command);
command = "";
} else {
command += (char)input;
}
}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
Calculate();
tds_val[1] = int(values[5]<<8|values[6]);
ec_val[1] = int(values[3]<<8|values[4]);
lcd.setCursor(0,0);
lcd.print("TDS1:");
lcd.print(tds_val[1]);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("TDS2:");
lcd.print(tds_val[2]);
lcd.print(" ");
}
unsigned long currentMillis2 = millis();
if (currentMillis2 - previousMillis2 >= interval2) {
previousMillis2 = currentMillis2;
data_send="value1="+String(tds_val[1])+"&value2="+String(tds_val[2])+"";
sendData(data_send);
}
}
byte Calculate() {
digitalWrite(DE, HIGH);
digitalWrite(RE, HIGH);
delay(10);
if (mySerial.write(O2, sizeof(O2)) == 8) {
digitalWrite(DE, LOW);
digitalWrite(RE, LOW);
for (byte i = 0; i < 11; i++) {
//Serial.print(mySerial.read(),HEX);
values[i] = mySerial.read();
Serial.print(values[i], HEX);
Serial.print(" ");
}
Serial.println();
return values[6];
}
}
// Subroutine for sending data to Google Sheets
void sendData(String val) {
Serial.println("==========");
Serial.print("connecting to ");
Serial.println(host);
//----------------------------------------Connect to Google host
if (!client.connect(host, httpsPort)) {
Serial.println("connection failed");
return;
}
//----------------------------------------
// String url = "/macros/s/" + GAS_ID + "/exec?value1=" + String(random(0,100)) + "&value2=" + String(random(0,100))+ "&value3=" + String(random(0,100));
url = "/macros/s/" + GAS_ID + "/exec?"+val+"";
Serial.print("requesting URL: ");
Serial.println(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"User-Agent: BuildFailureDetectorESP8266\r\n" +
"Connection: close\r\n\r\n");
Serial.println("request sent");
Serial1.println("<Sending>");
//----------------------------------------
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
Serial.println("headers received");
Serial1.println("<Received>");
break;
}
}
String line = client.readStringUntil('\n');
Serial.print("reply was : ");
Serial.println(line);
Serial1.println("<Send OK>");
Serial.println("closing connection");
Serial.println("==========");
Serial.println();
//----------------------------------------
}
String getStringPartByNr(String data, char separator, int index)
{
int stringData = 0;
String dataPart = "";
for(int i = 0; i<data.length()-1; i++) {
if(data[i]==separator) {
stringData++;
}else if(stringData==index) {
dataPart.concat(data[i]);
}else if(stringData>index) {
return dataPart;
break;
}
}
return dataPart;
}
Include the entire error message. It is easy to do. There is a button (lower right of the IDE window) called "copy error message". Copy the error and paste into a post in code tags. Paraphrasing the error message leaves out important information.
Post a schematic.
Post an image of your project.
Which Micro Controller are you using?
Is this simulator code?
Please describe the problem better then you just did.
C:\Users\golfz\AppData\Local\Temp\arduino_modified_sketch_973979\sketch_apr10a.ino: In function 'byte Calculate()':
sketch_apr10a:123: error: control reaches end of non-void function [-Werror=return-type]
123 | }
| ^
cc1plus.exe: some warnings being treated as errors
Multiple libraries were found for "ESP8266WiFi.h"
Used: C:\Users\golfz\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\ESP8266WiFi
Not used: C:\Program Files (x86)\Arduino\libraries\ESP8266WiFi
Multiple libraries were found for "SoftwareSerial.h"
Used: C:\Users\golfz\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SoftwareSerial
Not used: C:\Users\golfz\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SoftwareSerial-master
Not used: C:\Users\golfz\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\EspSoftwareSerial-8.0.1
Not used: C:\Program Files (x86)\Arduino\libraries\SoftwareSerial-master
Not used: C:\Program Files (x86)\Arduino\libraries\EspSoftwareSerial-8.0.1
Not used: C:\Program Files (x86)\Arduino\libraries\EspSoftwareSerial
Multiple libraries were found for "Wire.h"
Used: C:\Users\golfz\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\Wire
Not used: C:\Program Files (x86)\Arduino\libraries\Wire
Multiple libraries were found for "LiquidCrystal_I2C.h"
Used: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C
Not used: C:\Users\golfz\Documents\Arduino\libraries\libraries\libraries\LiquidCrystal_I2C
Not used: C:\Program Files (x86)\Arduino\libraries\arduino_545735
Not used: C:\Program Files (x86)\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master
Using library ESP8266WiFi at version 1.0 in folder: C:\Users\golfz\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\ESP8266WiFi
Using library SoftwareSerial at version 1.0 in folder: C:\Users\golfz\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SoftwareSerial
Using library Wire at version 1.0 in folder: C:\Users\golfz\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\Wire
Using library LiquidCrystal_I2C in folder: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_I2C (legacy)
exit status 1
control reaches end of non-void function [-Werror=return-type]
Which Micro Controller are you using?
wemos d1 mini
What does byte Calculate() return if if (mySerial.write(O2, sizeof(O2)) == 8) does not evaluate as true?
Change
to
byte Calculate() {
digitalWrite(DE, HIGH);
digitalWrite(RE, HIGH);
delay(10);
if (mySerial.write(O2, sizeof(O2)) == 8) {
digitalWrite(DE, LOW);
digitalWrite(RE, LOW);
for (byte i = 0; i < 11; i++) {
//Serial.print(mySerial.read(),HEX);
values[i] = mySerial.read();
Serial.print(values[i], HEX);
Serial.print(" ");
}
Serial.println();
return values[6];
}
return 0;
}
You need to return a value or you make the Calculate to "void".
If you want a void, use this:
void Calculate() {
digitalWrite(DE, HIGH);
digitalWrite(RE, HIGH);
delay(10);
if (mySerial.write(O2, sizeof(O2)) == 8) {
digitalWrite(DE, LOW);
digitalWrite(RE, LOW);
for (byte i = 0; i < 11; i++) {
//Serial.print(mySerial.read(),HEX);
values[i] = mySerial.read();
Serial.print(values[i], HEX);
Serial.print(" ");
}
Serial.println();
}
}
Tipp: you can format your File with Right-Click and Automatic Formatting.
Where is the latest code you ae using to get that number. BTW, does 65535 ring a bell? Look up the max number a 16 bit unsigned int can hold.
What you up to?
I'ts hard to understand, what do you want.
Hi,
Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?
Hand drawn and photographed is perfectly acceptable.
Please include ALL hardware, power supplies, component names and pin labels.
What is your code supposed to do?
What does your code do?
Did you develop your code in stages, and get each stage working before going onto the next.
Then when all stages are working , add them together ONE at a time, each time getting the new code to work.
Thanks.. Tom..
![]()
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.
