Mientras voy leyendo a marchas forzadas, estoy copiando un proyecto de riego automático con DHT11+arduino uno+bomba 5v+ Higrómetro.
El proyecto a clonar está publicado en la web techmake.com y me encuentro diferentes errores de sintaxis.
Abajo detallo los errores que me muestra.
A ver si alguien me puede echar una manita mientras sigo aprendiendo.. Mil gracias
#include <DHT.h>
#define DHTTYPE DHT11
#define sensor_humedad_pin A0
#define fotorresistor_pin A5
int pinDHT11 = 2;
DHT dht(pinDHT11, DHTTYPE);
int fotorresistor_value = 0;
int agua_pin = 3;
int agua_speed =255;
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop () {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.print("Error");
return;
}
}
int valor_humedad_tierra = map(analogRead (sensor_humedad_pin), 0, 1023, 100, 0);
int fotorresistor_value = map(analogRead (fotorresistor_ping), 1023, 0, 100, 0);
//Monitoreo de valores
Serial.println(" ");
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print("Humedad en suelo: ");
Serial.print(valor_humedad_tierra);
Serial.print("%");
Serial.print("Luz: ");
Serial.print(fotorresistor_value);
Serial.println("%)");
//configuración de condiciones de riego
if( valor_humedad_tierra <= 50 && fotorresistor_value <30 && t<30) {
digitalWrite(agua_pin, HIGH);; // Se activa Bomba
analogWrite(agua_pin, agua_speed);
} else {
digitalWrite(agua_pin, LOW); // Desactiva Bomba
}
delay (2000);
}
Aquí la salida:
dht11iglometrobomba.ino:30:5: error: redefinition of 'int fotorresistor_value'
int fotorresistor_value = map(analogRead (fotorresistor_ping), 1023, 0, 100, 0);
^~~~~~~~~~~~~~~~~~~
dht11iglometrobomba.ino:10:5: note: 'int fotorresistor_value' previously defined here
int fotorresistor_value = 0;
^~~~~~~~~~~~~~~~~~~
dht11iglometrobomba.ino:30:44: error: 'fotorresistor_ping' was not declared in this scope
int fotorresistor_value = map(analogRead (fotorresistor_ping), 1023, 0, 100, 0);
^~~~~~~~~~~~~~~~~~
dht11iglometrobomba.ino:30:44: note: suggested alternative: 'fotorresistor_pin'
int fotorresistor_value = map(analogRead (fotorresistor_ping), 1023, 0, 100, 0);
^~~~~~~~~~~~~~~~~~
fotorresistor_pin
dht11iglometrobomba.ino:33:1: error: 'Serial' does not name a type
Serial.println(" ");
^~~~~~
dht11iglometrobomba.ino:34:1: error: 'Serial' does not name a type
Serial.print("Humedad: ");
^~~~~~
dht11iglometrobomba.ino:35:1: error: 'Serial' does not name a type
Serial.print(h);
^~~~~~
dht11iglometrobomba.ino:36:1: error: 'Serial' does not name a type
Serial.print(" %\t");
^~~~~~
dht11iglometrobomba.ino:37:1: error: 'Serial' does not name a type
Serial.print("Temperatura: ");
^~~~~~
dht11iglometrobomba.ino:38:1: error: 'Serial' does not name a type
Serial.print(t);
^~~~~~
dht11iglometrobomba.ino:39:1: error: 'Serial' does not name a type
Serial.print(" *C ");
^~~~~~
dht11iglometrobomba.ino:41:1: error: 'Serial' does not name a type
Serial.print("Humedad en suelo: ");
^~~~~~
dht11iglometrobomba.ino:42:1: error: 'Serial' does not name a type
Serial.print(valor_humedad_tierra);
^~~~~~
dht11iglometrobomba.ino:43:1: error: 'Serial' does not name a type
Serial.print("%");
^~~~~~
dht11iglometrobomba.ino:45:1: error: 'Serial' does not name a type
Serial.print("Luz: ");
^~~~~~
dht11iglometrobomba.ino:46:1: error: 'Serial' does not name a type
Serial.print(fotorresistor_value);
^~~~~~
dht11iglometrobomba.ino:47:1: error: 'Serial' does not name a type
Serial.println("%)");
^~~~~~
dht11iglometrobomba.ino:51:1: error: expected unqualified-id before 'if'
if( valor_humedad_tierra <= 50 && fotorresistor_value <30 && t<30) {
^~
dht11iglometrobomba.ino:54:4: error: expected unqualified-id before 'else'
} else {
^~~~
dht11iglometrobomba.ino:57:8: error: expected constructor, destructor, or type conversion before '(' token
delay (2000);
^
dht11iglometrobomba.ino:58:2: error: expected declaration before '}' token
}
^
exit status 1
Compilation error: redefinition of 'int fotorresistor_value'
Como has conectado el DTH11? Por cierto el DHT11 es un mal sensor, no lo vuelvas a considerar en tus proyectos. Mide temperatura y humedad en valores enteros. El DTH22 en cambio lo hace con decimales y por tanto mas preciso.
Debe tener una R entre el terminal de datos y VCC, la has puesto?
Moderador:
Edita el titulo. Coloca algo que indique tu problema. "Ayuda a novato" no dice nada.
Lee le punto 5 de las normas del foro ademas de todos los demas puntos.
Edita los errores usando etiquetas </>, debe verse igual que un código.
He cambiado el DHT11 por un DHT22 como indicabas y con las modificaciones de código.
El error en el monitor ya lo solucioné ayer, era un problema de montaje, ahora sólo me queda averiguar como funciona el fotorresistor, ya que lo he montado tal cual está en el diagrama de techmake y el valor de "% luz" siempre es 0 o 1, además de que la bomba no se activa en ningún momento.Funciona, está comprobada pero no actúa cuando los valores son los aptos para que se active. Algún problema sigo teniendo.
Copio el código por si puede ser de utilidad:
Moderador:
No te pedí por privado que editar el título y corrigieras tu primer post?
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>