You are on page 1of 5

/*

conexiones del ultrasonico al arduino

VCC al arduino 5 V

GND al arduino GND

Echo al Arduino pin 23

Trig al Arduino pin 22

Conexiones del LCD al arduino:

VSS: 0 V

VDD: 5 V

VO: Centro potenciómetro 50K

RS: Pin 28 Arduino

RW: 0 V

E (Enable): Pin 30 Arduino

D4: Pin 32 Arduino

D5: Pin 34 Arduino

D6: Pin 36 Arduino

D7: Pin 38 Arduino

Uno de los pines de los lados del potenciómetro 50 K va a 0 V, el otro a 5 V

*/

int trig=22;

int echo=23;

int bomba=24;

int valvula1=25;

int valvula2=26;

int valvula3=27;
int SH1=A0;

int SH2=A1;

int SH3=A2;

#include<LiquidCrystal.h> // Incluye la librería para el LCD

LiquidCrystal lcd(28, 30, 32, 34, 36, 38); // Define los pines de Arduino que se van a usar con el
LCD

void setup() {

Serial.begin(9600);

pinMode(SH1,INPUT);

pinMode(SH2,INPUT);

pinMode(SH3,INPUT);

pinMode(trig,OUTPUT);

pinMode(echo,INPUT);

pinMode(bomba,OUTPUT);

pinMode(valvula1,OUTPUT);

pinMode(valvula2,OUTPUT);

pinMode(valvula3,OUTPUT);

pinMode(29,INPUT);

pinMode(31,INPUT);

pinMode(33,OUTPUT);

pinMode(35,OUTPUT);

digitalWrite(33,LOW);

digitalWrite(35,LOW);

digitalWrite(valvula1,LOW);

digitalWrite(valvula2,LOW);
digitalWrite(valvula3,LOW);

digitalWrite(bomba,LOW);

void loop() {

long duracion;

long distancia;

digitalWrite(trig,LOW); //apagamos el triger por 4ms

delayMicroseconds(4);

digitalWrite(trig,HIGH); //genera el pulso de triger por 10ms

delayMicroseconds(10);

digitalWrite(trig,LOW); //volvemos a apagar el triger

duracion=pulseIn(echo,HIGH); // Recibe señal de Triger

duracion=duracion/2; // Calcula la distancia en centimetros

distancia=duracion/29;

lcd.setCursor(0,0); // Determina dónde escribir (primera línea)

lcd.print("DISTANCIA:"); // colocamos la palabra "DISTANCIA"

lcd.print(distancia ); // Envía el valor de la distancia por el LCD

lcd.print("cm "); // Pone "cm" al lado del valor

if (distancia <=21 && distancia >1){ // Si la distancia es menor o igual a 22cm o mayor que 1cm

digitalWrite(33,HIGH); //La salida 33 enviara un pulso

if(digitalRead(29)==HIGH){ //A la entrada 29

digitalWrite(bomba,LOW);} //Que activara la bomba

if (distancia<=4){ //Si la distancia es menor o igual a 4cm

digitalWrite(33,LOW); //La salida 33 se apagara


digitalWrite(bomba,HIGH); //La bomba se apagara

digitalWrite(35,HIGH);} //La salida 35 enviara un pulso

if(digitalRead(31)==HIGH){ //A la entrada 31

digitalWrite(bomba,HIGH);} //Que mantendra apagada la bomba

if (distancia==20){ //Si la distancia es igual a 20cm

digitalWrite(35,LOW); //La salida 35 se apagara

digitalWrite(33,HIGH); //Y la salida 33 nuevamente enviara pulsos a la entrada 29,


repitiendo el ciclo

}}

int valor=analogRead(SH1);

Serial.println(valor = 100-valor*100/999);

if(valor>600){

delay(100);

digitalWrite(valvula1,LOW);

Serial.print("SECO1");

delay(100);}

if(valor<=600){

delay(100);

digitalWrite(valvula1,HIGH);

Serial.print("HUMEDO");

delay(100);}

int valor1=analogRead(SH2);

Serial.println(valor1);

if(valor1>600){
delay(100);

digitalWrite(valvula2,LOW);

Serial.print("SECO2");

delay(100);}

if(valor1<=600){

delay(100);

digitalWrite(valvula2,HIGH);

Serial.print("HUMEDO");

delay(100);}

int valor2=analogRead(SH3);

Serial.println(valor2);

if(valor2>600){

delay(100);

digitalWrite(valvula3,LOW);

Serial.print("SECO3");

delay(100);}

if(valor2<=600){

delay(100);

digitalWrite(valvula3,HIGH);

Serial.print("HUMEDO");

delay(100);}

You might also like