Sz_Insper / Mbed 2 deprecated Line_follow

Dependencies:   mbed

Committer:
Marcelocostanzo
Date:
Mon Oct 08 13:26:21 2018 +0000
Revision:
1:fe4f6f2d9ca6
Parent:
0:0d443d0229c9
Child:
2:482c3ed45884
Child:
4:d95040ff04e6
V3, homolagada

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Marcelocostanzo 1:fe4f6f2d9ca6 1 /*
Marcelocostanzo 1:fe4f6f2d9ca6 2 Autor Marcelo Costanzo Miranda
Marcelocostanzo 1:fe4f6f2d9ca6 3 Data 08 de Outubro de 2018
Marcelocostanzo 1:fe4f6f2d9ca6 4
Marcelocostanzo 1:fe4f6f2d9ca6 5 Codigo base para robo seguir de linha, funcionando
Marcelocostanzo 1:fe4f6f2d9ca6 6
Marcelocostanzo 1:fe4f6f2d9ca6 7 Insper, Laboratório de Sistema Mecatrôncios
Marcelocostanzo 1:fe4f6f2d9ca6 8 */
Marcelocostanzo 1:fe4f6f2d9ca6 9
Marcelocostanzo 0:0d443d0229c9 10 #include "mbed.h"
Marcelocostanzo 0:0d443d0229c9 11 #define corte 2800
Marcelocostanzo 0:0d443d0229c9 12
Marcelocostanzo 0:0d443d0229c9 13 AnalogIn S0(A3);
Marcelocostanzo 0:0d443d0229c9 14 AnalogIn S1(A5);
Marcelocostanzo 0:0d443d0229c9 15 DigitalIn BT(BUTTON1);
Marcelocostanzo 0:0d443d0229c9 16 DigitalOut led(LED1);
Marcelocostanzo 0:0d443d0229c9 17 DigitalOut IN1B(PA_0);
Marcelocostanzo 0:0d443d0229c9 18 DigitalOut IN2B(PA_1);
Marcelocostanzo 0:0d443d0229c9 19 DigitalOut IN1A(PB_4);
Marcelocostanzo 0:0d443d0229c9 20 DigitalOut IN2A(PB_5);
Marcelocostanzo 0:0d443d0229c9 21 DigitalOut ENA(PA_10);
Marcelocostanzo 0:0d443d0229c9 22 DigitalOut ENB(PC_1);
Marcelocostanzo 0:0d443d0229c9 23 Serial pc(USBTX, USBRX); // tx, rx
Marcelocostanzo 0:0d443d0229c9 24
Marcelocostanzo 0:0d443d0229c9 25
Marcelocostanzo 0:0d443d0229c9 26 int main()
Marcelocostanzo 0:0d443d0229c9 27 {
Marcelocostanzo 0:0d443d0229c9 28 float S0_val = 0;
Marcelocostanzo 0:0d443d0229c9 29 float S1_val = 0;
Marcelocostanzo 0:0d443d0229c9 30 bool flag = 0;
Marcelocostanzo 0:0d443d0229c9 31
Marcelocostanzo 0:0d443d0229c9 32 ENA = 1;
Marcelocostanzo 0:0d443d0229c9 33 ENB = 1;
Marcelocostanzo 0:0d443d0229c9 34
Marcelocostanzo 0:0d443d0229c9 35 while(1)
Marcelocostanzo 0:0d443d0229c9 36 {
Marcelocostanzo 0:0d443d0229c9 37
Marcelocostanzo 0:0d443d0229c9 38
Marcelocostanzo 0:0d443d0229c9 39 S0_val = S0.read();
Marcelocostanzo 0:0d443d0229c9 40 S1_val = S1.read();
Marcelocostanzo 0:0d443d0229c9 41
Marcelocostanzo 0:0d443d0229c9 42 S0_val = S0_val * 3300; // Converts value in the 0V-3.3V range
Marcelocostanzo 0:0d443d0229c9 43 S1_val = S1_val * 3300; // Converts value in the 0V-3.3V range
Marcelocostanzo 0:0d443d0229c9 44
Marcelocostanzo 0:0d443d0229c9 45 // Display values
Marcelocostanzo 1:fe4f6f2d9ca6 46 //printf("measure S0 = %.0f mV\n", S0_val);
Marcelocostanzo 1:fe4f6f2d9ca6 47 //printf("measure S1 = %.0f mV\n", S1_val);
Marcelocostanzo 0:0d443d0229c9 48
Marcelocostanzo 0:0d443d0229c9 49 if(BT == 0)
Marcelocostanzo 0:0d443d0229c9 50 {
Marcelocostanzo 0:0d443d0229c9 51 wait(0.1);
Marcelocostanzo 0:0d443d0229c9 52 if(BT == 0 && flag == 0)
Marcelocostanzo 0:0d443d0229c9 53 {
Marcelocostanzo 0:0d443d0229c9 54 flag = 1;
Marcelocostanzo 0:0d443d0229c9 55 led = 1;
Marcelocostanzo 0:0d443d0229c9 56 wait(0.5);
Marcelocostanzo 0:0d443d0229c9 57 }
Marcelocostanzo 0:0d443d0229c9 58 }
Marcelocostanzo 0:0d443d0229c9 59
Marcelocostanzo 0:0d443d0229c9 60 if(flag == 0)
Marcelocostanzo 0:0d443d0229c9 61 led = 0;
Marcelocostanzo 0:0d443d0229c9 62
Marcelocostanzo 0:0d443d0229c9 63 if(flag == 1)
Marcelocostanzo 0:0d443d0229c9 64 {
Marcelocostanzo 1:fe4f6f2d9ca6 65 //printf("ACIONADO\n");
Marcelocostanzo 0:0d443d0229c9 66 if((S0_val > corte) && (S1_val > corte))
Marcelocostanzo 0:0d443d0229c9 67 {
Marcelocostanzo 0:0d443d0229c9 68 IN2A = 0;
Marcelocostanzo 0:0d443d0229c9 69 IN2B = 0;
Marcelocostanzo 0:0d443d0229c9 70 IN1A = 0;
Marcelocostanzo 0:0d443d0229c9 71 IN1B = 0;
Marcelocostanzo 0:0d443d0229c9 72 }
Marcelocostanzo 0:0d443d0229c9 73
Marcelocostanzo 0:0d443d0229c9 74 if((S0_val < corte) && (S1_val < corte))
Marcelocostanzo 0:0d443d0229c9 75 {
Marcelocostanzo 0:0d443d0229c9 76 IN2A = 1;
Marcelocostanzo 0:0d443d0229c9 77 IN2B = 0;
Marcelocostanzo 0:0d443d0229c9 78 IN1A = 0;
Marcelocostanzo 0:0d443d0229c9 79 IN1B = 1;
Marcelocostanzo 0:0d443d0229c9 80 }
Marcelocostanzo 0:0d443d0229c9 81
Marcelocostanzo 0:0d443d0229c9 82 if((S0_val < corte) && (S1_val > corte))
Marcelocostanzo 0:0d443d0229c9 83 {
Marcelocostanzo 0:0d443d0229c9 84 IN2A = 0;
Marcelocostanzo 0:0d443d0229c9 85 IN2B = 0;
Marcelocostanzo 0:0d443d0229c9 86 IN1A = 0;
Marcelocostanzo 0:0d443d0229c9 87 IN1B = 1;
Marcelocostanzo 0:0d443d0229c9 88 }
Marcelocostanzo 0:0d443d0229c9 89
Marcelocostanzo 0:0d443d0229c9 90 if((S0_val > corte) && (S1_val < corte))
Marcelocostanzo 0:0d443d0229c9 91 {
Marcelocostanzo 0:0d443d0229c9 92 IN2A = 1;
Marcelocostanzo 0:0d443d0229c9 93 IN2B = 0;
Marcelocostanzo 0:0d443d0229c9 94 IN1A = 0;
Marcelocostanzo 0:0d443d0229c9 95 IN1B = 0;
Marcelocostanzo 0:0d443d0229c9 96 }
Marcelocostanzo 0:0d443d0229c9 97 }
Marcelocostanzo 0:0d443d0229c9 98
Marcelocostanzo 0:0d443d0229c9 99 if(BT == 0)
Marcelocostanzo 0:0d443d0229c9 100 {
Marcelocostanzo 0:0d443d0229c9 101 wait(0.1);
Marcelocostanzo 0:0d443d0229c9 102 if(BT == 0 && flag == 1)
Marcelocostanzo 0:0d443d0229c9 103 {
Marcelocostanzo 0:0d443d0229c9 104 flag = 0;
Marcelocostanzo 0:0d443d0229c9 105 printf("DESACIONADO\n");
Marcelocostanzo 0:0d443d0229c9 106 ENA = 0;
Marcelocostanzo 0:0d443d0229c9 107 ENB = 0;
Marcelocostanzo 0:0d443d0229c9 108 wait(0.5);
Marcelocostanzo 0:0d443d0229c9 109 }
Marcelocostanzo 0:0d443d0229c9 110 }
Marcelocostanzo 0:0d443d0229c9 111
Marcelocostanzo 0:0d443d0229c9 112 //wait(0.2); // 1 second
Marcelocostanzo 0:0d443d0229c9 113 }
Marcelocostanzo 0:0d443d0229c9 114 }