Here is my full code.
#include <Wire.h>
#include <RtcDS3231.h>
#include <SPI.h>
#include <SD.h>
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
const int pinCS = 15;
const int trigPin = 2;
const int echoPin = 0;
float soundVelocity = 0.034;
File myFile;
RtcDS3231 rtcObject(Wire);
const char* ssid = "iPhone";
const char* password = "12345asd";
const char* host = "script.google.com";
const int httpsPort = 443;
// Use WiFiClientSecure class to create TLS connection
WiFiClientSecure client;
// SHA1 fingerprint of the certificate, don't care with your GAS service
const char* fingerprint = "46 B2 C3 44 9C 59 09 8B 01 B6 F8 BD 4C FB 00 74 91 2F EF F6";
String GAS_ID = "AKfycbwLP--JZLPHfbW0qBrQX6gANFpPNnsIBHLcUZwUl9Yk8EdyeIxR";
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(pinCS, OUTPUT);
digitalWrite(pinCS, HIGH);
Serial.begin(115200); //Serial
rtcObject.Begin();
Serial.println();
if(SD.begin()) {
Serial.print("SD card is ready to use.");
Serial.print("\n");
} else {
Serial.println("SD card initialization failed.");
return;
}
Serial.print("connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
float distance = getDistance();
RtcDateTime currentTime = rtcObject.GetDateTime();
char str[10];
sprintf(str, "%d%d%d",currentTime.Hour(),currentTime.Minute(),currentTime.Second());
Serial.println(str);
delay(100);
Serial.print("distance(cm) = ");
Serial.print(distance);
Serial.print("\n");
myFile = SD.open("distance.txt", FILE_WRITE);
if(myFile) {
Serial.println("Writing to file...");
myFile.println(str);
myFile.println(distance);
myFile.println("\n");
sendData(str, distance);
myFile.close();
Serial.println("Done!");
} else {
Serial.println("Error opening the file.");
}
//delay(100);
}
void sendData(char times,int dis1)
{
Serial.print("Connecting to : ");
Serial.println(host);
if (!client.connect(host, httpsPort)) {
Serial.println("Connection failed");
return;
}
if (client.verify(fingerprint, host)) {
Serial.println("Certificate matched.");
} else {
Serial.println("Certificate is not matched.");
}
String string_time = String(times, DEC);
String string_distance = String(dis1, DEC);
//String string_distance2 = String(dis2, DEC);
String url = "/macros/s/" + GAS_ID + "/exec?time=" + string_time + "&distance1=" + string_distance;
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");
}
float getDistance()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long highleveltime = pulseIn(echoPin, HIGH);
float distance = (float (highleveltime) * soundVelocity) / 2.0;
return distance;
delay(500);
}
I'm actually trying to save the timestamp inside a memory and its form is like this for example 20:11:33 . Yet, I don't know how to define its type data inside that function. Much appreciated if you could help me out.