Proyecto realizado para controlar el desplazamiento de un cuadro como obra de arte

Dependencies:   DS1307 FPointer TextLCD USBHost keypad mbed

Fork of MSCUsbHost_FULL by Chris Styles

main.cpp

Committer:
sherckuith
Date:
2013-09-17
Revision:
1:4daed536a970
Parent:
0:144fed3d9420

File content as of revision 1:4daed536a970:

#include "mbed.h"
#include "keypad.h"
#include "ds1307.h"
#include "USBHostMSD.h"
#include "TextLCD.h"

DigitalOut FW(p5);
DigitalOut RW(p6);
DigitalOut door_on(p7);
DigitalOut door_off(p8);

DS1307 my1307(p9,p10);

TextLCD lcd(p11, p12, p13, p14, p15, p16, TextLCD::LCD20x4); // rs, e, d4-d7

AnalogIn rigth_sense(p17);
AnalogIn left_sense(p19);
AnalogIn ain(p20);


DigitalOut led5(LED1);
DigitalOut led6(LED2);
DigitalOut led7(LED3);
DigitalOut led8(LED4);

DigitalOut led1(p29);
DigitalOut led2(p30);
DigitalOut led3(USBTX);
DigitalOut led4(USBRX);

//Serial pc(USBTX, USBRX); // tx, rx  for debug and usb pc comunications

Keypad keypad(p25, p26, p27, p28, p21, p22, p23, p24);
/*
Teclado membrana                        Mbed
C3                                      P21
C2                                      P22
C1                                      P23
C0                                      P24
F3                                      P25
F2                                      P26
F1                                      P27
F0                                      P28

keypad.class:   f3, f2 , f1 , f0 , c3 , c2 , c1 , c0
mbed pinout:     p25, p26, p27, p28, p21, p22, p23, p24
                      24   23   22   21
25                    '1', '2', '3', 'A',
26                    '4', '5', '6', 'B',
27                    '7', '8', '9', 'C',
28                    '*', '0', '#', 'D'

Teclado PLASTICO                        Mbed
F3                                      P21
F2                                      P22
F1                                      P23
F0                                      P24
C3                                      P25
C2                                      P26
C1                                      P27
C0                                      P28

keypad.class:   f3, f2 , f1 , f0 , c3 , c2 , c1 , c0
mbed pinout:     p21, p22, p23, p24, p25, p26, p27, p28
                       24   23   22   21
25                    '1', '2', '3', 'A',
26                    '4', '5', '6', 'B',
27                    '7', '8', '9', 'C',
28                    '*', '0', '#', 'D'
*/




//sensores
float   rigth = 0, left = 0;

//archivos USB
char file[80];
int hours = 0, min = 0, sec = 0, year = 0, month = 0, date = 0, day = 0;
int a=0, b=0;

const unsigned short page[229] = {
    0x3C,0x21,0x2D,0x2D,0x20,0x41,0x6C,0x6C,0x20,0x50,0x6F,0x77,0x65,0x72,0x20,0x4D,
    0x69,0x63,0x72,0x6F,0x63,0x6F,0x6E,0x74,0x72,0x6F,0x6C,0x6C,0x65,0x72,0x20,0x57,
    0x65,0x62,0x73,0x69,0x74,0x65,0x20,0x61,0x6E,0x64,0x20,0x41,0x75,0x74,0x68,0x65,
    0x6E,0x74,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x20,0x53,0x68,0x6F,0x72,0x74,0x63,
    0x75,0x74,0x20,0x2D,0x2D,0x3E,0x0D,0x0A,0x3C,0x68,0x74,0x6D,0x6C,0x3E,0x0D,0x0A,
    0x3C,0x68,0x65,0x61,0x64,0x3E,0x0D,0x0A,0x3C,0x6D,0x65,0x74,0x61,0x20,0x68,0x74,
    0x74,0x70,0x2D,0x65,0x71,0x75,0x69,0x76,0x3D,0x22,0x72,0x65,0x66,0x72,0x65,0x73,
    0x68,0x22,0x20,0x63,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x3D,0x22,0x30,0x3B,0x20,0x75,
    0x72,0x6C,0x3D,0x68,0x74,0x74,0x70,0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x61,0x70,
    0x6D,0x6D,0x69,0x63,0x72,0x6F,0x2E,0x63,0x6F,0x6D,0x22,0x2F,0x3E,0x0D,0x0A,0x3C,
    0x74,0x69,0x74,0x6C,0x65,0x3E,0x41,0x50,0x4D,0x20,0x57,0x65,0x62,0x73,0x69,0x74,
    0x65,0x20,0x53,0x68,0x6F,0x72,0x74,0x63,0x75,0x74,0x3C,0x2F,0x74,0x69,0x74,0x6C,
    0x65,0x3E,0x0D,0x0A,0x3C,0x2F,0x68,0x65,0x61,0x64,0x3E,0x0D,0x0A,0x3C,0x62,0x6F,
    0x64,0x79,0x3E,0x3C,0x2F,0x62,0x6F,0x64,0x79,0x3E,0x0D,0x0A,0x3C,0x2F,0x68,0x74,
    0x6D,0x6C,0x3E,0x0D,0x0A

};

const unsigned short data_Os[976] = {
    0x42,0x6F,0x6F,0x74,0x6C,0x6F,0x61,0x64,0x65,0x72,0x2E,0x2E,0x2E,0x20,0x4F,0x4B,
    0x0D,0x0A,0x41,0x52,0x4D,0x20,0x43,0x6F,0x72,0x74,0x65,0x78,0x20,0x4D,0x33,0x20,
    0x43,0x50,0x55,0x2E,0x2E,0x2E,0x20,0x4F,0x4B,0x0D,0x0A,0x47,0x72,0x61,0x70,0x68,
    0x69,0x63,0x20,0x50,0x72,0x6F,0x63,0x65,0x73,0x73,0x69,0x6E,0x67,0x20,0x55,0x6E,
    0x69,0x74,0x2E,0x2E,0x2E,0x20,0x4F,0x4B,0x0D,0x0A,0x4C,0x69,0x62,0x72,0x65,0x72,
    0x69,0x65,0x73,0x20,0x46,0x61,0x74,0x20,0x46,0x2E,0x20,0x53,0x79,0x73,0x74,0x65,
    0x6D,0x2E,0x2E,0x2E,0x20,0x4F,0x4B,0x0D,0x0A,0x50,0x44,0x53,0x2E,0x20,0x53,0x65,
    0x63,0x75,0x72,0x69,0x74,0x79,0x20,0x41,0x72,0x65,0x61,0x2E,0x2E,0x2E,0x20,0x4F,
    0x4B,0x0D,0x0A,0x52,0x53,0x41,0x2E,0x20,0x50,0x72,0x6F,0x74,0x65,0x63,0x74,0x69,
    0x6F,0x6E,0x2E,0x2E,0x2E,0x20,0x4F,0x4B,0x0D,0x0A,0x48,0x6F,0x73,0x74,0x20,0x55,
    0x53,0x42,0x2E,0x2E,0x2E,0x20,0x4F,0x4B,0x0D,0x0A,0x44,0x65,0x76,0x69,0x63,0x65,
    0x20,0x55,0x53,0x42,0x2E,0x2E,0x2E,0x20,0x4F,0x4B,0x0D,0x0A,0x53,0x44,0x20,0x43,
    0x61,0x72,0x64,0x2E,0x2E,0x2E,0x20,0x4F,0x4B,0x0D,0x0A,0x53,0x61,0x76,0x65,0x3A,
    0x20,0x62,0x69,0x6F,0x73,0x2E,0x44,0x41,0x54,0x0D,0x0A,0x0D,0x0A,0x2A,0x2F,0x2F,
    0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
    0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
    0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
    0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
    0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x0D,0x0A,0x41,0x6C,0x6C,0x20,0x50,
    0x6F,0x77,0x65,0x72,0x20,0x4D,0x69,0x63,0x72,0x6F,0x63,0x6F,0x6E,0x74,0x72,0x6F,
    0x6C,0x6C,0x65,0x72,0x2C,0x20,0x4F,0x70,0x65,0x72,0x61,0x74,0x69,0x76,0x65,0x20,
    0x53,0x79,0x73,0x74,0x65,0x6D,0x20,0x42,0x69,0x6F,0x5F,0x4F,0x73,0x0D,0x0A,0x0D,
    0x0A,0x46,0x61,0x74,0x20,0x46,0x69,0x6C,0x65,0x20,0x53,0x79,0x73,0x74,0x65,0x6D,
    0x20,0x4C,0x69,0x62,0x72,0x61,0x72,0x79,0x20,0x42,0x61,0x73,0x65,0x20,0x43,0x6C,
    0x61,0x73,0x73,0x20,0x61,0x6E,0x64,0x20,0x47,0x72,0x61,0x70,0x68,0x69,0x63,0x20,
    0x49,0x6E,0x74,0x65,0x72,0x66,0x61,0x63,0x65,0x20,0x69,0x73,0x20,0x70,0x72,0x6F,
    0x74,0x65,0x63,0x74,0x65,0x64,0x20,0x77,0x68,0x69,0x74,0x68,0x0D,0x0A,0x43,0x6F,
    0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30,0x30,0x31,
    0x31,0x2D,0x32,0x30,0x31,0x32,0x20,0x45,0x63,0x75,0x61,0x64,0x6F,0x72,0x0D,0x0A,
    0x52,0x65,0x6C,0x65,0x61,0x73,0x65,0x64,0x20,0x75,0x6E,0x64,0x65,0x72,0x20,0x4C,
    0x69,0x63,0x65,0x6E,0x73,0x65,0x20,0x6F,0x66,0x20,0x69,0x6E,0x74,0x65,0x6C,0x65,
    0x63,0x74,0x75,0x61,0x6C,0x20,0x70,0x72,0x6F,0x70,0x69,0x65,0x74,0x79,0x20,0x6F,
    0x66,0x20,0x41,0x6E,0x67,0x65,0x6C,0x20,0x44,0x2E,0x20,0x59,0x61,0x67,0x75,0x61,
    0x6E,0x61,0x0D,0x0A,0x0D,0x0A,0x45,0x6C,0x20,0x70,0x72,0x65,0x73,0x65,0x6E,0x74,
    0x65,0x20,0x70,0x72,0x6F,0x79,0x65,0x63,0x74,0x6F,0x20,0x65,0x73,0x20,0x72,0x65,
    0x61,0x6C,0x69,0x7A,0x61,0x64,0x6F,0x20,0x62,0x61,0x6A,0x6F,0x20,0x61,0x63,0x75,
    0x65,0x72,0x64,0x6F,0x20,0x64,0x65,0x20,0x6C,0x69,0x63,0x65,0x6E,0x63,0x69,0x61,
    0x20,0x6F,0x74,0x6F,0x72,0x67,0x61,0x64,0x6F,0x20,0x70,0x6F,0x72,0x20,0x65,0x6C,
    0x20,0x0D,0x0A,0x41,0x75,0x74,0x6F,0x72,0x20,0x63,0x6F,0x6E,0x20,0x74,0x65,0x72,
    0x6D,0x69,0x6E,0x6F,0x73,0x20,0x65,0x73,0x70,0x65,0x63,0x69,0x66,0x69,0x63,0x61,
    0x64,0x6F,0x73,0x20,0x70,0x6F,0x72,0x20,0x6C,0x61,0x20,0x6C,0x69,0x63,0x65,0x6E,
    0x63,0x69,0x61,0x20,0x47,0x4E,0x55,0x20,0x47,0x50,0x4C,0x20,0x6C,0x61,0x20,0x63,
    0x75,0x61,0x6C,0x20,0x6C,0x65,0x20,0x70,0x65,0x72,0x6D,0x69,0x74,0x65,0x20,0x0D,
    0x0A,0x75,0x73,0x61,0x72,0x20,0x6C,0x61,0x73,0x20,0x6C,0x69,0x62,0x72,0x65,0x72,
    0x69,0x61,0x73,0x20,0x70,0x65,0x72,0x6F,0x20,0x70,0x72,0x6F,0x68,0x69,0x62,0x65,
    0x20,0x73,0x75,0x20,0x76,0x65,0x6E,0x74,0x61,0x20,0x6F,0x20,0x63,0x6F,0x6D,0x65,
    0x72,0x63,0x69,0x61,0x6C,0x69,0x7A,0x61,0x63,0x69,0x6F,0x6E,0x20,0x63,0x6F,0x6E,
    0x20,0x66,0x69,0x6E,0x65,0x73,0x20,0x64,0x65,0x20,0x6C,0x75,0x63,0x72,0x6F,0x20,
    0x0D,0x0A,0x73,0x69,0x6E,0x20,0x70,0x72,0x65,0x76,0x69,0x61,0x20,0x72,0x65,0x74,
    0x72,0x69,0x62,0x75,0x63,0x69,0x6F,0x6E,0x20,0x70,0x6F,0x72,0x20,0x64,0x65,0x72,
    0x65,0x63,0x68,0x6F,0x73,0x20,0x64,0x65,0x20,0x70,0x72,0x6F,0x70,0x69,0x65,0x64,
    0x61,0x64,0x20,0x69,0x6E,0x74,0x65,0x6C,0x65,0x63,0x74,0x75,0x61,0x6C,0x20,0x64,
    0x65,0x20,0x42,0x69,0x6F,0x5F,0x4F,0x73,0x0D,0x0A,0x2A,0x2F,0x2F,0x2F,0x2F,0x2F,
    0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
    0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
    0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
    0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
    0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x0D,0x0A,0x0D,0x0A,0x0D,0x0A,0x0D,0x0A,0x2F,0x2F,
    0x42,0x69,0x6F,0x5F,0x4F,0x73,0x20,0x77,0x61,0x73,0x20,0x64,0x65,0x76,0x65,0x6C,
    0x6F,0x70,0x6D,0x65,0x6E,0x74,0x20,0x62,0x79,0x20,0x53,0x68,0x65,0x72,0x63,0x6B,
    0x75,0x69,0x74,0x68,0x20,0x69,0x6E,0x20,0x32,0x30,0x31,0x32,0x2F,0x3C,0x00,0x00
};


//read_RAM var
int get_start_date_ram=0,get_start_month_ram=0,get_start_year_ram=0,get_start_hour_ram=0,get_start_min_ram=0,get_start_sec_ram=0;
int get_end_date_ram=0,get_end_month_ram=0,get_end_year_ram=0,get_end_hour_ram=0,get_end_min_ram=0,get_end_sec_ram=0;
int get_speed_ram= 0, get_sense_ram= 0,get_space_ram= 0;
float   get_space_Z4= 0, speed_ram_powten_3= 0, sense_ram_powten_3= 0;

//Config var
int set_start_hour=0,set_start_min=0,set_start_sec=0,set_start_date=0,set_start_month=0,set_start_year=0;
int set_end_hour=0,set_end_min=0,set_end_sec=0,set_end_date=0,set_end_month=0,set_end_year=0;
int set_speed= 0, set_sense= 0,set_space= 0;

//Upload var
int new_hour=0,new_min=0,new_sec=0,new_date=0,new_mont=0,new_year=0,new_day=0;

//Registre
int Old_Speed_RAM= 0, Old_sense_RAM= 0,Old_Space_RAM= 0;

//Keypad
int t=0,cnt=1,j=0,key=0;
int pass=0,l=0;
char data[6];
int key0=0, key1=0, key2=0, key3=0, key4=0, key5=0;
char Keytable[] = { '1', '2', '3', 'A',
                    '4', '5', '6', 'B',
                    '7', '8', '9', 'C',
                    '*', '0', '#', 'D'
                  };
//EZ4
float adc,cm5=0, prom=0,result=0, Radar=0;
int cnt_Z4=0;
int interval=0;

//funciones
void Set_Time(int set_sec, int set_min, int set_hours, int set_day, int set_date, int set_month, int set_year);
void read_RAM();
float get_Z4();
uint32_t cbAfterInput(uint32_t index);
//extern "C" void mbed_reset();

int i = 0;
int flag_usb_1=0,flag_usb_2=0;
int c=0;

int                 FLAG_DOOR_OFF=0;
int                 FLAG_DOOR_ON=0;
int                 FLAG_NEW_PASS=0;
int                 FLAG_PUT_PASS=0;
int FLAG_NEW_PASS_FULL=0;


int main()
{
    ////pc.baud(115200);

    keypad.CallAfterInput(&cbAfterInput);
    keypad.Start();
    //rigth_sense.mode(PullDown);
    //left_sense.mode(PullDown);

    for(i=0; i<10; i++) {
        wait(0.1);
        lcd.cls();
    }

    c=255;
    lcd.locate(0,0);
    lcd.printf(" %c%c  %c%c%c  %c   %c  ",c,c,c,c,c,c,c);
    lcd.locate(0,1);
    lcd.printf("%c  %c %c  %c %c%c %c%c GYE",c,c,c,c,c,c,c,c);
    lcd.locate(0,2);
    lcd.printf("%c%c%c%c %c%c%c  %c %c %c ECU.",c,c,c,c,c,c,c,c,c,c);
    lcd.locate(0,3);
    lcd.printf("%c  %c %c    %c   %c  ",c,c,c,c,c);
    for(int z=0; z<10; z++) {
        wait(0.05);
        led1=1;
        led5=1;
        led2=0;
        led6=0;
        led3=0;
        led7=0;
        led4=0;
        led8=0;
        wait(0.05);
        led1=0;
        led5=0;
        led2=1;
        led6=1;
        led3=0;
        led7=0;
        led4=0;
        led8=0;
        wait(0.05);
        led1=0;
        led5=0;
        led2=0;
        led6=0;
        led3=1;
        led7=1;
        led4=0;
        led8=0;
        wait(0.05);
        led1=0;
        led5=0;
        led2=0;
        led6=0;
        led3=0;
        led7=0;
        led4=1;
        led8=1;
        wait(0.05);
        led1=0;
        led5=0;
        led2=0;
        led6=0;
        led3=1;
        led7=1;
        led4=0;
        led8=0;
        wait(0.05);
        led1=0;
        led5=0;
        led2=1;
        led6=1;
        led3=0;
        led7=0;
        led4=0;
        led8=0;
        wait(0.05);
        led1=1;
        led5=1;
        led2=0;
        led6=0;
        led3=0;
        led7=0;
        led4=0;
        led8=0;
    }
    led1=led2=led3=led4=0;
    led5=led6=led7=led8=0;
    wait(2);
    lcd.cls();
    lcd.locate(0,0);
    lcd.printf("   Los Rios #2914   ");
    lcd.locate(0,1);
    lcd.printf("     y Letamendi    ");
    lcd.locate(0,2);
    lcd.printf("apm.litoral@gmail.co");
    lcd.locate(0,3);
    lcd.printf("  Cell: 0991439123  ");
    wait(5);

    for(i=0; i<5; i++) {
        wait(0.1);
        lcd.cls();
    }

    //pc.printf("Angel D. Yaguana...\r\n");
    //pc.printf("Proyecto Datafast de la vida...\r\n");
    //pc.printf("Artista: Patricio Barberan\r\n");

    lcd.locate(0,0);
    lcd.printf(" Proyecto \"Datafast\" ");
    lcd.locate(0,1);
    lcd.printf("  Patricio Barberan  ");
    wait(2);
    lcd.locate(0,3);
    lcd.printf("    Iniciando...    ");
    wait(3);

    lcd.cls();
    lcd.locate(0,0);
    lcd.printf("Conecte una memoria ");
    lcd.locate(0,1);
    lcd.printf("USB para ingresar la");
    lcd.locate(0,2);
    lcd.printf("nueva configuracion!");
    wait(5);
    led1=led2=led3=led4=0;
    led5=led6=led7=led8=0;


    USBHostMSD msd("host");

    lcd.cls();
    lcd.locate(0,1);
    lcd.printf("  Buscando");

    for(i=0; i<5; i++) {
        wait(0.5);
        msd.connect();
        lcd.printf(".");
    }

    if(msd.connected()) {
        wait(1);
        lcd.printf("!");
        led1=led2=led3=led4=1;
        led5=led6=led7=led8=1;
        wait(1);
        lcd.cls();
        lcd.locate(0,1);
        lcd.printf("      USB Stick     ");
        lcd.locate(0,2);
        lcd.printf("     encontrado!    ");
        wait(1);
    }
    led1=led2=led3=led4=0;
    led5=led6=led7=led8=0;

    if(!msd.connected()) {
        lcd.printf("?");
        wait(1);
        lcd.cls();
        lcd.locate(0,1);
        lcd.printf("      USB Stick     ");
        lcd.locate(0,2);
        lcd.printf("    No encontrado!  ");
        wait(1);
    }
    led1=led2=led3=led4=0;
    led5=led6=led7=led8=0;

    if(msd.connected()) {
        lcd.cls();
        lcd.locate(0,0);
        lcd.printf("Generando archivo de");
        lcd.locate(0,1);
        lcd.printf("ayuda en menoria USB");
        wait(1);
        FILE *fp1;
        if ((fp1 = fopen( "/host/Manual de ayuda.rtf", "w"))!=NULL) {
            fprintf(fp1,"Archivos de configuracion:");//Start:14-03-2013  08:30:00
            fprintf(fp1,"\r\n\r\nClock.txt\r\n\r\n\r\n");
            fprintf(fp1,"Contenido:\r\n\r\n");
            fprintf(fp1,"Start:14-03-2013  08:30:00\r\n");
            fprintf(fp1,"End:01-12-2013  22:30:00\r\n");
            fprintf(fp1,"Speed:80\r\n");
            fprintf(fp1,"Sense:30\r\n");
            fprintf(fp1,"Space:90\r\n");
            fprintf(fp1,"\r\nExplicacion:\r\n\r\n");
            fprintf(fp1,"Start:(Fecha de inicio)  (hora de inicio diaria)\r\n");
            fprintf(fp1,"End:(Fecha de finalizacion)  (hora de finalizacion diaria)\r\n");
            fprintf(fp1,"Speed:(porcentaje de velocidad de desplazamiento del cuadro)\r\n");
            fprintf(fp1,"Sense:(Intervalo en segundos entre detecciones)\r\n");
            fprintf(fp1,"Space:(Distancia entre 30 y 300 para deteccion)\r\n");
            fprintf(fp1,"\r\n\r\n\r\nTimer.txt\r\n\r\n\r\n");
            fprintf(fp1,"Contenido:\r\n\r\n");
            fprintf(fp1,"7  29-05-2013  17:35:00\r\n");
            fprintf(fp1,"\r\nExplicacion:\r\n\r\n");
            fprintf(fp1,"7:(Dia de la semana)\r\n");
            fprintf(fp1,"29-05-2013:(Fecha actual para cargar)\r\n");
            fprintf(fp1,"17:35:00:(Hora actual para cargar)\r\n");
            fprintf(fp1,"\r\nFirmware propiedad de:\r\n");
            fprintf(fp1,"Angel D. Yaguana H. & Ivan A. Sanchez\r\n");
            fprintf(fp1,"All Power Microcontroller Litoral.\r\n");
            fprintf(fp1,"Los Rios 2912 y Letamendi\r\n");
            fprintf(fp1,"Cell: 0992430921-0991439123-0989200942\r\n");
            fprintf(fp1,"Email: apm.litoral@gmail.com\r\n");
            //pc.printf("\r\nPrint Help OK\r\n");
            fclose(fp1);
            lcd.locate(0,2);
            lcd.printf("       Listo!      ");
            wait(1);
        } else {
            //pc.printf("\r\nPrint Help fail\r\n");
            lcd.locate(0,2);
            lcd.printf("       Error!      ");
            wait(1);
        }

        FILE *binary = fopen("/host/All Power Microcontroller Litoral.html", "w");
        while (a<=229) {
            fprintf(binary,(const char *)&page[a]);
            a++;
        }
        fclose(binary);

        FILE *octal = fopen("/host/Status Bio_Os.rtf", "w");
        while (b<=976) {
            fprintf(octal,(const char *)&data_Os[b]);
            b++;
        }
        fclose(octal);

        FILE *fp2 = fopen( "/host/Clock_ejemplo.txt", "w");
        fprintf(fp1,"Start:14-03-2013  08:30:00\r\n");
        fprintf(fp1,"End:01-12-2013  22:30:00\r\n");
        fprintf(fp1,"Speed:80\r\n");
        fprintf(fp1,"Sense:30\r\n");
        fprintf(fp1,"Space:90\r\n");
        fclose(fp1);

        FILE *fp3 = fopen( "/host/Timer_ejemplo.txt", "w");
        fprintf(fp1,"7  29-05-2013  17:35:00\r\n");
        fclose(fp1);
    }
    led1=led2=led3=led4=0;
    led5=led6=led7=led8=0;



    if(msd.connected()) {
        flag_usb_1=1;
        lcd.cls();
        lcd.locate(0,1);
        lcd.printf(" Actualizando Reloj ");
        my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year);
        wait(1);
        FILE *fp2;
        if ((fp2 = fopen( "/host/Clock.txt", "r"))!=NULL) {
            fscanf(fp2,"%2d %2d-%2d-20%2d %2d:%2d:%2d",&new_day,&new_date,&new_mont,&new_year,&new_hour,&new_min,&new_sec);
            lcd.locate(0,2);
            lcd.printf("       Listo!      ");
            //pc.printf("USB Time: %2d %2d/%2d/20%2d %2d:%2d:%2d\r\n",new_day,new_date,new_mont,new_year,new_hour,new_min,new_sec);
            wait(1);

            Set_Time( new_sec, new_min, new_hour, new_day, new_date, new_mont, new_year);    // Set the time on the DS1307
            //pc.printf("Old Time: %2d %2d/%2d/20%2d %2d:%2d:%2d\r\n",day,date,month,year,hours,min,sec);
            lcd.locate(0,0);
            lcd.printf("Temporizador actual");
            lcd.locate(0,1);
            lcd.printf(" %02d-%02d-%02d  %02d:%02d:%02d ",date,month,year,hours,min,sec);

            my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year);
            //pc.printf("New Time: %2d %2d/%2d/20%2d %2d:%2d:%2d\r\n",day,date,month,year,hours,min,sec);
            lcd.locate(0,2);
            lcd.printf("Temporizador nuevo ");
            lcd.locate(0,3);
            lcd.printf(" %02d-%02d-%02d  %02d:%02d:%02d ",date,month,year,hours,min,sec);
            wait(5);
            //pc.printf("\r\nTime Uploaded succesfully!\r\n");
            fclose(fp2);
            wait(1);
        } else {
            my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year);
            //pc.printf("Time: %2d %2d-%2d-20%2d %2d:%2d:%2d\r\n",day,date,month,year,hours,min,sec);
            lcd.cls();
            lcd.locate(0,2);
            lcd.printf("       Error!      ");
            wait(1);
        }
    }
    led1=led2=led3=led4=0;
    led5=led6=led7=led8=0;


    if(msd.connected()) {
        flag_usb_2=1;
        lcd.cls();
        lcd.locate(0,0);
        lcd.printf("    Configurando    ");
        lcd.locate(0,1);
        lcd.printf("    temporizador    ");

        FILE *fp2;
        if ((fp2 = fopen( "/host/Timer.txt", "r"))!=NULL) {
            fscanf(fp2,"Start:%2d-%2d-20%2d %2d:%2d:%2d End:%2d-%2d-20%2d %2d:%2d:%2d Speed:%d Sense:%d Space:%d",&set_start_date,&set_start_month,&set_start_year,&set_start_hour,&set_start_min,&set_start_sec,&set_end_date,&set_end_month,&set_end_year,&set_end_hour,&set_end_min,&set_end_sec,&set_speed,&set_sense,&set_space);
            lcd.locate(0,1);
            lcd.printf("       Listo!     ");
            //pc.printf( "Start:%2d/%2d/20%2d %2d:%2d:%2d End:%2d/%2d/20%2d %2d:%2d:%2d Speed:%3d Sense:%3d Space:%3d\n",set_start_date,set_start_month,set_start_year,set_start_hour,set_start_min,set_start_sec,set_end_date,set_end_month,set_end_year,set_end_hour,set_end_min,set_end_sec,set_speed,set_sense,set_space);

            my1307.write( 0x08, set_start_date);
            my1307.write( 0x09, set_start_month);
            my1307.write( 0x0A, set_start_year);
            my1307.write( 0x0B, set_start_hour);
            my1307.write( 0x0C, set_start_min);
            my1307.write( 0x0D, set_start_sec);

            my1307.write( 0x0E, set_end_date);
            my1307.write( 0x0F, set_end_month);
            my1307.write( 0x10, set_end_year);
            my1307.write( 0x11, set_end_hour);
            my1307.write( 0x12, set_end_min);
            my1307.write( 0x13, set_end_sec);

            my1307.write( 0x14, set_speed);
            my1307.write( 0x15, set_sense);
            my1307.write( 0x16, set_space);

            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("F.Inicio: %02d-%02d-20%02d",set_start_date,set_start_month,set_start_year);
            lcd.locate(0,1);
            lcd.printf("F.Fin   : %02d-%02d-20%02d",set_end_date,set_end_month,set_end_year);
            lcd.locate(0,2);
            lcd.printf("H.Inicio:   %02d:%02d:%02d",set_start_hour,set_start_min,set_start_sec);
            lcd.locate(0,3);
            lcd.printf("H.Fin   :   %02d:%02d:%02d",set_end_hour,set_end_min,set_end_sec);
            wait(5);

            lcd.cls();
            lcd.locate(0,0);
            lcd.printf("Configuracion nueva");
            lcd.locate(0,1);
            lcd.printf("Velocidad    :  %3d%",set_speed);
            lcd.locate(0,2);
            lcd.printf("Sencibilidad :  %3d%",set_sense);
            lcd.locate(0,3);
            lcd.printf("Distancia max:  %3d",set_space);
            wait(5);
            //pc.printf("\nSet Timer succesfully\n");
            fclose(fp2);
        } else {
            //pc.printf("Set Timer fail\n");
            lcd.cls();
            lcd.locate(0,2);
            lcd.printf("       Error!      ");
            wait(1);
        }
    }
    led1=led2=led3=led4=0;
    led5=led6=led7=led8=0;


    lcd.cls();
    lcd.locate(0,1);
    lcd.printf("Iniciando aplicacion");
    wait(2);

    read_RAM();

    my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year);
    my1307.read( 0x14, &Old_Speed_RAM);
    my1307.read( 0x15, &Old_sense_RAM);
    my1307.read( 0x16, &Old_Space_RAM);
    led1=led2=led3=led4=0;
    led5=led6=led7=led8=0;

    if(msd.connected()) {
        FILE *fp1;
        if ((fp1 = fopen( "/host/Registro.csv", "a"))!=NULL) {
            fprintf(fp1,"%2d    %2d/%2d/20%2d    %2d:%2d:%2d    %3d    %3d    %3d;\n",day,date,month,year,hours,min,sec,Old_Speed_RAM,Old_sense_RAM,Old_Space_RAM);
            //pc.printf( "Dia:%2d  Fecha:%2d/%2d/20%2d  Hora:%2d:%2d:%2d  Speed RAM:%3d  Sense RAM:%3d  Space RAM:%3d;\r\n",day,date,month,year,hours,min,sec,Old_Speed_RAM,Old_sense_RAM,Old_Space_RAM);
            //pc.printf("\r\nRegistro OK\r\n");
            fclose(fp1);
        } else {
            //pc.printf("\r\nRegistre fail\r\n");
            //pc.printf( "Dia:%2d  Fecha:%2d/%2d/20%2d  Hora:%2d:%2d:%2d  Speed RAM:%3d  Sense RAM:%3d  Space RAM:%3d;\r\n",day,date,month,year,hours,min,sec,Old_Speed_RAM,Old_sense_RAM,Old_Space_RAM);
        }
        lcd.cls();
        lcd.locate(0,0);
        lcd.printf("       Nueva        ");
        lcd.locate(0,1);
        lcd.printf("   configuracion    ");
        lcd.locate(0,2);
        lcd.printf("   satisfactoria    ");
        wait(3);
        lcd.cls();
        lcd.locate(0,1);
        lcd.printf("Por favor remueva la");
        lcd.locate(0,2);
        lcd.printf(" memoria USB ahora! ");
        wait(5);
    }
    led1=led2=led3=led4=0;
    led5=led6=led7=led8=0;


    //pc.printf("\r\nRun_app Start\r\n");
    /*
        PwmOut led1(LED1);
        PwmOut led2(LED2);
        PwmOut led3(LED3);
        PwmOut led4(LED4);
    */
    led1=led2=led3=led4=0;
    led5=led6=led7=led8=0;
    wait(0.5);

    FW=0;
    RW=0;
    lcd.cls();
    int lcd_reset=0;

    while(1) {
/*
        if(FLAG_DOOR_OFF==1) {
            FLAG_DOOR_OFF=0;
            lcd.locate(0,1);
            lcd.printf("  Cerrando  puerta  ");
            wait(2);
        }

        if(FLAG_DOOR_ON==1) {
            FLAG_DOOR_ON=0;
            lcd.locate(0,1);
            lcd.printf("  Abriendo  puerta  ");
            wait(2);
        }

        if(FLAG_NEW_PASS==1) {
            FLAG_NEW_PASS=0;
            lcd.locate(0,1);
            lcd.printf("    Nueva clave    ");
            wait(2);
        }

        if(FLAG_PUT_PASS==1) {
            FLAG_PUT_PASS=0;
            lcd.locate(0,1);
            lcd.printf("   Ingrese clave   ");
            wait(2);
        }

        if(FLAG_NEW_PASS_FULL==1) {
            FLAG_NEW_PASS_FULL=0;
            lcd.locate(0,1);
            lcd.printf("    Nueva clave    ");
            lcd.locate(0,2);
            lcd.printf("guardada en memoria!");
            wait(2);
        }
*/
        if(lcd_reset<=65535) {
            if(lcd_reset==65535) {
                lcd_reset=0;
                TextLCD lcd(p11, p12, p13, p14, p15, p16, TextLCD::LCD20x4); // rs, e, d4-d7
                wait(0.10);
                lcd.cls();
                wait(0.10);
            }
        }

        lcd_reset++;

        wait(0.25);
        //pc.printf("\r\nObstaculo 1: %8.6fcm\n",get_Z4());
        my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year);
        //pc.printf("RTC: [%2d:%.2d:%2d   %2d/%2d/20%2d]\n",hours,min,sec,date,month,year);
        Radar=get_Z4();

        lcd.locate(0,3);
        lcd.printf("Deteccion: %3.3fcm  ",Radar);
        lcd.locate(0,0);
        lcd.printf(" %02d-%02d-%02d  %02d-%02d-%02d ",get_start_date_ram, get_start_month_ram, get_start_year_ram, get_end_date_ram,get_end_month_ram,get_end_year_ram);
        lcd.locate(0,1);
        lcd.printf(" %02d:%02d:%02d  %02d:%02d:%02d ",get_start_hour_ram, get_start_min_ram, get_start_sec_ram,get_end_hour_ram,get_end_min_ram,get_end_sec_ram);
        lcd.locate(0,2);
        lcd.printf(" %02d-%02d-%02d  %02d:%02d:%02d ",date,month,year,hours,min,sec);

        int time_sec_onclock = 0, time_sec_start = 0, time_sec_end = 0;

        time_sec_onclock = (hours*60*60)+(min*60)+sec;
        time_sec_start = (get_start_hour_ram*60*60)+(get_start_min_ram*60)+get_start_sec_ram;
        time_sec_end = (get_end_hour_ram*60*60)+(get_end_min_ram*60)+get_end_sec_ram;

        float time_day_onclock = 0,time_day_start = 0,time_day_end = 0;

        time_day_onclock = (month*30.4166)-30.4166+date;
        time_day_start = (get_start_month_ram*30.4166)-30.4166+get_start_date_ram;
        time_day_end = (get_end_month_ram*30.4166)-30.4166+get_end_date_ram;

        if(time_day_onclock<=time_day_end && time_day_onclock>=time_day_start) {
            if(time_sec_onclock<time_sec_end && time_sec_onclock>time_sec_start) {
                //ejecucion de sensor de obstaculos
                if(Radar<=get_space_ram*1.5) {
                    //pc.printf("Obstaculo 2: %8.6fcm\n",Radar);
                    lcd.locate(0,2);
                    lcd.printf("   Detectando...!   ");
                    wait(1-sense_ram_powten_3);
                    Radar=get_Z4();
                    if(Radar<=get_space_ram) {
                        lcd.locate(0,2);
                        lcd.printf(" Desplazando cuadro ");
                        //pc.printf("Obstaculo 3: %8.6fcm\n",Radar);
                        led1=1;
                        led5=1;
                        led2=0;
                        led6=0;
                        led3=0;
                        led7=0;
                        led4=0;
                        led8=0;
                        wait(0.025);
                        led1=0;
                        led5=0;
                        led2=1;
                        led6=1;
                        led3=0;
                        led7=0;
                        led4=0;
                        led8=0;
                        wait(0.025);
                        led1=0;
                        led5=0;
                        led2=0;
                        led6=0;
                        led3=1;
                        led7=1;
                        led4=0;
                        led8=0;
                        wait(0.025);
                        do {
                            FW=1;
                            RW=0;
                            led1=0;
                            led5=0;
                            led2=0;
                            led6=0;
                            led3=0;
                            led7=0;
                            led4=1;
                            led8=1;
                            lcd.locate(0,3);
                            lcd.printf(">>> >>> >>> >>> >>> ");
                            wait(0.025);
                            led1=0;
                            led5=0;
                            led2=0;
                            led6=0;
                            led3=1;
                            led7=1;
                            led4=0;
                            led8=0;
                            lcd.locate(0,3);
                            lcd.printf(" >>> >>> >>> >>> >>>");
                            wait(0.025);
                            led1=0;
                            led5=0;
                            led2=1;
                            led6=1;
                            led3=0;
                            led7=0;
                            led4=0;
                            led8=0;
                            lcd.locate(0,3);
                            lcd.printf("> >>> >>> >>> >>> >>");
                            wait(0.025);
                            led1=1;
                            led5=1;
                            led2=0;
                            led6=0;
                            led3=0;
                            led7=0;
                            led4=0;
                            led8=0;
                            lcd.locate(0,3);
                            lcd.printf(">> >>> >>> >>> >>> >");
                            wait(0.025);
                            rigth=rigth_sense.read();
                        } while(rigth<1);
                        //pc.printf("\r\nRIGHT_______: %8.6f\n",rigth);
                        FW=0;
                        RW=0;
                        wait(0.025);
                        led1=0;
                        led5=0;
                        led2=0;
                        led6=0;
                        led3=1;
                        led7=1;
                        led4=0;
                        led8=0;
                        wait(0.025);
                        led1=0;
                        led5=0;
                        led2=1;
                        led6=1;
                        led3=0;
                        led7=0;
                        led4=0;
                        led8=0;
                        wait(0.025);
                        //wait(3-sense_ram_powten_3);
                        do {
                            FW=0;
                            RW=1;
                            led1=1;
                            led5=1;
                            led2=0;
                            led6=0;
                            led3=0;
                            led7=0;
                            led4=0;
                            led8=0;
                            lcd.locate(0,3);
                            lcd.printf("<<< <<< <<< <<< <<< ");
                            wait(0.025);
                            led1=0;
                            led5=0;
                            led2=0;
                            led6=0;
                            led3=0;
                            led7=0;
                            led4=1;
                            led8=1;
                            lcd.locate(0,3);
                            lcd.printf(" <<< <<< <<< <<< <<<");
                            wait(0.025);
                            led1=0;
                            led5=0;
                            led2=0;
                            led6=0;
                            led3=1;
                            led7=1;
                            led4=0;
                            led8=0;
                            lcd.locate(0,3);
                            lcd.printf("< <<< <<< <<< <<< <<");
                            wait(0.025);
                            led1=0;
                            led5=0;
                            led2=1;
                            led6=1;
                            led3=0;
                            led7=0;
                            led4=0;
                            led8=0;
                            lcd.locate(0,3);
                            lcd.printf("<< <<< <<< <<< <<< <");
                            wait(0.025);
                            left=left_sense.read();
                        } while(left<1);
                        //pc.printf("\r\nLEFT_______: %8.6f\n",left);
                        FW=0;
                        RW=0;
                        //wait(1-sense_ram_powten_3);
                        led1=led2=led3=led4=0;
                        led5=led6=led7=led8=0;
                    }
                }
            }
        }
    }

}

float get_Z4()
{
    prom=0;
    cnt_Z4=0;
    result=0;
    for(interval=0; interval<5; interval++) {
        wait(1/20);
        adc = ain.read();           // read analog as a float
        if(adc >= 0 && adc <= 0.508) {
            cm5  = ((adc * 5)*2.54)*100;
            prom=prom+(cm5-10);
            cnt_Z4++;
        }
    }
    result=prom/cnt_Z4;
    //pc.printf("#:%2d  P:%5.3f  D:%3.3f cm\n", cnt_Z4, prom, result);
    //led1=led2=led3=led4=1;led5=led6=led7=led8=1;
    //wait(1/20);
    return result;
}


void read_RAM()
{
    lcd.cls();
    lcd.locate(0,1);
    lcd.printf("Leyendo datos desde");
    lcd.locate(0,2);
    lcd.printf("la memoria...");
    wait(1);

    //pc.printf("\r\nVariables leidas:\r\n");

    my1307.read( 0x08, &get_start_date_ram);
    my1307.read( 0x09, &get_start_month_ram);
    my1307.read( 0x0A, &get_start_year_ram);
    my1307.read( 0x0B, &get_start_hour_ram);
    my1307.read( 0x0C, &get_start_min_ram);
    my1307.read( 0x0D, &get_start_sec_ram);

    my1307.read( 0x0E, &get_end_date_ram);
    my1307.read( 0x0F, &get_end_month_ram);
    my1307.read( 0x10, &get_end_year_ram);
    my1307.read( 0x11, &get_end_hour_ram);
    my1307.read( 0x12, &get_end_min_ram);
    my1307.read( 0x13, &get_end_sec_ram);

    my1307.read( 0x14, &get_speed_ram);
    my1307.read( 0x15, &get_sense_ram);
    my1307.read( 0x16, &get_space_ram);

    //pc.printf( "Start:%2d/%2d/20%2d %2d:%2d:%2d \r\nEnd:%2d/%2d/20%2d %2d:%2d:%2d \r\nSpeed:%3d \r\nSense:%3d \r\nSpace:%3d\r\n",get_start_date_ram,get_start_month_ram,get_start_year_ram,get_start_hour_ram,get_start_min_ram,get_start_sec_ram,get_end_date_ram,get_end_month_ram,get_end_year_ram,get_end_hour_ram,get_end_min_ram,get_end_sec_ram,get_speed_ram,get_sense_ram,get_space_ram);
    if(flag_usb_1 == 0 && flag_usb_2 ==0) {
        lcd.cls();
        lcd.locate(0,0);
        lcd.printf("F.Inicio: %02d-%02d-20%02d",get_start_date_ram,get_start_month_ram,get_start_year_ram);
        lcd.locate(0,1);
        lcd.printf("F.Fin   : %02d-%02d-20%02d",get_end_date_ram,get_end_month_ram,get_end_year_ram);
        lcd.locate(0,2);
        lcd.printf("H.Inicio:   %02d:%02d:%02d",get_start_hour_ram,get_start_min_ram,get_start_sec_ram);
        lcd.locate(0,3);
        lcd.printf("H.Fin   :   %02d:%02d:%02d",get_end_hour_ram,get_end_min_ram,get_end_sec_ram);
        wait(5);

        lcd.cls();
        lcd.locate(0,0);
        lcd.printf("Configuracion actual");
        lcd.locate(0,1);
        lcd.printf("Velocidad    :  %3d%",get_speed_ram);
        lcd.locate(0,2);
        lcd.printf("Sencibilidad :  %3d%",get_sense_ram);
        lcd.locate(0,3);
        lcd.printf("Distancia max:  %3d",get_space_ram);
        wait(5);
    }
    if (get_speed_ram<100) {
        speed_ram_powten_3 = get_speed_ram%100;
        speed_ram_powten_3 = speed_ram_powten_3/100;
    } else
        speed_ram_powten_3 = get_speed_ram/get_speed_ram;

    if (get_sense_ram<100) {
        sense_ram_powten_3 = get_sense_ram%100;
        sense_ram_powten_3 = sense_ram_powten_3/100;
    } else
        sense_ram_powten_3 = get_sense_ram/get_sense_ram;

    //pc.printf("\r\nSpeed result: %f\r\n",speed_ram_powten_3);
    //pc.printf("Sense result: %f\r\n",sense_ram_powten_3);
    //pc.printf("Space result: %d\r\n",get_space_ram);
    //pc.printf("/******************************************************************************************************************/\r\n");
}


void Set_Time(int set_sec, int set_min, int set_hours, int set_day, int set_date, int set_month, int set_year)
{
    my1307.twentyfour_hour();
    my1307.settime( set_sec, set_min, set_hours, set_day, set_date, set_month, set_year);    // Set the time on the DS1307
    my1307.write(0x07,0x10);
}



uint32_t cbAfterInput(uint32_t index)
{
    //lcd.printf("TEST\n");
    ////pc.printf("Indice: %d\n", index);
    ////pc.printf("Tecla:  %c\n", Keytable[index]);
    //led3!=led3;

    if (index == 12 || cnt>=5) {
        ////pc.printf("cnt:%i\n",cnt);
        if(cnt==5) {
            FLAG_NEW_PASS=1;
        }
        led1=1;
        led5=1; //Show that we are alive
        wait(0.5);
        led1=0;
        led5=0;
        cnt++;
        if (cnt>=7 && j<=6) {
            ////pc.printf("Index2:%d ===> Key2:%c\n", index, Keytable[index]);
            j++;
            my1307.write( 24+j, index);
            led2=1;
            led6=1; //Show that we are alive
            wait(0.2);
            led2=0;
            led6=0;

            my1307.read( 24+j, &key);
            ////pc.printf("J:%d, Key EEprom:%d, cnt:%i\n",j, key,cnt);

            if(j==6) {
                FLAG_NEW_PASS_FULL=1;
                ////pc.printf("New Pass was completed\n");
                j=0;
                cnt=1;
                led1=led2=led3=led4=1;
                led5=led6=led7=led8=1;
                wait(3);
                led1=led2=led3=led4=0;
                led5=led6=led7=led8=0;

            }
        }
    } else if (index == 14 || pass>0) {
        FLAG_PUT_PASS=1;
        ////pc.printf("index:%i, pass:%i\n", index,pass);
        led1=1;
        led5=1; //Show that we are alive
        wait(0.5);
        led1=0;
        led5=0;
        pass++;
        if (pass>1 && l<=6) {
            data[pass-2]= index;
            ////pc.printf("J:%d, data[%d] = %d;\n", l, pass-2, index);
            led2=1;
            led6=1; //Show that we are alive
            wait(0.2);
            led2=0;
            led6=0;

            l++;
            if(l==6) {
                ////pc.printf("Pass was completed\n");
                l=0;
                pass=0;
                //comprobar clave
                my1307.read( 25, &key0);
                my1307.read( 26, &key1);
                my1307.read( 27, &key2);
                my1307.read( 28, &key3);
                my1307.read( 29, &key4);
                my1307.read( 30, &key5);

                if(data[0]==key0 && data[1]==key1 && data[2]==key2 && data[3]==key3 && data[4]==key4 && data[5]==key5) {
                    led1=led3=1;
                    led5=led7=1;
                    door_off = 1;
                    wait(1.200);
                    door_off = 0;
                    FLAG_DOOR_OFF=1;
                    ////pc.printf("Door OPEN\n");
                    wait(2);
                    led1=led3=0;
                    led5=led7=0;
                } else {
                    led2=led4=1;
                    led6=led8=1;
                    door_on = 1;
                    wait(1.200);
                    door_on = 0;
                    FLAG_DOOR_ON=1;
                    ////pc.printf("Door Closed\n");
                    wait(2);
                    led2=led4=0;
                    led6=led8=0;
                }
            }
        }
    }

    return 0;
}