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
Diff: main.cpp
- Revision:
- 1:4daed536a970
- Parent:
- 0:144fed3d9420
diff -r 144fed3d9420 -r 4daed536a970 main.cpp --- a/main.cpp Sat Mar 13 17:19:08 2010 +0000 +++ b/main.cpp Tue Sep 17 01:37:10 2013 +0000 @@ -1,17 +1,1101 @@ #include "mbed.h" -#include "MSCFileSystem.h" -#include "LIS302.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(); + } -MSCFileSystem fs("fs"); // Mount flash drive under the name "msc" + 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; -LIS302 acc(p11, p12, p13, p10); // mosi, miso, clk, ncs + 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); -int main() { + 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; - FILE *fp = fopen("/fs/acc_data.csv","w"); - for (int i = 0; i < 100; i++) { - fprintf(fp,"%.2f, %.2f, %.2f\n", acc.x(),acc.y(),acc.z()); - wait(0.1); - } - fclose(fp); -} \ No newline at end of file + 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; +}