bool estado = false;
#include<LoRa.h>
struct sector {
float temperatura, humedad, pH;
bool estado_sector, estado_riego;
} sector [10];
void setup() {
Serial.begin(9600);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(10, INPUT);
Serial.println("INICIO");
}
void loop() {
String dato = "";
if (Serial.available() && digitalRead(11) == 1 ) {
while (Serial.available()) {
char c = Serial.read();
if (c == '\0') {
break;
}
dato += c;
}
estado = true;
}
if (digitalRead(12) == 1) {
limpiarS();
}
if (estado) {
if (parcela(dato)) {
extraccion(dato);
Serial.println("Si es una parcela");
} else {
Serial.println("No es una parcela");
}
Serial.println("Datos ingresados " + dato);
estado = false;
}
delay(10);
}
bool parcela(String contenido ) {
for (int i = 0; i < 2; i++) {
if (!isdigit(contenido[i])) {
return false;
}
}
return true;
}
void limpiarS() {
while (Serial.available() > 0) {
char c = Serial.read();
}
}
void extraccion(String Datos) {
char ext [5];
byte indice = 0;
for (int i = 0; i < 2; i++) {
ext [i] = Datos[i];
}
lvariable(ext);
indice = atoi(ext);
/* 01 30.4 45.6 67.9 1*/
sector[indice].temperatura = lecturaFloat (3, 7, ext, Datos);
sector[indice].humedad = lecturaFloat (8, 12, ext, Datos) ;
sector[indice].pH = lecturaFloat (13, 17, ext, Datos);
sector[indice].estado_riego = ( Datos[18] - '0' == 1);
// float temp = lecturaFloat (3, 7, ext, Datos);
// Serial.println(temp + 0.1);
// float hum = lecturaFloat (8, 12, ext, Datos);
// Serial.println(hum + 0.1);
// float pH = lecturaFloat (13, 17, ext, Datos);
// Serial.println(pH + 0.1);
// int estadoR = Datos[18] - '0';
// Serial.println(estadoR + 1);
return;
}
void lvariable(char* ext) {
for (int i = 0; i < 5; i++) {
ext[i] = '\0';
}
}
float lecturaFloat (int com, int lim, char* ext, String Datos) {
for (int i = com; i < lim; i++) {
ext [i - com] = Datos[i];
}
float valor = atof(ext);
return valor ;
}