Program version 1
Dependencies: FatFileSystemSD MSCFileSystem TextLCD mbed-rtos mbed
Fork of USBFlashDiskTest by
Diff: main.cpp
- Revision:
- 2:f1f6b33cd7bd
- Parent:
- 0:22a5db2c7926
- Child:
- 3:10da2a723362
diff -r 1f7a5d9bf5f7 -r f1f6b33cd7bd main.cpp --- a/main.cpp Mon Jul 23 09:59:38 2012 +0000 +++ b/main.cpp Sun Sep 16 15:13:32 2012 +0000 @@ -1,39 +1,151 @@ #include "mbed.h" +#include "RoboClaw.h" +#include "TextLCD.h" #include "MSCFileSystem.h" +#include "cmsis_os.h" -MSCFileSystem sd("sd"); +#define tempo_period 50 //Periodo do PWM +#define diametro_direita 42.74 //mm +#define diametro_esquerda 42.67 //mm +#define pi 3.1415926535897 +#define velocidade_max 220.00 //cm/seg +#define tam_vetor 64 + +TextLCD lcd(p5, p6, p7, p8, p29, p30, TextLCD::LCD20x4); // rs, e, d4-d7 +RoboClaw Placa(void); +MSCFileSystem sd("sd"); +//Serial Robo(p28, p27); // tx, rx + +AnalogIn sensor1(p15); +AnalogIn sensor2(p16); +AnalogIn sensor3(p17); +AnalogIn sensor4(p19); + DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DigitalOut led4(LED4); -int main() { - - printf("This is version 1.0 of the USB host test\n"); - - FILE *fp = fopen("/sd/test.txt","w"); - printf("Create filehandle\n"); - - led1= 1; - if (fp == NULL) { //make sure it's been opened - printf("its bad :-(\n"); - led2 = 1; - exit(1); - } - printf("its good :-)\n"); +//Declaracao de variaveis universal RoboClaw: +char endereco = 128; +char comando = 0; +char valor = 0; +char check8 = 0; +char buffer = 0; +unsigned int aceleracao = 0; +int velocidade = 0; +int velocidade_e = 0; +int velocidade_d = 0; +unsigned int cmd_distancia = 0; +unsigned int cmd_distancia_e = 0; +unsigned int cmd_distancia_d = 0; +unsigned int distancia_e = 0; +unsigned int distancia_d = 0; +unsigned int Kp = 65536; +unsigned int Ki = 32768; +unsigned int Kd = 16384; +unsigned int QPPS = 800; - led3 = 1; - fprintf(fp,"Hello world!\n"); - printf("Write to the file\n"); +//Funcoes Universais +double distancia(int y); + - fclose(fp); - printf("Close the handle\n"); +/* +//Rotina Interrupcao Thread -> Controle de Velocidade +void thread_interrompe(void const *argument) +{ + while (true) + { + + + osDelay(0.001); + } +} +osThreadDef(thread_interrompe, osPriorityNormal, DEFAULT_STACK_SIZE); + +//Rotina Interrupcao Thread -> Atualiza vetor de tempo +void vetor_atualiza(void const *argument) +{ + while (true) + { + + osDelay(1); + } +} +osThreadDef(vetor_atualiza, osPriorityNormal, DEFAULT_STACK_SIZE); + */ + +////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////// +int main() +{ + //char resp = 0, string[40], imprimir = 0; + //int i = 0; + //unsigned int aux = 0, dist = 0; + //float valor1 = 0, valor2 = 0, valor3 = 0, valor4 = 0; + + //DIR *d; + //struct dirent *p; + + //Robo.baud(38400); + //Robo.attach(&callback); + + // Comeca Thread + //osThreadCreate(osThread(thread_interrompe), NULL); + //osThreadCreate(osThread(vetor_atualiza), NULL); + + - led4 = 1; - printf("\n"); + endereco = 128; + aceleracao = 0; + velocidade_e = 150; + velocidade_d = 150; + cmd_distancia_e = 140; + cmd_distancia_d = 140; + buffer = 0; + + Placa.comando46 (endereco, aceleracao, velocidade_d, cmd_distancia_d, velocidade_d, cmd_distancia_e, buffer); } + + + +// Funcoes auxiliares: +double distancia(int y) +{ + double resultado = 0, x = 0; + + if(y == 1) + x = 3.3*sensor1; + else + if(y == 2) + x = 3.3*sensor2; + else + if(y == 3) + x = 3.3*sensor3; + else + if(y == 4) + x = 3.3*sensor4; + else + x = 0; + + // Grafico 2: y = 2,266x6 - 25,396x5 + 114,73x4 - 268,77x3 + 349,89x2 - 251,81x + 92,04 + + resultado = 2.266*x*x*x*x*x*x; + resultado = resultado - 25.396*x*x*x*x*x; + resultado = resultado + 114.73*x*x*x*x; + resultado = resultado - 268.77*x*x*x; + resultado = resultado + 349.89*x*x; + resultado = resultado - 251.81*x; + resultado = resultado + 92.04; + + + if( (resultado >= 40) || (resultado < 0)) + resultado = -1; + + return (resultado); +}