Buenas días, busco ayuda con la parte de mi código lo que busco es que en mi documento sheet (ese Excel pero de Google drive), lea valores hh:mm de una columna, para ser mas exacto la columna B, y que un led parpadee respecto a la cantidad numérica colocada en la columna C.
Mi inconveniente y ayuda que necesito es que cuando yo coloque una hora en una celda B(i), parpadee el led la cantidad de veces en C(i), ejemplo seria:
B3= 14:23 , C3=5---> Cuando llegue la hora de 14:23 el led parpadea 5 veces.
***NOTA: mi codigo es capaz de leer los valores colocados en las celdas, pero la rutina de parpadeo de led en la hora especifica que deseo o que coloco en mi sheet y la cantidad de veces que parpadea no la hace., ademas deseo mantener su rutina de impresion y deteccion, osea lo que ya tiene dentro el void readAutomaticSheet(),
lo siga manteniendo ***
NOTA 2: trate de usar la pagina Current time in America/Lima, via World Time API: Simple JSON/plain-text API to obtain the current time in, and related data about, a timezone. , con otro codigo muy diferente y me funciono correctamente, pero cuando intento implementarlo en el código de mi proyecto no funciona, les adjunto mi código del proyecto donde necesito ayuda.
NOTA 3: Los datos de wifi, contraeña , ID y apikey lo borre por seguridad.
NOTA 4: Todo lo deseo para el void readAutomaticSheet(),
ya que esa parte hace que lea e imprima lo que hay en mi documento sheet.
NOTA 5: ignoren la parte o biblioteca que dicen servo o que no tiene que ver con el void readAutomaticSheet(),
, ya que mas abajo hay otro void, pero es para otra cosa diferente que no tiene nada que ver si afecta a void que quiero modificar
#include <WiFi.h>
#include <HTTPClient.h>
#include <Arduino_JSON.h>
#include <TimeLib.h>
#include <ESP32Servo.h>
const char* ssid = " ";
const char* password = " ";
const char* sheetID = " ";
const char* apiKey = " ";
const int LED_PIN = 2; // Define el pin del LED azul del ESP32
const int SERVO_PIN = 5; // Pin utilizado para controlar el servo motor
Servo myservo; // Creamos un objeto de tipo Servo
void setup() {
Serial.begin(115200);
delay(1000); // Espera para que la conexión serial se estabilice
connectToWiFi();
configTime(0, 0, "pool.ntp.org"); // Configura la hora desde un servidor NTP
pinMode(LED_PIN, OUTPUT);
}
unsigned long lastCheckTime = 0;
const unsigned long checkInterval = 1000; // Verificar cada 1 segundo
void loop() {
unsigned long currentTime = millis();
// Verificar si ha pasado suficiente tiempo desde la última verificación
if (currentTime - lastCheckTime >= checkInterval) {
// Realizar la verificación de las hojas de Google Sheets
readAutomaticSheet();
readManualSheet();
// Actualizar el tiempo de la última verificación
lastCheckTime = currentTime;
}
}
void connectToWiFi() {
Serial.println("Conectando a WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando...");
}
Serial.println("Conectado a la red WiFi");
}
unsigned long lastAutomaticCheckTime = 0; // Declaración única de lastAutomaticCheckTime
String lastAutomaticValue = ""; // Declaración única de lastAutomaticValue
unsigned long lastManualCheckTime = 0; // Declaración de lastManualCheckTime
String lastManualValue = ""; // Variable para almacenar el último valor de MANUAL
void readAutomaticSheet() {
unsigned long currentTime = millis();
if (currentTime - lastAutomaticCheckTime >= 1000) { // Leer cada segundo
lastAutomaticCheckTime = currentTime;
// Construir la URL para obtener los datos de la hoja AUTOMATICO
String url = "https://sheets.googleapis.com/v4/spreadsheets/" + String(sheetID) + "/values/AUTOMATICO!B2:C13?key=" + String(apiKey);
HTTPClient http;
http.begin(url);
int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
JSONVar response = JSON.parse(payload);
String currentAutomaticValue = ""; // Variable para almacenar el valor actual de AUTOMATICO
// Recorrer los valores de la respuesta JSON
for (int i = 0; i < 12; i++) {
String hora = response["values"][i][0];
String valor = response["values"][i][1];
// Construir el valor actual de AUTOMATICO
if (hora != "" && valor != "") {
currentAutomaticValue += "COMIDA (" + String(i + 1) + ") Hora: " + hora + ", Valor: " + valor + "\n";
}
}
// Verificar si el valor actual es diferente al último valor almacenado
if (currentAutomaticValue != lastAutomaticValue) {
// Imprimir en el monitor serie si hay un cambio
Serial.println("Cambios en AUTOMATICO:");
Serial.println(currentAutomaticValue);
lastAutomaticValue = currentAutomaticValue; // Actualizar el último valor almacenado
}
}
else {
Serial.println("Error al obtener datos de AUTOMATICO");
}
http.end();
}
}
Les agradezco un montón que me den ideas de como hachearlo ya que trate de ayudarme con CHAT gpt, pero no ayuda mucho y de programacion se poco.