#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define ANCHO 128
#define ALTO 64
#define OLED_RESET 4
Adafruit_SSD1306 oled(ANCHO,ALTO, &Wire, OLED_RESET);
//JOYSTICK____________
int ho; //horizontal
int x=0; //acumulador horizontal
int ve; //vertical
int y=0; //acumulador vertical
bool pu=LOW; //pulsador
int pinpu=2; //pin pulsador
int fase=0; //acumulador pulsador
//VALORES HIDROPONIAS
int tempAmb; //temperatura
int tempAgua; //temperatura
int min1=0; //minuto componente decimal
int min2=0; //minuto componente unitario
void setup() {
Wire.begin();
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
//JOYSTICK____________
pinMode(pinpu, INPUT_PULLUP);
Serial.begin(9600);
oled.clearDisplay();
}
void loop() {
//JOYSTICK____________
ve = analogRead(A0);
ho = analogRead(A1);
pu = digitalRead(pinpu);
if ( pu == 0 ){ // ACUMULADOR PULSADOR
fase=fase+1;
oled.clearDisplay();
delay(500);
}
if ( ve<450 ){ // ACUMULADOR VERTICAL
x=x-1;
delay(200);
oled.clearDisplay();
}
if ( ve>570 ){ // ACUMULADOR VERTICAL
x=x+1;
delay(200);
oled.clearDisplay();
}
if ( ho<450 ){ // ACUMULADOR HORIZONTAL
y=y-1;
delay(200);
oled.clearDisplay();
}
if ( ho>570 ){ // ACUMULADOR HORIZONTAL
y=y+1;
delay(200);
oled.clearDisplay();
}
//PANTALLA CONFIGURACION GENERAL---------------------------------------------------------
if ( fase == 0 ) {
if ( x>3 || x<0){ // RESET VERTICAL
x=0;
delay(5);
}
oled.drawTriangle(0,17+(x*13),5,21+(x*13),0,25+(x*13),WHITE);
oled.display();
oled.setTextColor(WHITE);
oled.setCursor(0,0);
oled.setTextSize(1);
oled.print("MENU DE CONTROL");
oled.setCursor(10,17);
oled.print("INICIAR");
oled.setCursor(10,30);
oled.print("TIMER");
oled.setCursor(10,43);
oled.print("TEMPERATURA AMB");
oled.setCursor(10,56);
oled.print("TEMPERATURA WTR");
oled.display();
}
// TIMER--------------------------------------------------------------------------------
if ( fase==1&&x==1||fase==2&&x==17||fase==2&&x==15||fase==2&&x==16||fase==1&&x>13&&x<20 ) {
if ( x==1||x<15||x>17 ){ //LIMITADOR X
x = 15;
delay(5);
}
if ( x==15 ) { //INCIO
min1=0;
min1=0;
}
if ( x==15 ) {
if ( y>60 || y<0){ //AVANCE MIN1
y = 0;
}
min1=y;
oled.drawLine(82,38,94,38,WHITE);
oled.display();
delay(1);
}
if ( x==16 ) {
if ( y < 60|| y>120){ //AVANCE MIN2
y = 60;
}
min2=map(y,60,120,0,60);
oled.drawLine(82,51,94,51,WHITE);
oled.display();
delay(1);
}
oled.setTextColor(WHITE); //IMPRESIONES
oled.setCursor(0,0);
oled.setTextSize(1);
oled.print("CONFIGURACION");
oled.setCursor(0,17);
oled.print("TEMPORIZADOR");
oled.setCursor(10,30);
oled.print("T.ENCENDIDO ");
oled.print(min1);
oled.setCursor(10,43);
oled.print("T.ESPERA ");
oled.print(min2);
oled.setCursor(10,55);
oled.setTextSize(1);
oled.print( "OK" );
oled.display();
int xx=((x-15)*13);
oled.drawTriangle(0,29+xx,0,36+xx,7,33+xx,WHITE);
oled.display();
if (x!=17){ //CONTROLADOR FASE
fase=1;
}
if (fase==2&&x==17){//FIN TIMER
fase=0;
x=1;
delay(200);
y=0;
oled.clearDisplay();
}
}
// TEMPERTURA AMBIENTE------------------------------------------------------------------
if ( fase==1&&x==2 ||fase==2&&x==23 || fase==2&&x==22 || fase==1&&x>20&&x<25 ) {
if ( x==2||x<22||x>23 ){ //LIMITADOR X
x = 22;
delay(5);
}
if ( y>30 || y<0){ //LIMITADOR Y
y = 0;
delay(5);
}
oled.setTextColor(WHITE); //IMPRESIONES
oled.setCursor(0,0);
oled.setTextSize(1);
oled.print("CONFIGURACION");
oled.setCursor(0,17);
oled.print("TEMPERATURA AMBIENTE");
oled.setCursor(30,30);
oled.setTextSize(2);
oled.print( y );
oled.print( " C" );
oled.setCursor(10,55);
oled.setTextSize(1);
oled.print( "OK" );
oled.display();
if (x==22){
oled.drawLine(30,46,40,46,WHITE);
oled.display();
}
if (x==23){
oled.drawTriangle(0,55,0,63,7,59,WHITE);
oled.display();
}
if (x!=23){ //CONTROLADOR FASE
fase=1;
oled.clearDisplay();
}
if (fase==2&&x==23){
fase=0;
x=2;
tempAmb=y;
delay(200);
y=0;
oled.clearDisplay();
}
}
// TEMPERTURA AGUA-------------------------------------------------------------------
if ( fase==1&&x==3 ||fase==2&&x==27||fase==2&&x==26 || fase==1&&x>25&&x<30 ) {
if ( x==3||x<26||x>27 ){ //LIMITADOR X
x = 26;
delay(5);
}
if ( y>30 || y<0){ //LIMITADOR Y
y = 0;
delay(5);
}
oled.setTextColor(WHITE); //IMPRESIONES
oled.setCursor(0,0);
oled.setTextSize(1);
oled.print("CONFIGURACION");
oled.setCursor(0,17);
oled.print("TEMPERATURA - AGUA");
oled.setCursor(30,30);
oled.setTextSize(2);
oled.print( y );
oled.print( " C" );
oled.setCursor(10,55);
oled.setTextSize(1);
oled.print( "OK" );
oled.display();
if (x==26){
oled.drawLine(30,46,40,46,WHITE);
oled.display();
}
if (x==27){
oled.drawTriangle(0,55,0,63,7,59,WHITE);
oled.display();
}
if (x!=27){ //CONTROLADOR FASE
fase=1;
oled.clearDisplay();
}
if (fase==2&&x==27){ //FIN TEMP AGUA
fase=0;
x=3;
tempAgua=y;
delay(1);
y=0;
oled.clearDisplay();
}
}
// INICIAR-------------------------------------------------------------------------------
if ( fase==1&&x==0 ||fase==2&&x==8 || fase==2&&x==9 || fase==1&&x>6&&x<12 ) {
if ( x==0||x<8||x>9 ){ //LIMITADOR X
x = 8;
delay(5);
}
oled.setTextColor(WHITE); //IMPRESIONES
oled.setCursor(10,0);
oled.setTextSize(1);
oled.print("CORRIENDO");
oled.setCursor(0,17);
// LECTURAAAAAAAAAAAAAAAAAAAAAS
oled.print( "STM: " );
oled.print( "R:");
oled.print( min1);
oled.print( "m E:");
oled.print( min2);
oled.print( "m");
oled.setCursor(35,56);
oled.print( "A:");
oled.print( tempAmb);
oled.print( "C W:");
oled.print( tempAgua);
oled.print( "C");
oled.setCursor(110,0);
oled.print( "FIN" );
oled.display();
if (x!=9){ //CONTROLADOR FASE
fase=1;
}
if (x==9){
oled.drawTriangle(103,0,103,8,108,4,WHITE);
oled.display();
}
if (fase==2&&x==9){ //FIN INCIO
fase=0;
x=0;
tempAgua=0;
tempAmb=0;
min1=0;
min2=0;
oled.clearDisplay();
}
}
}