Este es el código
#include <URTouch.h> // libreria de la parte de touch de la pantalla
#include <UTFT.h> // libreriad e la pantalla utft
#include "StringSplitter.h" // libreria de la divicion de un string
// configuracion de la pantalla //
UTFT myGLCD(ITDB32S,38,39,40,41); // declaración de los pines de la pantalla UTFT
URTouch myTouch( 6, 5, 4, 3, 2); // declaracion de los pines del touch de la pantala UTFT
//declaracion de variables //
extern uint8_t arial_bold[]; // inicializo un arreglo de 8 bit
int screen=0; // creo una variable INT de nombre screen y la inicializo en 0
int x, y; // creo dos variables enteras llamadas X, Y
String data =""; // creo una variable tipo String llamada data vacia
int ambiente=0; // creo una variable entera llamda ambiente y la inicalizo en 0
int time_1=0; // creo una variable entera llamada time_1 y la inicializo en 0
int time_elapsed; // creo una variable entera llamada time_elpsed
// creo una funcion que muestar la segunda pantalla //
void screen2(String dat){
myGLCD.clrScr(); // borro todo lo de la pantalla
myGLCD.fillScr(0,0,153); // ubico mi inicio de escritura en la pantalla
myGLCD.setColor(255,255,255); //declaro el color de la pantalla en rbg
myGLCD.setBackColor(0,0,153); //declaro el color de la pantalla en rbg
myGLCD.print("Bienvenido", CENTER, 6); // imprimo en la pantalla el texto en unA cordenada especifica
myGLCD.print(dat, CENTER, 25); // imprimo en la pantalla el texto en unA cordenada especifica
myGLCD.print("Seleccione el ", CENTER, 48); // imprimo en la pantalla el texto en unA cordenada especifica
myGLCD.print("ambiente que desea", CENTER, 64); // imprimo en la pantalla el texto en unA cordenada especifica
myGLCD.print("ingresar.", CENTER, 80); // imprimo en la pantalla el texto en unA cordenada especifica
//Back Button
myGLCD.fillRect(120,180,207,220); // creo un rectangulo que va ser un botton
myGLCD.setColor(0,0,153); // seteo el color del rectangulo
myGLCD.setBackColor(255, 255,255); //asigno el color del rectangulo
myGLCD.print("Salir", 125, 189); // imprimo texto en la cordenada del boton
//M-1 Button
myGLCD.setColor(255,255,255); // creo un rectangulo que va ser un botton
myGLCD.fillRect(17,110,62,140); // seteo el color del rectangulo
myGLCD.setColor(0,0,153); //asigno el color del rectangulo
myGLCD.print("M1",26,116); // imprimo texto en la cordenada del boton
//M-2 Button
myGLCD.setColor(255,255,255); // creo un rectangulo que va ser un botton
myGLCD.fillRect(77,110,122,140);// seteo el color del rectangulo
myGLCD.setColor(0,0,153); //asigno el color del rectangulo
myGLCD.print("M2",86,116); // imprimo texto en la cordenada del boton
//M-3 Button
myGLCD.setColor(255,255,255);// creo un rectangulo que va ser un botton
myGLCD.fillRect(137,110,182,140);// seteo el color del rectangulo
myGLCD.setColor(0,0,153); //asigno el color del rectangulo
myGLCD.print("M3",146,116);// imprimo texto en la cordenada del boton
//M-4 Button
myGLCD.setColor(255,255,255); // creo un rectangulo que va ser un botton
myGLCD.fillRect(197,110,242,140);// seteo el color del rectangulo
myGLCD.setColor(0,0,153);//asigno el color del rectangulo
myGLCD.print("M4",206,116);// imprimo texto en la cordenada del boton
//M-5 Button
myGLCD.setColor(255,255,255); // creo un rectangulo que va ser un botton
myGLCD.fillRect(257,110,302,140);// seteo el color del rectangulo
myGLCD.setColor(0,0,153);//asigno el color del rectangulo
myGLCD.print("M5",266,116);// imprimo texto en la cordenada del boton
while(1) // creo un cliclo infinito while
{
if(myTouch.dataAvailable()) // condiciono que si han tocado una parte de la pantalla envie un dato y entren a la rutia
{
myTouch.read(); // leo el dato de la pantalla
x=myTouch.getX();// asigno en la variable x el dato de la pantalla de la cordenada x
y=myTouch.getY();// asigno en la variable y el dato de la pantalla de la cordenada Y
if(x>17 && x<62 && y>110 && y<140) // condiciono que si la variave x y y estan entre un rango de cordenadas entrea a la rutina del if
{
Serial.println("entro");// imprimo en la pantalla del arduino la palabra entrar
digitalWrite(13,LOW);// coloco el pin 13 del arduino en bajo
myGLCD.fillScr(0,0,153);//ubico mi inicio de escritura en la pantalla
myGLCD.setColor(255,255,255);// seteo el color de la pantalla
myGLCD.setBackColor(0,0,153); // asigno un color a la pantalla
myGLCD.print("AMBIENTE",CENTER, 10 ); //imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("M1-PROLOG",CENTER,60);//imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("Tiene 30 segundos",CENTER,110);//imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("Para Ingresar",CENTER,138);//imprimo en la pantalla el texto en las cordenadas espesificas
Serial1.println(dat+",1"); // envio por el puerto serial el dato recopilado de la trajeta rfid y el texto
delay(200);// genero un retardo de 30000 milisegundos
digitalWrite(13,HIGH); // coloco el pin 13 en alto
delay(200);// genero un retardo de 30000 milisegundos
digitalWrite(13,HIGH); // coloco el pin 13 en alto
delay(200);// genero un retardo de 30000 milisegundos
digitalWrite(13,HIGH); // coloco el pin 13 en alto
delay(200);// genero un retardo de 30000 milisegundos
digitalWrite(13,HIGH); // coloco el pin 13 en alto
delay(200);// genero un retardo de 30000 milisegundos
digitalWrite(13,HIGH); // coloco el pin 13 en alto
delay(200);// genero un retardo de 30000 milisegundos
digitalWrite(13,HIGH); // coloco el pin 13 en alto
loop(); //redirecciono el programam a la funcion rpincila del mismo
}
if(x>77 && x<122 && y>110 && y<140){ // condiciono que si la variave x y y estan entre un rango de cordenadas entrea a la rutina del if
digitalWrite(12,LOW);// coloco el pin 13 del arduino en bajo
myGLCD.fillScr(0,0,153);//ubico el inico de la escritula en la pantalla
myGLCD.setColor(255,255,255);// seteo el color en la pantalla
myGLCD.setBackColor(0,0,153);// asigno el color a al pantalla
myGLCD.print("AMBIENTE",CENTER, 10 ); //imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("M2-SIM-BOSCH-SIEMENS",CENTER,60); //imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("Tiene 30 segundos",CENTER,110); //imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("Para Ingresar",CENTER,138); //imprimo en la pantalla el texto en las cordenadas espesificas
Serial1.println(dat+",2");// envio por el puerto serial el dato recopilado de la trajeta rfid y el texto
delay(30000);// genero un retardo de 30000 milisegundos
digitalWrite(12,HIGH);// coloco el pin 13 en alto
loop();//redirecciono el programam a la funcion rpincila del mismo
}
if(x>137 && x<182 && y>110 && y<140){// condiciono que si la variave x y y estan entre un rango de cordenadas entrea a la rutina del if
digitalWrite(11,LOW);// coloco el pin 11 del arduino en bajo
myGLCD.fillScr(0,0,153);//ubico el inico de la escritula en la pantalla
myGLCD.setColor(255,255,255);// seteo el color en la pantalla
myGLCD.setBackColor(0,0,153);// asigno el color a al pantalla
myGLCD.print("AMBIENTE",CENTER, 10 );//imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("M3-DES-MECATRONICO",CENTER,60); //imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("Tiene 30 segundos",CENTER,110); //imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("Para Ingresar",CENTER,138); //imprimo en la pantalla el texto en las cordenadas espesificas
Serial1.println(dat+",3");// envio por el puerto serial el dato recopilado de la trajeta rfid y el texto
delay(30000);// genero un retardo de 30000 milisegundos
digitalWrite(11,HIGH);// coloco el pin 13 en alto
loop();//redirecciono el programam a la funcion rpincila del mismo
}
if(x>197 && x<242 && y>110 && y<140){// condiciono que si la variave x y y estan entre un rango de cordenadas entrea a la rutina del if
digitalWrite(10,LOW);// coloco el pin 10 del arduino en bajo
digitalWrite(9,LOW);// coloco el pin 9 del arduino en bajo
myGLCD.fillScr(0,0,153);//ubico el inico de la escritula en la pantalla
myGLCD.setColor(255,255,255);// seteo el color en la pantalla
myGLCD.setBackColor(0,0,153);// asigno el color a al pantalla
myGLCD.print("AMBIENTE",CENTER, 10 );//imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("M4-HIDRAULICA",CENTER,60); //imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("Tiene 30 segundos",CENTER,110); //imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("Para Ingresar",CENTER,138); //imprimo en la pantalla el texto en las cordenadas espesificas
Serial1.println(dat+",4");// envio por el puerto serial el dato recopilado de la trajeta rfid y el texto
delay(30000);// genero un retardo de 30000 milisegundos
digitalWrite(10,HIGH);// coloco el pin 10 en alto
digitalWrite(9,HIGH);//coloco el pin 9 en alto
loop();//redirecciono el programam a la funcion rpincila del mismo
}
if(x>257 && x<302 && y>110 && y<140){// condiciono que si la variave x y y estan entre un rango de cordenadas entrea a la rutina del if
digitalWrite(8,LOW);// coloco el pin 8 del arduino en bajo
myGLCD.fillScr(0,0,153);//ubico el inico de la escritula en la pantalla
myGLCD.setColor(255,255,255);// seteo el color en la pantalla
myGLCD.setBackColor(0,0,153);// asigno el color a al pantalla
myGLCD.print("AMBIENTE",CENTER, 10 );//imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("M5-NEUMATICA",CENTER,60);//imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("Tiene 30 segundos",CENTER,110);//imprimo en la pantalla el texto en las cordenadas espesificas
myGLCD.print("Para Ingresar",CENTER,138);//imprimo en la pantalla el texto en las cordenadas espesificas
Serial1.println(dat+",5");// envio por el puerto serial el dato recopilado de la trajeta rfid y el texto
delay(30000);// genero un retardo de 30000 milisegundos
//wait_time(300000);
digitalWrite(8,HIGH);// coloco el pin 8 del arduino en alto
loop();//redirecciono el programam a la funcion rpincila del mismo
}
if(x>120 && x<207 && y>180 && y<220){// condiciono que si la variave x y y estan entre un rango de cordenadas entrea a la rutina del if
loop();//redirecciono el programam a la funcion rpincila del mismo
}
}
}
delay(4000); // relaizo un retraso de 4000 milisegundos
}
void(* resetFunc) (void) = 0; // reseteo la funcion y la inicializo en 0
// declaracion de variables he inicializacion en todo el programa
void setup() {
// wdt_disable();
pinMode(13,OUTPUT); // coloco el pin 13 del arduino como salida
pinMode(12,OUTPUT); // coloco el pin 12 del arduino como Salida
pinMode(11,OUTPUT); // coloco el pin 11 del arduini como salida
pinMode(10,OUTPUT); // Coloco el pin 10 del arduino como salida
pinMode(9,OUTPUT); // coloco el pin 9 del arduino como salida
pinMode(8,OUTPUT); // coloco el pin 8 del arduino como salida
myGLCD.InitLCD(LANDSCAPE); // inicializo la pantalla
myGLCD.setFont(arial_bold);
myGLCD.clrScr(); // borro todo lo de la pantalla
myGLCD.setContrast(10); // inicializo el contraste de la pantalla
myTouch.InitTouch(); // inicializo el touch de la pantalla
myTouch.setPrecision(PREC_MEDIUM); // inicializo la snesibilidad ed la pantalla en medio
Serial.begin(9600); // inicializo el puerto serial del arduino en una velocidad de 9600
Serial1.begin(9600);// inicializo el puerto serial1 del arduino en una velocidad de 960
Serial1.flush();
digitalWrite(13,HIGH); // coloco el pin 13 del del arduino en alto
digitalWrite(12,HIGH);// coloco el pin 12 del del arduino en alto
digitalWrite(11,HIGH);// coloco el pin 11 del del arduino en alto
digitalWrite(10,HIGH);// coloco el pin 10 del del arduino en alto
digitalWrite(9,HIGH);// coloco el pin 09 del del arduino en alto
digitalWrite(8,HIGH);// coloco el pin 08 del del arduino en alto
// wdt_enable(WDTO_8S);
}
// funcion principal del programam //
void loop() {
String data =""; // seteo la variale data y la coloco bacia
String itema; // declaro un variable itema como string
String itemb;//declaro un variable itemb como string
// primer texto de la pantalla //
myGLCD.fillScr(0,0,153);//ubico el inico de la escritula en la pantalla
myGLCD.setColor(255,255,255);// seteo el color en la pantalla
myGLCD.setBackColor(0,0,153);//asigno el color a al pantalla
myGLCD.print("SENA", CENTER, 6);//imprimo en la pantalla el texto en las cordenadas espesifica
myGLCD.print("C.D.T.I", CENTER, 25);//imprimo en la pantalla el texto en las cordenadas espesifica
myGLCD.print("Regional Valle", CENTER, 48);//imprimo en la pantalla el texto en las cordenadas espesifica
myGLCD.print("Bienvenidos al area", CENTER,80);//imprimo en la pantalla el texto en las cordenadas espesifica
myGLCD.print("de mecatronica para", CENTER,96);//imprimo en la pantalla el texto en las cordenadas espesifica
myGLCD.print("ingresar, acerque la", CENTER,112);//imprimo en la pantalla el texto en las cordenadas espesifica
myGLCD.print("tarjeta RFID", CENTER,128); //imprimo en la pantalla el texto en las cordenadas espesifica
while(1){ //inicio un cilo while infinito que va a preguntas si hay datos en ek puestro serial 1
if(Serial1.available()){ // condiciona si ahi datos en el puesto serial 1
data = Serial1.readString(); // guardo el dato del puerto serial 1 en data el cual es el nombre del instructor dado ppr la targeta rfid
Serial.println(data);// imprimo el dato en la pantalla del arduino
StringSplitter *splitter = new StringSplitter(data, ',', 9);// divido el dato en varias partes como un string
int itemCount = splitter->getItemCount();// lo asigno a una variable imecount como entero
itema = splitter->getItemAtIndex(0);
itemb = splitter->getItemAtIndex(1);
Serial1.flush();
Serial.println(itemb);
//wdt_reset();
}
if(itema=="a"){ // condicions a que si hay dato en la parte del string valla a la pantalla dos
Serial.println("ENTRO");
screen2(itemb);// redirecciona el codigo a al apantalla dos que esta en el principio del codigo
}
else{
Serial.println("NO"); // si no esta siga en el codigo preguntando si ahi dato en el puerto serial 1
}
}
}