hh

Dependencies:   VL6180x X_NUCLEO_COMMON X_NUCLEO_IHM01A1 mbed

Fork of 1-DoorCloser_jor by Jordan Ml

Committer:
mohabendaoud
Date:
Sat Apr 02 09:25:30 2016 +0000
Revision:
1:e18e367432bd
Parent:
0:1cb50d31c3b5
Child:
2:f6f12530dbd9
Add code for turning the robot in straight angle

Who changed what in which revision?

UserRevisionLine numberNew contents of line
julientiron 0:1cb50d31c3b5 1 /**
julientiron 0:1cb50d31c3b5 2 ******************************************************************************
julientiron 0:1cb50d31c3b5 3 * @file main.cpp
julientiron 0:1cb50d31c3b5 4 * @author Julien Tiron, FIP Télécom Bretagne
julientiron 0:1cb50d31c3b5 5 * @version V1.0.0
julientiron 0:1cb50d31c3b5 6 * @date March 23th, 2016
julientiron 0:1cb50d31c3b5 7 * @brief DoorCloser robot main code
julientiron 0:1cb50d31c3b5 8 ******************************************************************************
julientiron 0:1cb50d31c3b5 9 **/
julientiron 0:1cb50d31c3b5 10
julientiron 0:1cb50d31c3b5 11 /* Includes ------------------------------------------------------------------*/
julientiron 0:1cb50d31c3b5 12
julientiron 0:1cb50d31c3b5 13 #include "mbed.h"
julientiron 0:1cb50d31c3b5 14 #include "DevSPI.h"
julientiron 0:1cb50d31c3b5 15 #include "l6474_class.h"
julientiron 0:1cb50d31c3b5 16 #include "DevI2C.h"
julientiron 0:1cb50d31c3b5 17 #include "vl6180x_class.h"
julientiron 0:1cb50d31c3b5 18
julientiron 0:1cb50d31c3b5 19 /* Definitions ---------------------------------------------------------------*/
julientiron 0:1cb50d31c3b5 20
julientiron 0:1cb50d31c3b5 21 #define VL6180X_ADDRESS 0x29
julientiron 0:1cb50d31c3b5 22
julientiron 0:1cb50d31c3b5 23 /* Variables -----------------------------------------------------------------*/
julientiron 0:1cb50d31c3b5 24
julientiron 0:1cb50d31c3b5 25 /* Start and Stop Component */
julientiron 0:1cb50d31c3b5 26 InterruptIn startup(PC_1);
julientiron 0:1cb50d31c3b5 27 Ticker game_length;
julientiron 0:1cb50d31c3b5 28 volatile bool start = 1;
julientiron 0:1cb50d31c3b5 29 volatile bool end = 1;
julientiron 0:1cb50d31c3b5 30
julientiron 0:1cb50d31c3b5 31 /* Motor Control Component */
julientiron 0:1cb50d31c3b5 32 L6474 *motor1;
julientiron 0:1cb50d31c3b5 33 L6474 *motor2;
julientiron 0:1cb50d31c3b5 34
julientiron 0:1cb50d31c3b5 35 /* Distance Sensors Component */
julientiron 0:1cb50d31c3b5 36 DevI2C *i2c =new DevI2C(D14, D15);
mohabendaoud 1:e18e367432bd 37 /*VL6180X sensor1(i2c);
julientiron 0:1cb50d31c3b5 38 VL6180X sensor2(i2c);
mohabendaoud 1:e18e367432bd 39 VL6180X sensor3(i2c);*/
julientiron 0:1cb50d31c3b5 40
julientiron 0:1cb50d31c3b5 41 /* Functions -----------------------------------------------------------------*/
julientiron 0:1cb50d31c3b5 42
julientiron 0:1cb50d31c3b5 43 void go()
julientiron 0:1cb50d31c3b5 44 {
julientiron 0:1cb50d31c3b5 45 start = 0;
julientiron 0:1cb50d31c3b5 46 }
julientiron 0:1cb50d31c3b5 47
julientiron 0:1cb50d31c3b5 48 void stop()
julientiron 0:1cb50d31c3b5 49 {
julientiron 0:1cb50d31c3b5 50 end = 0;
julientiron 0:1cb50d31c3b5 51 }
julientiron 0:1cb50d31c3b5 52
julientiron 0:1cb50d31c3b5 53 void init_sensor(){
julientiron 0:1cb50d31c3b5 54
julientiron 0:1cb50d31c3b5 55 }
julientiron 0:1cb50d31c3b5 56
julientiron 0:1cb50d31c3b5 57 void switch_sensor(int number){
julientiron 0:1cb50d31c3b5 58
julientiron 0:1cb50d31c3b5 59 }
julientiron 0:1cb50d31c3b5 60
mohabendaoud 1:e18e367432bd 61
julientiron 0:1cb50d31c3b5 62 /* Main ----------------------------------------------------------------------*/
julientiron 0:1cb50d31c3b5 63
julientiron 0:1cb50d31c3b5 64 int main()
julientiron 0:1cb50d31c3b5 65 {
julientiron 0:1cb50d31c3b5 66 /*----- Initialization. -----*/
julientiron 0:1cb50d31c3b5 67
julientiron 0:1cb50d31c3b5 68 /* Initializing SPI bus. */
julientiron 0:1cb50d31c3b5 69 DevSPI dev_spi(D11, D12, D13);
julientiron 0:1cb50d31c3b5 70
julientiron 0:1cb50d31c3b5 71 /* Initializing Motor Control Components. */
julientiron 0:1cb50d31c3b5 72 motor1 = new L6474(D2, D8, D7, D9, D10, dev_spi);
julientiron 0:1cb50d31c3b5 73 motor2 = new L6474(D2, D8, D4, D3, D10, dev_spi);
julientiron 0:1cb50d31c3b5 74 if (motor1->Init() != COMPONENT_OK)
julientiron 0:1cb50d31c3b5 75 exit(EXIT_FAILURE);
julientiron 0:1cb50d31c3b5 76 if (motor2->Init() != COMPONENT_OK)
julientiron 0:1cb50d31c3b5 77 exit(EXIT_FAILURE);
julientiron 0:1cb50d31c3b5 78
julientiron 0:1cb50d31c3b5 79 /* Interrupt to start the robot */
julientiron 0:1cb50d31c3b5 80 startup.fall(&go);
julientiron 0:1cb50d31c3b5 81
julientiron 0:1cb50d31c3b5 82 /* Interrupt to stop the robot */
julientiron 0:1cb50d31c3b5 83 game_length.attach(&stop, 90); //1 minutes 30 secondes pour la Coupe
julientiron 0:1cb50d31c3b5 84
julientiron 0:1cb50d31c3b5 85 while(start) {
julientiron 0:1cb50d31c3b5 86 /* Waiting code */
mohabendaoud 1:e18e367432bd 87
julientiron 0:1cb50d31c3b5 88 }
julientiron 0:1cb50d31c3b5 89
julientiron 0:1cb50d31c3b5 90 while(end) {
julientiron 0:1cb50d31c3b5 91 /* In-game code */
julientiron 0:1cb50d31c3b5 92
mohabendaoud 1:e18e367432bd 93 motor1->Move(StepperMotor::FWD,4096);
mohabendaoud 1:e18e367432bd 94 motor2->Move(StepperMotor::BWD,4096);
mohabendaoud 1:e18e367432bd 95
julientiron 0:1cb50d31c3b5 96 /* Requesting to run backward. */
julientiron 0:1cb50d31c3b5 97 motor1->Run(StepperMotor::BWD);
julientiron 0:1cb50d31c3b5 98 motor2->Run(StepperMotor::FWD);
julientiron 0:1cb50d31c3b5 99
julientiron 0:1cb50d31c3b5 100 /* Waiting until delay has expired. */
julientiron 0:1cb50d31c3b5 101 wait_ms(3000);
julientiron 0:1cb50d31c3b5 102
julientiron 0:1cb50d31c3b5 103 motor1->HardStop();
julientiron 0:1cb50d31c3b5 104 motor2->HardStop();
julientiron 0:1cb50d31c3b5 105
julientiron 0:1cb50d31c3b5 106 motor1->WaitWhileActive();
julientiron 0:1cb50d31c3b5 107 motor2->WaitWhileActive();
julientiron 0:1cb50d31c3b5 108
julientiron 0:1cb50d31c3b5 109 /* Requesting to run backward. */
julientiron 0:1cb50d31c3b5 110 motor1->Run(StepperMotor::FWD);
julientiron 0:1cb50d31c3b5 111 motor2->Run(StepperMotor::BWD);
julientiron 0:1cb50d31c3b5 112
julientiron 0:1cb50d31c3b5 113 /* Waiting until delay has expired. */
julientiron 0:1cb50d31c3b5 114 wait_ms(3000);
julientiron 0:1cb50d31c3b5 115
julientiron 0:1cb50d31c3b5 116 motor1->HardStop();
julientiron 0:1cb50d31c3b5 117 motor2->HardStop();
julientiron 0:1cb50d31c3b5 118
julientiron 0:1cb50d31c3b5 119 motor1->WaitWhileActive();
julientiron 0:1cb50d31c3b5 120 motor2->WaitWhileActive();
julientiron 0:1cb50d31c3b5 121 }
julientiron 0:1cb50d31c3b5 122
julientiron 0:1cb50d31c3b5 123 motor1->HardStop();
julientiron 0:1cb50d31c3b5 124 motor2->HardStop();
julientiron 0:1cb50d31c3b5 125
julientiron 0:1cb50d31c3b5 126 motor1->WaitWhileActive();
julientiron 0:1cb50d31c3b5 127 motor2->WaitWhileActive();
julientiron 0:1cb50d31c3b5 128 }