Buenas tardes. Tal vez podrían ayudarme con la siguiente inquietud que tengo. Estoy haciendo un proyecto de la universidad en el cual tengo que subir datos a una nube crenado una tabla. El problema que tengo es que obligadamente necesito usar arduino y para subir datos a internet estoy usando la shield ESP8266. Debido al limitante de pines analógicos y con pwm en la ESP8266, estoy haciendo comunicación serial entre el arduino uno y la ESP. Al momento de enviar los datos mediante comunicación serial a la ESP me llegan. Mi inquietud es... Cómo puedo hacer para recibir los datos por separado (tengo 5 sensores LDR) y así poder tratarlos en la ESP como datos por separado. Ya que he conseguido que me lleguen los datos pero me llegan todos a la vez. El código del Arduino y ESP los dejo a continuación.
Código transmisor (Arduino)
//Variables reseteo de funcion millis
extern volatile unsigned long timer0_millis;
unsigned long new_value = 5;
int seg = 0;
//Variables sensor LDR
/*int ldr1 = 14;
int ldr2 = 15;
int ldr3 = 16;
int ldr4 = 17;
int ldr5 = 18;*/
int LDR = 0;
volatile int valorldr1 = 0;
volatile int valorldr2 = 0;
volatile int valorldr3 = 0;
volatile int valorldr4 = 0;
volatile int valorldr5 = 0;
int max = 900;
int min = 20;
//Variables de las iluminarias
int Lum1 = 3;
int Lum2 = 5;
int Lum3 = 6;
int Lum4 = 9;
int Lum5 = 10;
String valores;
void setup() {
Serial.begin(9600);
for (LDR = 14; LDR <=18; LDR++){
pinMode(LDR, INPUT);
}
pinMode(Lum1, OUTPUT);
pinMode(Lum2, OUTPUT);
pinMode(Lum3, OUTPUT);
pinMode(Lum4, OUTPUT);
pinMode(Lum5, OUTPUT);
}
void loop() {
seg = new_value - (millis() / 1000);
Serial.println(seg);
ldr_1();
if (valorldr1 > 20 || valorldr1 <= 900) {
analogWrite (Lum1, valorldr1);
}
else {
digitalWrite (Lum1, LOW);
}
ldr_2();
if (valorldr2 > 20 || valorldr2 <= 900) {
analogWrite (Lum2, valorldr2);
}
else {
digitalWrite (Lum2, LOW);
}
ldr_3();
if (valorldr3 > 20 || valorldr3 <= 900) {
analogWrite (Lum3, valorldr3);
}
else {
digitalWrite (Lum3, LOW);
}
ldr_4();
if (valorldr4 > 20 || valorldr4 <= 900) {
analogWrite (Lum4, valorldr4);
}
else {
digitalWrite (Lum4, LOW);
}
ldr_5();
if (valorldr5 > 20 || valorldr5 <= 900) {
analogWrite (Lum5, valorldr5);
}
else {
digitalWrite (Lum5, LOW);
}
/*if (seg == 0){
valores = String(valorldr1) + String(valorldr2) + String(valorldr3) + String(valorldr4) + String(valorldr5);
Serial.println(valores);
setMillis(new_value);
}*/
}
//Funciones de LDR
void ldr_1 (){
valorldr1 = analogRead (14);
valorldr1 = constrain (valorldr1, min, max);
if (seg == 0){
/*valores = String(valorldr1) + String(valorldr2) + String(valorldr3) + String(valorldr4) + String(valorldr5);*/
Serial.print("LDR 1: ");
Serial.println(valorldr1);
setMillis(new_value);
}
/*Serial.print ("LDR 1: ");
Serial.println (valorldr1);*/
valorldr1 = map (valorldr1, max, min, 0, 255);
delay (200);
}
void ldr_2 (){
valorldr2 = analogRead (15);
valorldr2 = constrain (valorldr2, min, max);
if (seg == 0){
/*valores = String(valorldr1) + String(valorldr2) + String(valorldr3) + String(valorldr4) + String(valorldr5);*/
Serial.print("LDR 2: ");
Serial.println(valorldr2);
setMillis(new_value);
}
/*Serial.print ("LDR 2: ");
Serial.println (valorldr2);*/
valorldr2 = map (valorldr2, max, min, 0, 255);
delay (200);
}
void ldr_3 (){
valorldr3 = analogRead (16);
valorldr3 = constrain (valorldr3, min, max);
if (seg == 0){
/*valores = String(valorldr1) + String(valorldr2) + String(valorldr3) + String(valorldr4) + String(valorldr5);*/
Serial.print("LDR 3: ");
Serial.println(valorldr3);
setMillis(new_value);
}
/*Serial.print ("LDR 3: ");
Serial.println (valorldr3);*/
valorldr3 = map (valorldr3, max, min, 0, 255);
delay (200);
}
void ldr_4 (){
valorldr4 = analogRead (17);
valorldr4 = constrain (valorldr4, min, max);
if (seg == 0){
/*valores = String(valorldr1) + String(valorldr2) + String(valorldr3) + String(valorldr4) + String(valorldr5);*/
Serial.print("LDR 4: ");
Serial.println(valorldr4);
setMillis(new_value);
}
/*Serial.print ("LDR 4: ");
Serial.println (valorldr4);*/
valorldr4 = map (valorldr4, max, min, 0, 255);
delay (200);
}
void ldr_5 (){
valorldr5 = analogRead (18);
valorldr5 = constrain (valorldr5, min, max);
if (seg == 0){
/*valores = String(valorldr1) + String(valorldr2) + String(valorldr3) + String(valorldr4) + String(valorldr5);*/
Serial.print("LDR 5: ");
Serial.println(valorldr5);
setMillis(new_value);
}
/*Serial.print ("LDR 5: ");
Serial.println (valorldr5);*/
valorldr5 = map (valorldr5, max, min, 0, 255);
delay (200);
}
Código receptor ESP
#include <ESP8266HTTPClient.h>
#include <ESP8266WiFiMulti.h>
// defino credenciales red
static const char* ssid = "";
static const char* password = "";
WiFiClient client;
void setup() {
Serial.begin(9600);
while(!Serial){;
}
WiFi.begin(ssid, password);
Serial.print("Conectando...");
while (WiFi.status()!= WL_CONNECTED) {
delay(500);
Serial.println(".");
}
Serial.println("Conexión OK!");
Serial.print("IP Local: ");
Serial.println(WiFi.localIP());
}
void loop() {
if (Serial.available()){
Serial.write(Serial.read());
delay (1);
}
}