[/][[code]
#include <TimerOne.h> //librerias que considero necesarias
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// los elementos y pines que voy a utilizar
int upbuttom = 6; // boton subir tiempo
int downbuttom = 7; // boton bajar tiempo
int sensor_1 = 8; // sensor de proximidad inductivo lj12A3 (PnP) activador camara 1
int sensor_2 = 9; // activador camara 2 (idem sensor 1)
int rele_1 = 10; // maneja la electrovalvula camara 1
int rele_2 = 11; // maneja la electrovalvula camara 2
LiquidCrystal_I2C lcd(0x20,16,2); // para nano(0x3F para uno)
int tiempo; // contador de tiempo
int tiempo_p; // tiempo programado
int var_tiempo; // almacena tiempo programado
Serial.begin(9600); // la comunicacion del LCD
void setup() { // configurar LCD con I2C
lcd.init(); // Iniciar LCD
lcd.backlight(); // Activar luz de fondo
lcd.clear(); // Borrar LCD
lcd.setCursor(7,0); // coordenadas LCD (x,y) primera linea
lcd.print("tiempo millis()"); // muestra eltiempo programado
lcd.setCursor(6,1); // coordenadas LCD (x,y) segunda linea
lcd.print("ajuste el tiempo"); // indica que se puede variar el tiempo programado
// definir entradas y salidas
pinMode (upbuttom , INPUT);
pinMode (downbuttom, INPUT);
pinMode (rele_1 , OUTPUT);
pinMode (rele_2 , OUTPUT);
pinMode (sensor_1, INPUT);
pinMode (sensor_2, INPUT);
tiempo = millis (); // tiempo y pines en cero
tiempo_p = 0;
sensor_1=0;
sensor_2=0;
upbuttom=0;
downbuttom=0;
void loop() { // se leen los sensores
{
digitalRead(sensor_1); //lee sensor 1 sin actuar pero conectado a ground y 5v
digitalRead(sensor_2); //lee sensor 2 (idem sensor 1)
{
// en pocision neutra (sin estar ninguno actuado) se puede modificar el tiempo
if (sensor_1=LOW && sensor_2=LOW);// pocision neutra para modificar el tiempo
lcd.setCursor(7,0); // coordenadas LCD (x,y) primera linea
lcd.print("tiempo millis()"); // tiempo programado
lcd.setCursor(6,1); // coordenadas LCD (x,y) segunda linea
lcd.print("ajuste el tiempo"); // listo para ajustar el tiempo
{
// incrementar tiempo temporizado
if (upbuttom=HIGH); // sube el tiemp de temporizado
tiempo_p=tiempo*1000++;
tiempo=tiempo_p; // almacena nuevo tiempo
lcd.setCursor(7,0); // coordenadas LCD (x,y) primera linea
lcd.print("ajuste tiempo"); // "ajuste tiempo" puede titilar, no lo hice
lcd.setCursor(6,1); // coordenadas LCD (x,y) segunda linea
lcd.print("tiempo_p millis()");// muestra nuevo tiempo
}
{
//reducir tiempo temporizado
if (downbuttom=HIGH); // baja el tiempo de temporizado
tiempo_p=tiempo*1000--;
tiempo=tiemp_p; // almacena nuevo tiempo
lcd.setCursor(7,0); // coordenadas LCD (x,y) primera linea
lcd.print("ajuste tiempo"); // "ajuste tiempo" puede titilar, no lo hice
lcd.setCursor(6,1); // coordenadas LCD (x,y) segunda linea
lcd.print("tiempo millis()"); // muestra nuevo tiempo
}
}
// accionamiento de la maquina,cierre de compuerta a la pocision 1, inicio de ciclo camara 1
{
while
(digitalWrite (sensor_1=HIGH)); // al cerrar la compuerta se activa el sensor 1
if (tiempo<tiempo_p); // y hay tiempo programado mayor que cero
digitalWrite (rele_1,HIGH); // se activa rele 1 y electrovalvula 1, llena camara 1
lcd.setCursor(7,0); // coordenadas LCD (x,y) primera linea
lcd.print("tiempo millis()"); //muestra tiempo total de temporizado
lcd.setCursor(6,1); // coordenadas LCD (x,y) segunda linea
lcd.print("tiempo_p millis()--"); // muestra el tiempo decreciendo
if (tiempo>itiempo_p); // tiempo llega a cero
digitalWrite (rele_1,LOW);
lcd.setCursor(7,0); // coordenadas LCD (x,y) primera linea
lcd.print("tiempo_p millis()");//muestra tiempo restante que debe ser cero se apaga el rele y la electrovalvula, la camara se
lcd.setCursor(6,1); // coordenadas LCD (x,y) segunda linea
lcd.print("pegado completo"); // avisa que termino el ciclo 1 ,se puede usar un buzzer de aviso (no lo hice)
}
// accionamiento de la maquina , cierra de la compuerta a pocision 2 inicio ciclo camara 2
{
while (digitalWrite (sensor_2=HIGH)); // al cerrar la compuerta se activa el sensor 2
if (tiempo<tiempo_p); // y hay tiempo programado mayor que cero
digitalWrite (rele_2,HIGH); // se activa rele 2 y la electrovalvula 2 ,llena camara 2
lcd.setCursor(7,0); // coordenadas LCD (x,y) primera linea
lcd.print("tiempo millis()"); // muestra el tiempo total de temporizado
lcd.setCursor(6,1); // coordenadas LCD (x,y) linea 2
lcd.print("tiempo millis()--");// muestra el tiempo decreciendo
if (tiempo>tiempo_p); // el tiempo llega a cero
digitalWrite (rele_2,LOW); // se desactiva el rele 2 ,la electrovalvula 2 y se vacia la camara 2
lcd.setCursor(7,0); // coordenadas LCD (x,y) primera linea
lcd.print("tiempo_p millis()");//muestra tiempo restante que debe ser cero se apaga el rele y la electrovalvula, la camara se
lcd.setCursor(6,1); // coordenadas LCD (x,y) segunda linea
lcd.print("pegado completo"); // avisa que termino el ciclo 2 ,se puede usar un buzzer de aviso (no lo hice)
}
}
][/ Hola buenos días,he leído las normas del foro , aun así puedo haber faltado a algunas.
He intentado crear un código para controlar el tiempo de acción de dos reles (inicia el ciclo y enciende, , permanece encendido el tiempo programado y se desactiva), que trabajan de manera separada,primero el uno y luego el otro y se repite el ciclo indefinidamente ; cada rele mediante una señal de un sensor, el tiempo es común para los dos ; el tiempo se puede variar mediante dos pulsadores (upbuttom , downbuttom) y los tiempos se pueden ver de manera regresiva en un display LCD con comunicación I2C, el código no es una copia, intente hacerlo lo mas simple de forma personal pero tiene muchos errores y ni siquiera me compila aunque le he hecho múltiples correcciones de acuerdo a los mensajes de error. Agradezco a quien me pueda colaborar e indicarme los múltiples errores cometidos.]