Buenas, en primer lugar quiero agradecer a Surbyte, por ayudarme mucho en mi proyecto y pude sacarlo y lo que es mejor entenderlo y ahora quiero que me ayudeis en el segundo paso. He añadido un sensor de ultrasonidos HC-SR04. Lo que quiero hacer es que por una parte funcione el sensor de inclinacion con el led sin que influyan los demas sensores, y por otro lado quiero que por el monitor serial mande cada segundo la distancia recibida por el HC-SR04 y cada 5 segundos la temperatura e iluminacion de los sensores. Os mando mi codigo y una imagen del circuito y espero que me podais ayudar.
He llegado a conseguir que todo esto mas o menos funcione, lo que falla es que no he conseguido que se manden las señales al segundo y las otras a los 5.
este es mi codigo:
#define pecho 9
#define ptrig 10
long duracion, distancia; // variables para el HC-SR04
int luminosidad = 0; // porcentaje de luminosidad recibida en la ldr.
int pinldr = A0; // Pin de la entrada de la ldr
int valorldr = 0; // valor de 0 a 1023 de la ldr.
int sensortemp = A1; // Pin del sensor del LM35.
float temp; // Variable tipo float del sensor.
const int sensorinclinacion = 8; // entrada del sensor de inclinacion.
int estadoinclinacion = 0; // estado del sensor de inclinacion.
const int led = 7; // pin del led que avisa la inclinacion.
long previousMillis = 0; // previous millis es 0
long interval = 3000; // 6 segundos para mandar temperatura y luminosidad
void setup() {
Serial.begin(9600); //inicio de la comunicacion serial.
pinMode (sensorinclinacion, INPUT); // declaro entrada al sensor de inclinacion.
pinMode (led, OUTPUT); // declaro salida al led avisador.
pinMode(pecho, INPUT);
pinMode(ptrig, OUTPUT);
}
void loop() {
estadoinclinacion = digitalRead(sensorinclinacion); // mando leer el pin del sensor de inclinacion y lo almaceno en la variable.
valorldr = analogRead(pinldr); // calculo del valor de la ldr y la luminosidad.
luminosidad = valorldr / 10,23;
temp = analogRead(sensortemp); // calculo de la temperatura.
temp = temp * 0.48828125;
if(estadoinclinacion == LOW) { // si el sensor de inclinacion esta apagado o inclinado el led se enciende
digitalWrite(led, HIGH); }
if(estadoinclinacion == HIGH) { // si el sensor de inclinacion manda señal el led esta apagado
digitalWrite(led, LOW); }
digitalWrite(ptrig, LOW);
delayMicroseconds(2);
digitalWrite(ptrig, HIGH);
delayMicroseconds(10);
duracion = pulseIn(pecho, HIGH);
distancia = (duracion/2) / 29;
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
Serial.print(luminosidad);
Serial.println (" Por Ciento de Luz");
Serial.print("temperatura: ");
Serial.print(temp);
Serial.print(" Grados");
Serial.println();
if (distancia >= 500 || distancia <= 0){ // si la distancia es mayor a 500cm o menor a 0cm
Serial.println("---"); // no mide nada
}
else {
Serial.print(distancia); // envia el valor de la distancia por el puerto serial
Serial.println("cm"); // le coloca a la distancia los centimetros "cm"
}
Serial.println("");
}
}