robo_bluetooth
Dependencies: MMA8451Q_ext TextLCD mbed
main.cpp
- Committer:
- marcosvtt
- Date:
- 2017-06-16
- Revision:
- 0:29436844c427
File content as of revision 0:29436844c427:
/* MAPA DE CANAIS Bluetooth_TX E1 Bluetooth_RX E0 Motor_Amarelo B0 Motor_Laranja B1 Motor_Verde B2 Motor_Azul B3 Servo_R D4 Servo_L A12 */ // D4 = D1 // D5 = D3 // D6 = D2 // D7 = D0 // RS = D5 // E = A13 #include "mbed.h" #include "MMA8451Q.h" #include "TextLCD.h" #define MMA8451_I2C_ADDRESS (0x1d<<1) #define SERVO_L_MAX 800 #define SERVO_L_MIN 0 #define SERVO_R_MAX 800 #define SERVO_R_MIN 0 #define MIN_PULSO_SERVO_US 700 Serial bluetooth(PTE0, PTE1); Serial pc(USBTX, USBRX); TextLCD LCD(PTD5, PTA13,PTD1, PTD3, PTD2, PTD0); MMA8451Q acelerometro(PTE25, PTE24, MMA8451_I2C_ADDRESS); PwmOut motor_L2(PTD4); PwmOut motor_L1(PTA12); PwmOut motor_R1(PTA4); PwmOut motor_R2(PTA5); PwmOut Servo_L(PTD5); PwmOut Servo_R(PTA13); DigitalOut Led_Vermelho(LED_RED); DigitalOut Led_Verde(LED_GREEN); DigitalOut Led_Azul(LED_BLUE); long count = 0; float velocidade = 1; float d_x; float d_y; float d_z; float old_x = 0; float old_y = 0; float old_z = 0; void nome_integrantes(){ LCD.printf("nome do robo"); wait(1); LCD.cls(); LCD.printf("Adriana Peter"); wait(1); LCD.cls(); LCD.printf("Julia Dias"); wait(1); LCD.cls(); LCD.printf("Marcos Torres"); wait(1); LCD.cls(); LCD.printf("Thiago Vinicius"); wait(1); LCD.cls(); } void abre_arma(){ Servo_L.pulsewidth_us(MIN_PULSO_SERVO_US + SERVO_L_MAX); Servo_R.pulsewidth_us(MIN_PULSO_SERVO_US + SERVO_R_MIN); } void fecha_arma(){ Servo_L.pulsewidth_us(MIN_PULSO_SERVO_US + SERVO_L_MIN); Servo_R.pulsewidth_us(MIN_PULSO_SERVO_US + SERVO_R_MAX); } char b(){ char cmd; bluetooth.scanf("%c", &cmd); return cmd; } void movimentos(){ char comando; comando = b(); switch (comando){ case 'F': //frente motor_L1 = 0; motor_L2 = velocidade; motor_R1 = 0; motor_R2 = velocidade; break; case 'B': //ré motor_L2 = 0; motor_L1 = velocidade; motor_R2 = 0; motor_R1 = velocidade; break; case 'R': motor_L2 = 0; motor_L1 = velocidade; motor_R1 = 0; motor_R2 = velocidade; break; case 'L': motor_L1 = 0; motor_L2 = velocidade; motor_R2 = 0; motor_R1 = velocidade; break; case 'I': //frente esquerda motor_L1 = 0; motor_L2 = 0; motor_R1 = 0; motor_R2 = velocidade; break; case 'G': //frente direita motor_L1 = 0; motor_L2 = velocidade; motor_R1 = 0; motor_R2 = 0; break; case 'J': //re esquerda motor_L1 = 0; motor_L2 = 0; motor_R2 = 0; motor_R1 = velocidade; break; case 'H': // re direita motor_L2 = 0; motor_L1 = velocidade; motor_R1 = 0; motor_R2 = 0; break; case 'S': // parado motor_L1 = 0; motor_L2 = 0; motor_R1 = 0; motor_R2 = 0; break; case 'w': fecha_arma(); break; case 'W': abre_arma(); break; default: if(comando == '0') velocidade = 0; else if (comando == '1') velocidade = 0.1; else if (comando == '2') velocidade = 0.2; else if (comando == '3') velocidade = 0.3; else if (comando == '4') velocidade = 0.4; else if (comando == '5') velocidade = 0.5; else if (comando == '6') velocidade = 0.6; else if (comando == '7') velocidade = 0.7; else if (comando == '8') velocidade = 0.8; else if (comando == '9') velocidade = 0.9; else if (comando == 'q') velocidade = 1; } pc.printf("%c || %i\n", comando, count++); } void seta(){ d_x = abs(acelerometro.getAccX() - old_x); d_y = abs(acelerometro.getAccY() - old_y); d_z = abs(acelerometro.getAccZ() - old_z); bluetooth.printf("%f | %f | %f\n", d_x, d_y, d_z); } int main() { Servo_L.period_ms(20); Servo_R.period_ms(20); abre_arma(); Led_Vermelho = 1; Led_Verde = 1; Led_Azul = 1; while(1) { movimentos(); seta(); } }