#include <EEPROM.h>
#include <Wire.h>
#include<LiquidCrystal_I2C.h>
volatile int MODO=0;
int myVariable;
void Config();
void trabajo();
int figura;
LiquidCrystal_I2C lcd(0x27, 20, 4);
int Cantidad;
int estadoAnt;
int interruptor1 = A1;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.clear();
for (int k = 0; k < 20; k++)
{
lcd.setCursor(4, 0); lcd.print ("INICIANDO"); lcd.setCursor(k, 1); lcd.print("*");
}
for (int j =0; j < 4; j++)
{ lcd.noDisplay(); delay (500); lcd.display(); delay(500);
}
attachInterrupt(digitalPinToInterrupt(7),cambio,RISING);
}
void loop() {
lcd.display();
switch (MODO)
{
case 0:
trabajo();
break;
case 1:
Config();
break;
case 2:
Config();
break;
}
Serial.println(MODO);
//fin del bucle innito ===== aqui inicia dela rutina de inrrupcion //
}
void cambio (){
MODO = !MODO;
}
void Config() //funcion para configurar parametros//
{
//declaraciones y asignaciones de pines para botones//
byte estado1, estado2, estado3;
byte estadoAnt1, estadoAnt2, estadoAnt3;
byte Boton_1 = 8, Boton_2 = 9, Boton_3 = 10;
char Figura;
uint8_t customChar[8] = {0x00,0x00,0x04,0x0c,0x1f,0x0c,0x04,0x00 };
unsigned int myVariable =0, Cantidad =0;
//pines declarados como entradas//
pinMode (Boton_1, INPUT);pinMode (Boton_2, INPUT);pinMode (Boton_3, INPUT);
delay(10); //tiempo de espera para no saturar el micro//
estadoAnt1 =digitalRead(Boton_1);
estadoAnt2 =digitalRead(Boton_2);
estadoAnt3 =digitalRead(Boton_3);
lcd.clear();
while (MODO ==1){
estado1=digitalRead(Boton_1);
estado2=digitalRead(Boton_2);
estado3=digitalRead(Boton_3);
// condiciion incremento de la variable//
if((estado1 ==1) && (estadoAnt1 ==0))
{
if (myVariable <1000) {myVariable +=10;}
lcd.clear();
}
estadoAnt1 = estado1;
if((estado2 ==1) && (estadoAnt2 ==0))
{
if (myVariable >0) {myVariable -=10;}
lcd.clear();
}
estadoAnt2 = estado2;
//condiciones de decremento de la variable//
if((estado3 ==1) && (estadoAnt3 ==0))
{
EEPROM.put(0 ,myVariable);
lcd.clear();
delay(59);
MODO =2;
}
estadoAnt3 = estado3;
lcd.setCursor(4, 0);
lcd.print("CONFIGURACION");
lcd.setCursor(4, 2);
lcd.print("PUT TIME");
lcd.print(myVariable);
lcd.setCursor(4, 3);
lcd.print("PUT CANT");
lcd.print(Cantidad);
lcd.createChar (Figura, customChar);
lcd.setCursor(19,2);
lcd.write(figura);
}
lcd.clear();
//========================================================================================================//
//FUNCION DE INCREMENTO DE VARIABLE//
//=========================================================================================================//
while (MODO ==2){
estado1=digitalRead(Boton_1);
estado2=digitalRead(Boton_2);
estado3=digitalRead(Boton_3);
if((estado1 ==1) && (estadoAnt1 ==0))
{
if (Cantidad <1000) {Cantidad +=1;}
lcd.clear();
}
estadoAnt1 = estado1;
//=========================================================================================================//
//FUNCION DECREMENTO DE LA VARIABLE//
//=========================================================================================================//
if((estado2 ==1) && (estadoAnt2 ==0))
{
if ( Cantidad >0) {Cantidad -=1;}
lcd.clear();
}
estadoAnt2 = estado2;
if((estado3 ==1) && (estadoAnt3 ==0))
{
EEPROM.put(8 , Cantidad), delay(100),MODO= 0;
}
estadoAnt3= estado3;
lcd.setCursor(4, 0);
lcd.print("CONFIGURACION");
lcd.setCursor(4, 2);
lcd.print("PUT TIME");
lcd.print(myVariable);
lcd.setCursor(4, 3);
lcd.print("PUT can");
lcd.print(Cantidad);
lcd.createChar (Figura, customChar);
lcd.setCursor(19,3);
lcd.write(figura);
}
}
//==========================================================================================================//
//condicion para hacer lotgarismos de trabajo//
void trabajo()
{
byte estado1, estado2,estado3;
byte estadoAnt1,estadoAnt2,estadoAnt3;
byte Boton_1= 8, Boton_2 =9, Boton_3 =10;
unsigned int myTiempo=0, myCantidad=0;
lcd.clear();
//pines declarados como entradas//
pinMode (Boton_1, INPUT);pinMode (Boton_2, INPUT);pinMode (Boton_3, INPUT);
delay(10);
estadoAnt1 =digitalRead(Boton_1);
estadoAnt2 =digitalRead(Boton_2);
estadoAnt3 =digitalRead(Boton_3);
lcd.clear();
while (MODO==0){
estado1=digitalRead(Boton_1);
estado2=digitalRead(Boton_2);
estado3=digitalRead(Boton_3);
EEPROM.get(0,myTiempo);
EEPROM.get(8,myCantidad);
// tenemos un for dentro de un if para ejecutar caundo se pulse E1 pulsador//
if((estado1 ==1) && (estadoAnt1==0))
{
for(int i=0; i <= myCantidad; i++)
{
digitalWrite(13, digitalRead(13)); delay (myTiempo);
lcd.setCursor(11, 0);
lcd.print("CANT:");
lcd.print(i);
}
lcd.clear();
digitalWrite(15, 0);
}
if((estado3 ==1) && (estadoAnt3 ==0))
{ MODO=1;}
estadoAnt3 = estado3;
estadoAnt1= estado1;
lcd.setCursor(1, 0);
lcd.print("TIME");
lcd.print(myTiempo);
lcd.setCursor(1, 1);
lcd.print("ELCTRONICA");
lcd.setCursor(6, 2);
lcd.print("&");
lcd.setCursor(1, 3);
lcd.print("PROGRAMACION");
}
}
//==========================================================================================================//
// FIN DE CODIGO//
//========================================================================================================//