Code petit robot

Dependencies:   VL6180x X_NUCLEO_COMMON X_NUCLEO_IHM01A1 mbed

Fork of 1-DoorCloser by Robotique FIP

Committer:
julientiron
Date:
Sat Apr 02 10:07:34 2016 +0000
Revision:
1:562b097e12f7
Parent:
0:1cb50d31c3b5
ll

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 1:562b097e12f7 18 #include "VL6180x.h"
julientiron 0:1cb50d31c3b5 19
julientiron 0:1cb50d31c3b5 20 /* Definitions ---------------------------------------------------------------*/
julientiron 0:1cb50d31c3b5 21
julientiron 0:1cb50d31c3b5 22 #define VL6180X_ADDRESS 0x29
julientiron 0:1cb50d31c3b5 23
julientiron 0:1cb50d31c3b5 24 /* Variables -----------------------------------------------------------------*/
julientiron 0:1cb50d31c3b5 25
julientiron 0:1cb50d31c3b5 26 /* Start and Stop Component */
julientiron 0:1cb50d31c3b5 27 InterruptIn startup(PC_1);
julientiron 0:1cb50d31c3b5 28 Ticker game_length;
julientiron 0:1cb50d31c3b5 29 volatile bool start = 1;
julientiron 0:1cb50d31c3b5 30 volatile bool end = 1;
julientiron 1:562b097e12f7 31 char data = 0x08 | (char)64;
julientiron 1:562b097e12f7 32 bool tag = true;
julientiron 1:562b097e12f7 33 int i2cAddres=0x70; // Address of DS1307 is 0x68 (7 bit address)
julientiron 1:562b097e12f7 34 int i2c8BitAddres= i2cAddres <<1; // Convert to 8bit addressing used by mbed
julientiron 0:1cb50d31c3b5 35
julientiron 0:1cb50d31c3b5 36 /* Motor Control Component */
julientiron 0:1cb50d31c3b5 37 L6474 *motor1;
julientiron 0:1cb50d31c3b5 38 L6474 *motor2;
julientiron 0:1cb50d31c3b5 39
julientiron 0:1cb50d31c3b5 40 /* Distance Sensors Component */
julientiron 1:562b097e12f7 41 /*DevI2C *i2c =new DevI2C(D14, D15);
julientiron 0:1cb50d31c3b5 42 VL6180X sensor1(i2c);
julientiron 0:1cb50d31c3b5 43 VL6180X sensor2(i2c);
julientiron 1:562b097e12f7 44 VL6180X sensor3(i2c);*/
julientiron 1:562b097e12f7 45 I2C i2c(D14, D15);
julientiron 1:562b097e12f7 46 VL6180x sensor(D14, D15, VL6180X_ADDRESS<<1);
julientiron 0:1cb50d31c3b5 47
julientiron 0:1cb50d31c3b5 48 /* Functions -----------------------------------------------------------------*/
julientiron 0:1cb50d31c3b5 49
julientiron 0:1cb50d31c3b5 50 void go()
julientiron 0:1cb50d31c3b5 51 {
julientiron 0:1cb50d31c3b5 52 start = 0;
julientiron 0:1cb50d31c3b5 53 }
julientiron 0:1cb50d31c3b5 54
julientiron 0:1cb50d31c3b5 55 void stop()
julientiron 0:1cb50d31c3b5 56 {
julientiron 0:1cb50d31c3b5 57 end = 0;
julientiron 0:1cb50d31c3b5 58 }
julientiron 0:1cb50d31c3b5 59
julientiron 1:562b097e12f7 60 void init_sensor()
julientiron 1:562b097e12f7 61 {
julientiron 1:562b097e12f7 62
julientiron 0:1cb50d31c3b5 63 }
julientiron 1:562b097e12f7 64
julientiron 1:562b097e12f7 65 void switch_sensor(int number)
julientiron 1:562b097e12f7 66 {
julientiron 1:562b097e12f7 67
julientiron 0:1cb50d31c3b5 68 }
julientiron 0:1cb50d31c3b5 69
julientiron 0:1cb50d31c3b5 70 /* Main ----------------------------------------------------------------------*/
julientiron 0:1cb50d31c3b5 71
julientiron 0:1cb50d31c3b5 72 int main()
julientiron 0:1cb50d31c3b5 73 {
julientiron 0:1cb50d31c3b5 74 /*----- Initialization. -----*/
julientiron 0:1cb50d31c3b5 75
julientiron 0:1cb50d31c3b5 76 /* Initializing SPI bus. */
julientiron 0:1cb50d31c3b5 77 DevSPI dev_spi(D11, D12, D13);
julientiron 0:1cb50d31c3b5 78
julientiron 0:1cb50d31c3b5 79 /* Initializing Motor Control Components. */
julientiron 0:1cb50d31c3b5 80 motor1 = new L6474(D2, D8, D7, D9, D10, dev_spi);
julientiron 0:1cb50d31c3b5 81 motor2 = new L6474(D2, D8, D4, D3, D10, dev_spi);
julientiron 0:1cb50d31c3b5 82 if (motor1->Init() != COMPONENT_OK)
julientiron 0:1cb50d31c3b5 83 exit(EXIT_FAILURE);
julientiron 0:1cb50d31c3b5 84 if (motor2->Init() != COMPONENT_OK)
julientiron 0:1cb50d31c3b5 85 exit(EXIT_FAILURE);
julientiron 1:562b097e12f7 86 int result = i2c.write(i2c8BitAddres, &data, 1 );
julientiron 1:562b097e12f7 87 sensor.VL6180xDefautSettings();
julientiron 0:1cb50d31c3b5 88
julientiron 0:1cb50d31c3b5 89 /* Interrupt to start the robot */
julientiron 0:1cb50d31c3b5 90 startup.fall(&go);
julientiron 0:1cb50d31c3b5 91
julientiron 0:1cb50d31c3b5 92 while(start) {
julientiron 0:1cb50d31c3b5 93 /* Waiting code */
julientiron 0:1cb50d31c3b5 94 }
julientiron 1:562b097e12f7 95
julientiron 0:1cb50d31c3b5 96 while(end) {
julientiron 0:1cb50d31c3b5 97 /* In-game code */
julientiron 1:562b097e12f7 98
julientiron 1:562b097e12f7 99 /* Interrupt to stop the robot */
julientiron 1:562b097e12f7 100 game_length.attach(&stop, 10); //1 minutes 30 secondes pour la Coupe
julientiron 0:1cb50d31c3b5 101
julientiron 1:562b097e12f7 102 if(sensor.getDistance()<100) {
julientiron 1:562b097e12f7 103 printf("1");
julientiron 1:562b097e12f7 104 if(tag == false) {
julientiron 1:562b097e12f7 105 motor1->Run(StepperMotor::FWD);
julientiron 1:562b097e12f7 106 motor2->Run(StepperMotor::FWD);
julientiron 0:1cb50d31c3b5 107
julientiron 1:562b097e12f7 108 tag = true;
julientiron 1:562b097e12f7 109 }
julientiron 1:562b097e12f7 110 } else {
julientiron 1:562b097e12f7 111 printf("0");
julientiron 1:562b097e12f7 112 if(tag == true) {
julientiron 1:562b097e12f7 113 motor1->Run(StepperMotor::FWD);
julientiron 1:562b097e12f7 114 motor2->Run(StepperMotor::BWD);
julientiron 0:1cb50d31c3b5 115
julientiron 1:562b097e12f7 116 tag = false;
julientiron 1:562b097e12f7 117 }
julientiron 1:562b097e12f7 118 }
julientiron 1:562b097e12f7 119 wait_ms(100);
julientiron 0:1cb50d31c3b5 120 /* Waiting until delay has expired. */
julientiron 1:562b097e12f7 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 }