#include <SPI.h> // Librería para usar tarjeta SD
#include <SdFat.h> // Complemento para Usar tarjeta SD
#include <UTFT_SdRaw.h> // Complement para usar tarjeta SD
#define SD_CHIP_SELECT 53 // SD chip select pin
#include <UTFT.h> // Librería para habilitar pantalla TFT
#include <UTouch.h>
UTouch myTouch( 6, 5, 4, 3, 8);
SdFat sd;
UTFT myGLCD(CTE50,38,39,40,41); // Definición de pines para habilitar pantalla LCD
UTFT_SdRaw myFiles(&myGLCD); // Comando para acelerar la carga de imágenes
const int LUZlcd = 44;
int brightness = 0;
int x,y;
extern uint8_t OCR_A_Extended_M[];
int draw =0;
int test =0;
int logic=0;
int gate=0;
int ejercicio=0;
int ANDstate =0;
int ORstate =0;
int NOTstate =0;
int BUFFERstate=0;
int NANDstate =0;
int NORstate =0;
int XNORstate =0;
int XORstate =0;
const int out1 = 8; // patilla #1 en IC
const int out2 = 9; // patilla #2 en IC
const int out3 = 10;// patilla #3 en IC
const int out4 = 11;// patilla #4 en IC
const int out5 = 12;// patilla #5 en IC
const int out6 = A0;// patilla #6 en IC
const int out7 = A1;// patilla #8 en IC
const int out8 = A2;// patilla #9 en IC
const int out9 = A3;// patilla #10 en IC
const int out10= A4;// patilla #11 en IC
const int out11= A5;// patilla #12 en IC
const int out12= A6;// patilla #13 en IC
int read1;
int read2;
int read3;
int read4;
int read5;
int read6;
void setup() {
myGLCD.InitLCD();
pinMode(LUZlcd, OUTPUT);
myTouch.InitTouch();
myTouch.setPrecision(PREC_HI);
Serial.println(F("Initialising SD card..."));
bool mysd = 0; // see if the card is present and can be initialized:
while (!mysd)
{
if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) {
Serial.println(F("Card failed, or not present"));
Serial.println(F("Retrying...."));
}
else
{
mysd = 1;
Serial.println(F("Card initialised."));
}
}
Serial.begin(9600);
while (!Serial); // wait for Leonardo enumeration, others continue immediately
PP();
myGLCD.setFont(OCR_A_Extended_M);
myGLCD.setBackColor(32,32,228);
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(137,17,152,32);
myGLCD.fillRect(247,17,262,32);
myGLCD.fillRect(356,17,371,32);
myGLCD.fillRect(465,17,480,32);
myGLCD.fillRect(138,104,153,119);
myGLCD.fillRect(247,104,262,119);
myGLCD.fillRect(356,104,371,119);
myGLCD.fillRect(465,104,480,119);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("Y",710,55);
myGLCD.print(" ",590,55);
myGLCD.print(" ",615,55);
myGLCD.print(" ",640,55);
}
void loop() {
Serial.print ("dentro de LOOP");
while (myTouch.dataAvailable() == true)
{
myTouch.read();
x = myTouch.getX();
y = myTouch.getY();
if ((x!=-1) and (y!=-1))
{
Serial.print(x);
Serial.print(" X ");
Serial.print(y);
Serial.println(" Y ");
// myGLCD.drawPixel (x, y);
}
// Test button
if ((y>=320) && (y<=430)){
if ((x>=600) && (x<=710)){
test = 1;
// If some logic GATE has been selected then set Circuit to TEST
if (logic >=1){
Serial.println("dentro de IF LOGIC");
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(578,95,670,280);
myGLCD.fillRect(688,95,747,280);
ANDstate =0;
ORstate =0;
NOTstate =0;
BUFFERstate=0;
NANDstate =0;
NORstate =0;
XNORstate =0;
XORstate =0;
TEST();
}
delay(300);
}
}
circuitos();
}
}
// Primera Pantalla
void PP(){
myFiles.load(0,0, 800,480, "main.RAW");
digitalWrite(LUZlcd, HIGH);
}
void circuitos(){
// Seleccion AND GATE
if ((y>=20) && (y<=74)){
if ((x>=70) && (x<=145)){
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(247,17,262,32);
myGLCD.fillRect(356,17,371,32);
myGLCD.fillRect(465,17,480,32);
myGLCD.fillRect(138,104,153,119);
myGLCD.fillRect(247,104,262,119);
myGLCD.fillRect(356,104,371,119);
myGLCD.fillRect(465,104,480,119);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(137,17,152,32);
myFiles.load(54,255, 426,164, "and.RAW");
myGLCD.print("A",590,55);
myGLCD.print(" ",615,55);
myGLCD.fillCircle(623,65,4);
myGLCD.print("B",640,55);
myGLCD.setColor(32,32,228);
myGLCD.drawLine(590,48,657,48);
myGLCD.drawLine(590,49,657,49);
myGLCD.drawCircle(623,65,10);
myGLCD.setColor(VGA_YELLOW);
pinMode(out1, OUTPUT);
pinMode(out2, OUTPUT);
pinMode(out3, INPUT);
pinMode(out4, OUTPUT);
pinMode(out5, OUTPUT);
pinMode(out6, INPUT);
pinMode(out7, INPUT);
pinMode(out8, OUTPUT);
pinMode(out9, OUTPUT);
pinMode(out10, INPUT);
pinMode(out11,OUTPUT);
pinMode(out12,OUTPUT);
test = 1;
logic = 1;
ejercicio = 0;
x=0;
y=0;
ANDstate=0;
}
}
// Seleccion OR GATE
if ((y>=20) && (y<=74)){
if ((x>=180) && (x<=255)){
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(137,17,152,32);
myGLCD.fillRect(356,17,371,32);
myGLCD.fillRect(465,17,480,32);
myGLCD.fillRect(138,104,153,119);
myGLCD.fillRect(247,104,262,119);
myGLCD.fillRect(356,104,371,119);
myGLCD.fillRect(465,104,480,119);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(247,17,262,32);
myFiles.load(54,255, 426,164, "or.RAW");
myGLCD.print("A",590,55);
myGLCD.print("+",615,55);
myGLCD.print("B",640,55);
myGLCD.setColor(32,32,228);
myGLCD.drawLine(590,48,657,48);
myGLCD.drawLine(590,49,657,49);
myGLCD.drawCircle(623,65,10);
myGLCD.setColor(VGA_YELLOW);
pinMode(out1, OUTPUT);
pinMode(out2, OUTPUT);
pinMode(out3, INPUT);
pinMode(out4, OUTPUT);
pinMode(out5, OUTPUT);
pinMode(out6, INPUT);
pinMode(out7, INPUT);
pinMode(out8, OUTPUT);
pinMode(out9, OUTPUT);
pinMode(out10, INPUT);
pinMode(out11,OUTPUT);
pinMode(out12,OUTPUT);
test = 1;
logic = 2;
ejercicio = 0;
x=0;
y=0;
ORstate=0;
}
}
// Seleccion NOT GATE
if ((y>=20) && (y<=74)){
if ((x>=290) && (x<=365)){
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(137,17,152,32);
myGLCD.fillRect(247,17,262,32);
myGLCD.fillRect(465,17,480,32);
myGLCD.fillRect(138,104,153,119);
myGLCD.fillRect(247,104,262,119);
myGLCD.fillRect(356,104,371,119);
myGLCD.fillRect(465,104,480,119);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(356,17,371,32);
myFiles.load(54,255, 426,164, "not.RAW");
myGLCD.print(" ",590,55);
myGLCD.print("A",615,55);
myGLCD.setColor(32,32,228);
myGLCD.drawLine(590,48,657,48);
myGLCD.drawLine(590,49,657,49);
myGLCD.drawCircle(623,65,10);
myGLCD.setColor(VGA_YELLOW);
myGLCD.drawLine(615,48,633,48);
myGLCD.drawLine(615,49,633,49);
myGLCD.print(" ",640,55);
pinMode(out1,OUTPUT);
pinMode(out2, INPUT);
pinMode(out3, OUTPUT);
pinMode(out4, INPUT);
pinMode(out5, OUTPUT);
pinMode(out6, INPUT);
pinMode(out7, INPUT);
pinMode(out8, OUTPUT);
pinMode(out9, INPUT);
pinMode(out10,OUTPUT);
pinMode(out11, INPUT);
pinMode(out12,OUTPUT);
test = 1;
logic = 3;
ejercicio = 0;
x=0;
y=0;
NOTstate=0;
}
}
// Seleccion BUFFER GATE
if ((y>=20) && (y<=74)){
if ((x>=400) && (x<=475)){
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(137,17,152,32);
myGLCD.fillRect(247,17,262,32);
myGLCD.fillRect(356,17,371,32);
myGLCD.fillRect(138,104,153,119);
myGLCD.fillRect(247,104,262,119);
myGLCD.fillRect(356,104,371,119);
myGLCD.fillRect(465,104,480,119);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(465,17,480,32);
myFiles.load(54,255, 426,164, "buffer.RAW");
myGLCD.print(" ",590,55);
myGLCD.print("A",615,55);
myGLCD.print(" ",640,55);
myGLCD.setColor(32,32,228);
myGLCD.drawLine(590,48,657,48);
myGLCD.drawLine(590,49,657,49);
myGLCD.drawCircle(623,65,10);
myGLCD.setColor(VGA_YELLOW);
pinMode(out1,OUTPUT);
pinMode(out2, INPUT);
pinMode(out3, OUTPUT);
pinMode(out4, INPUT);
pinMode(out5, OUTPUT);
pinMode(out6, INPUT);
pinMode(out7, INPUT);
pinMode(out8, OUTPUT);
pinMode(out9, INPUT);
pinMode(out10,OUTPUT);
pinMode(out11, INPUT);
pinMode(out12,OUTPUT);
test = 1;
logic = 4;
ejercicio = 0;
x=0;
y=0;
}
}
// Seleccion NAND GATE
if ((y>=100) && (y<=168)){
if ((x>=70) && (x<=145)){
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(137,17,152,32);
myGLCD.fillRect(247,17,262,32);
myGLCD.fillRect(356,17,371,32);
myGLCD.fillRect(465,17,480,32);
myGLCD.fillRect(247,104,262,119);
myGLCD.fillRect(356,104,371,119);
myGLCD.fillRect(465,104,480,119);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(138,104,153,119);
myFiles.load(54,255, 426,164, "nand.RAW");
myGLCD.print("A",590,55);
myGLCD.print(" ",615,55);
myGLCD.fillCircle(623,65,4);
myGLCD.print("B",640,55);
myGLCD.drawLine(590,48,657,48);
myGLCD.drawLine(590,49,657,49);
myGLCD.setColor(32,32,228);
myGLCD.drawCircle(623,65,10);
myGLCD.setColor(VGA_YELLOW);
pinMode(out1, OUTPUT);
pinMode(out2, OUTPUT);
pinMode(out3, INPUT);
pinMode(out4, OUTPUT);
pinMode(out5, OUTPUT);
pinMode(out6, INPUT);
pinMode(out7, INPUT);
pinMode(out8, OUTPUT);
pinMode(out9, OUTPUT);
pinMode(out10, INPUT);
pinMode(out11,OUTPUT);
pinMode(out12,OUTPUT);
test = 1;
logic = 5;
ejercicio = 0;
x=0;
y=0;
NANDstate=0;
}
}
// Seleccion NOR GATE
if ((y>=100) && (y<=168)){
if ((x>=180) && (x<=255)){
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(137,17,152,32);
myGLCD.fillRect(247,17,262,32);
myGLCD.fillRect(356,17,371,32);
myGLCD.fillRect(465,17,480,32);
myGLCD.fillRect(138,104,153,119);
myGLCD.fillRect(356,104,371,119);
myGLCD.fillRect(465,104,480,119);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(247,104,262,119);
myFiles.load(54,255, 426,164, "nor.RAW");
myGLCD.print("A",590,55);
myGLCD.print("+",615,55);
myGLCD.print("B",640,55);
myGLCD.drawLine(590,48,657,48);
myGLCD.drawLine(590,49,657,49);
pinMode(out1, INPUT);
pinMode(out2, OUTPUT);
pinMode(out3, OUTPUT);
pinMode(out4, INPUT);
pinMode(out5, OUTPUT);
pinMode(out6, OUTPUT);
pinMode(out7, OUTPUT);
pinMode(out8, OUTPUT);
pinMode(out9, INPUT);
pinMode(out10,OUTPUT);
pinMode(out11,OUTPUT);
pinMode(out12, INPUT);
test = 1;
logic = 6;
ejercicio = 0;
x=0;
y=0;
}
}
// Seleccion XNOR GATE
if ((y>=100) && (y<=168)){
if ((x>=290) && (x<=365)){
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(137,17,152,32);
myGLCD.fillRect(247,17,262,32);
myGLCD.fillRect(356,17,371,32);
myGLCD.fillRect(465,17,480,32);
myGLCD.fillRect(138,104,153,119);
myGLCD.fillRect(247,104,262,119);
myGLCD.fillRect(465,104,480,119);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(356,104,371,119);
myFiles.load(54,255, 426,164, "xnor.RAW");
myGLCD.print("A",590,55);
myGLCD.print("+",615,55);
myGLCD.print("B",640,55);
myGLCD.drawCircle(623,65,10);
myGLCD.drawLine(590,48,657,48);
myGLCD.drawLine(590,49,657,49);
pinMode(out1, OUTPUT);
pinMode(out2, OUTPUT);
pinMode(out3, INPUT);
pinMode(out4, INPUT);
pinMode(out5, OUTPUT);
pinMode(out6, OUTPUT);
pinMode(out7, OUTPUT);
pinMode(out8, OUTPUT);
pinMode(out9, INPUT);
pinMode(out10, INPUT);
pinMode(out11,OUTPUT);
pinMode(out12,OUTPUT);
test = 1;
logic = 7;
ejercicio = 0;
x=0;
y=0;
}
}
// Seleccion XOR GATE
if ((y>=100) && (y<=168)){
if ((x>=400) && (x<=475)){
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(137,17,152,32);
myGLCD.fillRect(247,17,262,32);
myGLCD.fillRect(356,17,371,32);
myGLCD.fillRect(465,17,480,32);
myGLCD.fillRect(138,104,153,119);
myGLCD.fillRect(247,104,262,119);
myGLCD.fillRect(356,104,371,119);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(465,104,480,119);
myFiles.load(54,255, 426,164, "xor.RAW");
myGLCD.print("A",590,55);
myGLCD.print("+",615,55);
myGLCD.print("B",640,55);
myGLCD.drawCircle(623,65,10);
myGLCD.setColor(32,32,228);
myGLCD.drawLine(590,48,657,48);
myGLCD.drawLine(590,49,657,49);
myGLCD.setColor(VGA_YELLOW);
pinMode(out1, OUTPUT);
pinMode(out2, OUTPUT);
pinMode(out3, INPUT);
pinMode(out4, OUTPUT);
pinMode(out5, OUTPUT);
pinMode(out6, INPUT);
pinMode(out7, INPUT);
pinMode(out8, OUTPUT);
pinMode(out9, OUTPUT);
pinMode(out10, INPUT);
pinMode(out11,OUTPUT);
pinMode(out12,OUTPUT);
test = 1;
logic = 8;
ejercicio = 0;
x=0;
y=0;
}
}
}
void TEST(){
switch (logic){
case 1: // Ejecuta test a compuerta AND
// Entrada 0 y 0 en GATE 1
myGLCD.setBackColor(VGA_BLACK);
myGLCD.print("GATE 1",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(53,418,58,364);
myGLCD.fillRect(59,364,133,368);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out1, LOW);
myGLCD.print("0",590,100);
digitalWrite(out2, LOW);
myGLCD.print("0",640,100);
delay(1000);
read1 = digitalRead(out3);
if(read1 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
ANDstate = ANDstate+1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setColor(VGA_LIME);
digitalWrite(out1, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out2, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read1 = digitalRead(out3);
if(read1 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(53,418,58,364);
myGLCD.fillRect(59,364,133,368);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out1, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out2, LOW);
myGLCD.print("0",640,180);
delay(1000);
read1 = digitalRead(out3);
if(read1 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(53,418,58,364);
myGLCD.fillRect(59,364,133,368);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out1, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out2, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read1 = digitalRead(out3);
if(read1 ==HIGH){
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
delay(1000);
// Entrada 0 y 0 en GATE 2
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 2",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(264,418,269,364);
myGLCD.fillRect(270,364,352,369);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out4, LOW);
myGLCD.print("0",590,100);
digitalWrite(out5, LOW);
myGLCD.print("0",640,100);
delay(1000);
read2 = digitalRead(out6);
if(read2 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setColor(VGA_LIME);
digitalWrite(out4, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out5, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read2 = digitalRead(out6);
if(read2 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(264,418,269,364);
myGLCD.fillRect(270,364,352,369);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out4, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out5, LOW);
myGLCD.print("0",640,180);
delay(1000);
read2 = digitalRead(out6);
if(read2 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(264,418,269,364);
myGLCD.fillRect(270,364,352,369);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out4, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out5, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read2 = digitalRead(out6);
if(read2 ==HIGH){
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
delay(1000);
// Entrada 0 y 0 en GATE 3
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 3",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(412,254,417,269);
myGLCD.fillRect(395,264,413,269);
myGLCD.fillRect(395,269,399,293);
myGLCD.fillRect(400,288,414,293);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out8, LOW);
myGLCD.print("0",590,100);
digitalWrite(out9, LOW);
myGLCD.print("0",640,100);
delay(1000);
read3 = digitalRead(out7);
if(read3 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setColor(VGA_LIME);
digitalWrite(out8, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out9, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read3 = digitalRead(out7);
if(read3 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(412,254,417,269);
myGLCD.fillRect(395,264,413,269);
myGLCD.fillRect(395,269,399,293);
myGLCD.fillRect(400,288,414,293);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out8, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out9, LOW);
myGLCD.print("0",640,180);
delay(1000);
read3 = digitalRead(out7);
if(read3 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(412,254,417,269);
myGLCD.fillRect(395,264,413,269);
myGLCD.fillRect(395,269,399,293);
myGLCD.fillRect(400,288,414,293);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out8, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out9, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read3 = digitalRead(out7);
if(read3 ==HIGH){
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
delay(1000);
// Entrada 0 y 0 en GATE 4
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 4",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(191,254,196,292);
myGLCD.fillRect(192,289,208,294);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out11, LOW);
myGLCD.print("0",590,100);
digitalWrite(out12, LOW);
myGLCD.print("0",640,100);
delay(1000);
read4 = digitalRead(out10);
if(read4 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setColor(VGA_LIME);
digitalWrite(out11, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out12, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read4 = digitalRead(out10);
if(read4 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(191,254,196,292);
myGLCD.fillRect(192,289,208,294);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out11, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out12, LOW);
myGLCD.print("0",640,180);
delay(1000);
read4 = digitalRead(out10);
if(read4 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(191,254,196,292);
myGLCD.fillRect(192,289,208,294);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out11, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out12, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read4 = digitalRead(out10);
if(read4 ==HIGH){
ANDstate = ANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
if(ANDstate == 16){
myGLCD.setColor(VGA_LIME);
myGLCD.print("IC -->",577,260);
myGLCD.print(" OK ",688,260);
}
else{
myGLCD.setColor(VGA_RED);
myGLCD.print("IC -->",577,260);
myGLCD.print("Fail",688,260);
}
myGLCD.setBackColor(32,32,228);
Serial.print(ANDstate);
break;
case 2: // Ejecuta test a compuerta OR
// Entrada 0 y 0 en GATE 1
Serial.print(" en GATE OR ");
myGLCD.setBackColor(VGA_BLACK);
myGLCD.print("GATE 1",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(53,418,58,364);
myGLCD.fillRect(59,364,133,368);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out1, LOW);
myGLCD.print("0",590,100);
digitalWrite(out2, LOW);
myGLCD.print("0",640,100);
delay(1000);
read1 = digitalRead(out3);
read2 = analogRead(out3);
Serial.print("digital READ ");
Serial.print(read1);
Serial.print(" Analog READ ");
Serial.println(read2);
if(read1 ==HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(179,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(179,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setColor(VGA_LIME);
digitalWrite(out1, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out2, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read1 = digitalRead(out3);
read2 = analogRead(out3);
Serial.print("digital READ ");
Serial.print(read1);
Serial.print(" Analog READ ");
Serial.print(read2);
if(read1 ==HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(179,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(179,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(53,418,58,364);
myGLCD.fillRect(59,364,133,368);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out1, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out2, LOW);
myGLCD.print("0",640,180);
delay(1000);
read1 = digitalRead(out3);
if(read1 ==HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(179,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(179,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(53,418,58,364);
myGLCD.fillRect(59,364,133,368);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out1, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out2, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read1 = digitalRead(out3);
if(read1 ==HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(179,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(179,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
delay(1000);
// Entrada 0 y 0 en GATE 2
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 2",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(264,418,269,364);
myGLCD.fillRect(270,364,352,369);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out4, LOW);
myGLCD.print("0",590,100);
digitalWrite(out5, LOW);
myGLCD.print("0",640,100);
delay(1000);
read2 = digitalRead(out6);
if(read2 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(400,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(400,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setColor(VGA_LIME);
digitalWrite(out4, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out5, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read2 = digitalRead(out6);
if(read2 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(400,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(400,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(264,418,269,364);
myGLCD.fillRect(270,364,352,369);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out4, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out5, LOW);
myGLCD.print("0",640,180);
delay(1000);
read2 = digitalRead(out6);
if(read2 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(400,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(400,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(264,418,269,364);
myGLCD.fillRect(270,364,352,369);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out4, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out5, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read2 = digitalRead(out6);
if(read2 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(400,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(400,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
delay(1000);
// Entrada 0 y 0 en GATE 3
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 3",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(412,254,417,269);
myGLCD.fillRect(395,264,413,269);
myGLCD.fillRect(395,269,399,293);
myGLCD.fillRect(400,288,414,293);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out8, LOW);
myGLCD.print("0",590,100);
digitalWrite(out9, LOW);
myGLCD.print("0",640,100);
delay(1000);
read3 = digitalRead(out7);
if(read3 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(466,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(466,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setColor(VGA_LIME);
digitalWrite(out8, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out9, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read3 = digitalRead(out7);
if(read3 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(466,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(466,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(412,254,417,269);
myGLCD.fillRect(395,264,413,269);
myGLCD.fillRect(395,269,399,293);
myGLCD.fillRect(400,288,414,293);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out8, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out9, LOW);
myGLCD.print("0",640,180);
delay(1000);
read3 = digitalRead(out7);
if(read3 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(466,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(466,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(412,254,417,269);
myGLCD.fillRect(395,264,413,269);
myGLCD.fillRect(395,269,399,293);
myGLCD.fillRect(400,288,414,293);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out8, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out9, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read3 = digitalRead(out7);
if(read3 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(466,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(466,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
delay(1000);
// Entrada 0 y 0 en GATE 4
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 4",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(191,254,196,292);
myGLCD.fillRect(192,289,208,294);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out11, LOW);
myGLCD.print("0",590,100);
digitalWrite(out12, LOW);
myGLCD.print("0",640,100);
delay(1000);
read4 = digitalRead(out10);
if(read4 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(253,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(253,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setColor(VGA_LIME);
digitalWrite(out11, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out12, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read4 = digitalRead(out10);
if(read4 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(253,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(253,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(191,254,196,292);
myGLCD.fillRect(192,289,208,294);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out11, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out12, LOW);
myGLCD.print("0",640,180);
delay(1000);
read4 = digitalRead(out10);
if(read4 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(253,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(253,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(191,254,196,292);
myGLCD.fillRect(192,289,208,294);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out11, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out12, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read4 = digitalRead(out10);
if(read4 >=HIGH){
ORstate = ORstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(253,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(253,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
if(ORstate == 12){
myGLCD.setColor(VGA_LIME);
myGLCD.print("IC -->",577,260);
myGLCD.print(" OK ",688,270);
}
else{
myGLCD.print("IC -->",577,260);
myGLCD.print("Fail",688,260);
}
myGLCD.setBackColor(32,32,228);
break;
case 3: // Ejecuta test a compuerta NOT
// Entrada 0 en GATE 1
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setBackColor(VGA_BLACK);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 1",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(53,418,58,364);
myGLCD.fillRect(59,364,69,368);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out1, LOW);
myGLCD.print("0",615,100);
delay(1000);
read1 = digitalRead(out2);
if(read1 ==HIGH){
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(114,364,122,368);
myGLCD.fillRect(118,369,122,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(114,364,122,368);
myGLCD.fillRect(118,369,122,418);
}
// Entrada 1 en GATE 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(53,418,58,364);
myGLCD.fillRect(59,364,69,368);
myGLCD.setColor(VGA_RED);
digitalWrite(out1, HIGH);
myGLCD.print("1",615,140);
delay(1000);
read1 = digitalRead(out2);
if(read1 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(114,364,122,368);
myGLCD.fillRect(118,369,122,418);
}
else{
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(114,364,122,368);
myGLCD.fillRect(118,369,122,418);
}
delay(1000);
// Entrada 0 en GATE 2
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setBackColor(VGA_BLACK);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 2",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(190,418,195,364);
myGLCD.fillRect(196,364,210,369);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out3, LOW);
myGLCD.print("0",615,100);
delay(1000);
read2 = digitalRead(out4);
if(read2 ==HIGH){
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(257,364,267,369);
myGLCD.fillRect(263,370,267,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(257,364,267,369);
myGLCD.fillRect(263,370,267,418);
}
// Entrada 1 en GATE 2
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(190,418,195,364);
myGLCD.fillRect(196,364,210,369);
myGLCD.setColor(VGA_RED);
digitalWrite(out3, HIGH);
myGLCD.print("1",615,140);
delay(1000);
read2 = digitalRead(out4);
if(read2 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(257,364,267,369);
myGLCD.fillRect(263,370,267,418);
}
else{
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(257,364,267,369);
myGLCD.fillRect(263,370,267,418);
}
delay(1000);
// Entrada 0 en GATE 3
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setBackColor(VGA_BLACK);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 3",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(337,418,341,364);
myGLCD.fillRect(342,364,355,368);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out5, LOW);
myGLCD.print("0",615,100);
delay(1000);
read4 = digitalRead(out6);
if(read4 ==HIGH){
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(400,364,415,368);
myGLCD.fillRect(411,369,415,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(400,364,415,368);
myGLCD.fillRect(411,369,415,418);
}
// Entrada 1 en GATE 3
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(337,418,341,364);
myGLCD.fillRect(342,364,355,368);
myGLCD.setColor(VGA_LIME);
myGLCD.setColor(VGA_RED);
digitalWrite(out5, HIGH);
myGLCD.print("1",615,140);
delay(1000);
read4 = digitalRead(out6);
if(read4 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(400,364,415,368);
myGLCD.fillRect(411,369,415,418);
}
else{
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(400,364,415,368);
myGLCD.fillRect(411,369,415,418);
}
delay(1000);
// Entrada 0 en GATE 4
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setBackColor(VGA_BLACK);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 4",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(412,254,417,301);
myGLCD.fillRect(418,296,428,301);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out8, LOW);
myGLCD.print("0",615,100);
delay(1000);
read4 = digitalRead(out7);
if(read4 ==HIGH){
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(470,296,476,301);
myGLCD.fillRect(471,295,476,254);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(470,296,476,301);
myGLCD.fillRect(471,295,476,254);
}
// Entrada 1 en GATE 4
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(412,254,417,301);
myGLCD.fillRect(418,296,428,301);
myGLCD.setColor(VGA_LIME);
myGLCD.setColor(VGA_RED);
digitalWrite(out8, HIGH);
myGLCD.print("1",615,140);
delay(1000);
read4 = digitalRead(out7);
if(read4 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(470,296,476,301);
myGLCD.fillRect(471,295,476,254);
}
else{
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(470,296,476,301);
myGLCD.fillRect(471,295,476,254);
}
delay(1000);
// Entrada 0 en GATE 5
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setBackColor(VGA_BLACK);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 5",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(264,254,269,301);
myGLCD.fillRect(270,296,285,301);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out10, LOW);
myGLCD.print("0",615,100);
delay(1000);
read4 = digitalRead(out9);
if(read4 ==HIGH){
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(328,296,336,301);
myGLCD.fillRect(337,301,342,254);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(328,296,336,301);
myGLCD.fillRect(337,301,342,254);
}
// Entrada 1 en GATE 5
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(264,254,269,301);
myGLCD.fillRect(270,296,285,301);
myGLCD.setColor(VGA_LIME);
myGLCD.setColor(VGA_RED);
digitalWrite(out10, HIGH);
myGLCD.print("1",615,140);
delay(1000);
read4 = digitalRead(out9);
if(read4 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(328,296,336,301);
myGLCD.fillRect(337,301,342,254);
}
else{
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(328,296,336,301);
myGLCD.fillRect(337,301,342,254);
}
delay(1000);
// Entrada 0 en GATE 6
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setBackColor(VGA_BLACK);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 6",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(115,254,120,301);
myGLCD.fillRect(121,296,135,301);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out12, LOW);
myGLCD.print("0",615,100);
delay(1000);
read4 = digitalRead(out11);
if(read4 ==HIGH){
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(177,296,190,301);
myGLCD.fillRect(191,301,195,254);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(177,296,190,301);
myGLCD.fillRect(191,301,195,254);
}
// Entrada 1 en GATE 6
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(115,254,120,301);
myGLCD.fillRect(121,296,135,301);
myGLCD.setColor(VGA_LIME);
myGLCD.setColor(VGA_RED);
digitalWrite(out12, HIGH);
myGLCD.print("1",615,140);
delay(1000);
read4 = digitalRead(out11);
if(read4 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(177,296,190,301);
myGLCD.fillRect(191,301,195,254);
}
else{
NOTstate = NOTstate +1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(177,296,190,301);
myGLCD.fillRect(191,301,195,254);
}
if(NOTstate == 12){
myGLCD.setColor(VGA_LIME);
myGLCD.print("IC -->",577,260);
myGLCD.print(" OK ",688,260);
}
else{
myGLCD.setColor(VGA_RED);
myGLCD.print("IC -->",577,260);
myGLCD.print("Fail",688,260);
}
myGLCD.setBackColor(32,32,228);
break;
case 5: // Ejecuta test a compuerta NAND
// Entrada 0 y 0 en GATE 1
myGLCD.setBackColor(VGA_BLACK);
myGLCD.print("GATE 1",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(53,418,58,364);
myGLCD.fillRect(59,364,133,368);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out1, LOW);
myGLCD.print("0",590,100);
digitalWrite(out2, LOW);
myGLCD.print("0",640,100);
delay(1000);
read1 = digitalRead(out3);
if(read1 ==HIGH){
NANDstate = NANDstate+1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setColor(VGA_LIME);
digitalWrite(out1, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out2, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read1 = digitalRead(out3);
if(read1 ==HIGH){
NANDstate = NANDstate+1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(53,418,58,364);
myGLCD.fillRect(59,364,133,368);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out1, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out2, LOW);
myGLCD.print("0",640,180);
delay(1000);
read1 = digitalRead(out3);
if(read1 ==HIGH){
NANDstate = NANDstate+1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(53,418,58,364);
myGLCD.fillRect(59,364,133,368);
myGLCD.fillRect(117,418,122,383);
myGLCD.fillRect(123,383,133,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out1, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out2, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read1 = digitalRead(out3);
if(read1 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
else{
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(172,372,193,377);
myGLCD.fillRect(190,372,195,418);
}
delay(1000);
// Entrada 0 y 0 en GATE 2
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 2",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(264,418,269,364);
myGLCD.fillRect(270,364,352,369);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out4, LOW);
myGLCD.print("0",590,100);
digitalWrite(out5, LOW);
myGLCD.print("0",640,100);
delay(1000);
read2 = digitalRead(out6);
if(read2 ==HIGH){
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setColor(VGA_LIME);
digitalWrite(out4, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out5, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read2 = digitalRead(out6);
if(read2 ==HIGH){
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(264,418,269,364);
myGLCD.fillRect(270,364,352,369);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out4, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out5, LOW);
myGLCD.print("0",640,180);
delay(1000);
read2 = digitalRead(out6);
if(read2 ==HIGH){
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(264,418,269,364);
myGLCD.fillRect(270,364,352,369);
myGLCD.fillRect(336,418,341,383);
myGLCD.fillRect(342,383,355,387);
myGLCD.setColor(VGA_RED);
digitalWrite(out4, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out5, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read2 = digitalRead(out6);
if(read2 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
else{
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(390,372,408,377);
myGLCD.fillRect(409,372,414,418);
}
delay(1000);
// Entrada 0 y 0 en GATE 3
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 3",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(412,254,417,269);
myGLCD.fillRect(395,264,413,269);
myGLCD.fillRect(395,269,399,293);
myGLCD.fillRect(400,288,414,293);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out8, LOW);
myGLCD.print("0",590,100);
digitalWrite(out9, LOW);
myGLCD.print("0",640,100);
delay(1000);
read3 = digitalRead(out7);
if(read3 ==HIGH){
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setColor(VGA_LIME);
digitalWrite(out8, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out9, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read3 = digitalRead(out7);
if(read3 ==HIGH){
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(412,254,417,269);
myGLCD.fillRect(395,264,413,269);
myGLCD.fillRect(395,269,399,293);
myGLCD.fillRect(400,288,414,293);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out8, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out9, LOW);
myGLCD.print("0",640,180);
delay(1000);
read3 = digitalRead(out7);
if(read3 ==HIGH){
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(412,254,417,269);
myGLCD.fillRect(395,264,413,269);
myGLCD.fillRect(395,269,399,293);
myGLCD.fillRect(400,288,414,293);
myGLCD.fillRect(339,254,344,312);
myGLCD.fillRect(345,307,414,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out8, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out9, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read3 = digitalRead(out7);
if(read3 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
else{
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(454,298,475,302);
myGLCD.fillRect(472,298,477,254);
}
delay(1000);
// Entrada 0 y 0 en GATE 4
myGLCD.setColor(VGA_BLACK);
myGLCD.fillRect(580,95,660,260);
myGLCD.fillRect(710,95,740,280);
delay(500);
myGLCD.setColor(VGA_YELLOW);
myGLCD.print("GATE 4",577,260);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(191,254,196,292);
myGLCD.fillRect(192,289,208,294);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setBackColor(VGA_BLACK);
digitalWrite(out11, LOW);
myGLCD.print("0",590,100);
digitalWrite(out12, LOW);
myGLCD.print("0",640,100);
delay(1000);
read4 = digitalRead(out10);
if(read4 ==HIGH){
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,100);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,100);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
// Entrada 0 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setColor(VGA_LIME);
digitalWrite(out11, LOW);
myGLCD.print("0",590,140);
myGLCD.setColor(VGA_RED);
digitalWrite(out12, HIGH);
myGLCD.print("1",640,140);
delay(1000);
read4 = digitalRead(out10);
if(read4 ==HIGH){
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,140);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,140);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
// Entrada 1 y 0
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(191,254,196,292);
myGLCD.fillRect(192,289,208,294);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out11, HIGH);
myGLCD.print("1",590,180);
myGLCD.setColor(VGA_LIME);
digitalWrite(out12, LOW);
myGLCD.print("0",640,180);
delay(1000);
read4 = digitalRead(out10);
if(read4 ==HIGH){
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,180);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,180);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
// Entrada 1 y 1
delay(1000);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(191,254,196,292);
myGLCD.fillRect(192,289,208,294);
myGLCD.fillRect(115,254,120,311);
myGLCD.fillRect(117,307,208,312);
myGLCD.setColor(VGA_RED);
digitalWrite(out11, HIGH);
myGLCD.print("1",590,220);
digitalWrite(out12, HIGH);
myGLCD.print("1",640,220);
delay(1000);
read4 = digitalRead(out10);
if(read4 ==HIGH){
myGLCD.setColor(VGA_WHITE);
myGLCD.print("1",710,220);
myGLCD.setColor(VGA_RED);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
else{
NANDstate = NANDstate + 1;
myGLCD.setColor(VGA_WHITE);
myGLCD.print("0",710,220);
myGLCD.setColor(VGA_LIME);
myGLCD.fillRect(247,298,267,303);
myGLCD.fillRect(262,254,267,297);
}
if(NANDstate == 16){
myGLCD.setColor(VGA_LIME);
myGLCD.print("IC -->",577,260);
myGLCD.print(" OK ",688,260);
}
else{
myGLCD.setColor(VGA_RED);
myGLCD.print("IC -->",577,260);
myGLCD.print("Fail",688,260);
}
myGLCD.setBackColor(32,32,228);
Serial.print(NANDstate);
break;
< }
}