Work in progress
Dependencies: MMA8451Q MPL3115A2 SDFileSystem Servo TSI ledDriver mbed
Revision 0:ea1809c84d7a, committed 2014-11-23
- Comitter:
- iLyngklip
- Date:
- Sun Nov 23 02:11:47 2014 +0000
- Commit message:
- Work in progress
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA8451Q.lib Sun Nov 23 02:11:47 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/emilmont/code/MMA8451Q/#c4d879a39775
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MPL3115A2.lib Sun Nov 23 02:11:47 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/clemente/code/MPL3115A2/#82ac06669316
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDFileSystem.lib Sun Nov 23 02:11:47 2014 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/iLyngklip/code/SDFileSystem/#2e4d3f7e0d11
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Servo.lib Sun Nov 23 02:11:47 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/Servo/#36b69a7ced07
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TSI.lib Sun Nov 23 02:11:47 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/TSI/#1a60ef257879
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ledDriver.lib Sun Nov 23 02:11:47 2014 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/iLyngklip/code/ledDriver/#cd53218fd48a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Nov 23 02:11:47 2014 +0000 @@ -0,0 +1,230 @@ +// ********************************************************************************************************************************************************* +// Settings * +// ********************************************************************************************************************************************************* +// Serial Settings +#define DEBUG_TO_SERIAL 1 // Echo to PC serial +#define SD_CARD 1 // Are we using a SD card at this moment? +#define SECONDS_BETWEEN_MESSAGE 1 // How long between sending a "i'm online" message + + +// Servo positioning +#define intPos 0.2 // Position for locking the chute +#define rlsPos 1.0 // Position for releasing the chute + + + + + +// ********************************************************************************************************************************************************* +// Includes * +// ********************************************************************************************************************************************************* +#include "mbed.h" // Mbed library +#include "SDFileSystem.h" // SD Libary +#include "MMA8451Q.h" // Built-in Accelerometer Libary +#include "TSISensor.h" // Built-in Touch-sensor Libary +#include "MPL3115A2.h" // MPL3115A2 Libary Altitude & pressure sensor +#include "Servo.h" // Servo library + + + + +// ********************************************************************************************************************************************************* +// Definitions * +// ********************************************************************************************************************************************************* +// Adress for the I2C sensors +#define MPL3115A2_I2C_ADDRESS (0x60<<1) // Alt & temp sensor +#define MMA8451_I2C_ADDRESS (0x1d<<1) // Accelerometer + + +// Calibrating the servo +#define calFirst 0.0010 // First value for calibration +#define calSecond 90.0 // Second value for calibration + + +// Messages expected to be recieved. In DEC instead of char! +//#define MESSAGE_LP_ONLINE 49 // Online message from LaunchPad (LP) 49 DEC +//#define MESSAGE_RKT_ONLINE 50 // Online message from Rocket (RKT) +//#define MESSAGE_RKT_RDY 52 // Rocket beginning countdown sequence +//#define MESSAGE_LP_RDY 53 // LaunchPad beginning countdown sequence + + +// Messages expected to be sending. +//#define CONFIRM_ONLINE 8 // Prints "8" in DEC for confirmation to launchpad and rocket (dec 56) +//#define CONFIRM_LAUNCH 3 // "3" for Launch + + +// Confirmations expected to be sent +#define CONFIRM_ONLINE 0x32 // HEX for "2" - the "i'm online!" message +#define CONFIRM_LAUNCH 0x34 // HEX for "4" - The "OK we'll launch soon" + +// Messages expected to recieve +#define MESSAGE_KTP_ONLINE 0x38 // HEX for "8" - Kontrolpanel confirms connection +#define MESSAGE_KTP_LAUNCH 0x33 // HEX for "3" - LAUNCH command from Kontrolpanel +#define MESSAGE_KTP_SD 0x41 // HEX for "A" - For starting to save data to the SD card. Used in pre-launch (in countdown sequence) + +// ********************************************************************************************************************************************************* +// Constructors * +// ********************************************************************************************************************************************************* +MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); // Built-in Accelerometer +MPL3115A2 wigo_sensor1( PTE0, PTE1, MPL3115A2_I2C_ADDRESS); // Pressure- and temperature-sensor! +TSISensor tsi; //-------------------------------------------// TouchSensor på Mbed'en +SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); // SD Shield +Serial pc(USBTX, USBRX); // Serial w/ PC through wire +Serial XB(PTC4, PTC3); // Serial XBee + +Timer t; // Timer "t" for keeping track of time + + + +// ********************************************************************************************************************************************************* +// Helper-functions for the Altimeter * +// ********************************************************************************************************************************************************* +float print_PressureValue( unsigned char *dt); +float print_AltimiterValue( unsigned char *dt); +float print_TemperatureValue( unsigned char *dt); +float sensor_data[2]; +void dataready( void); // callback function for data streaming using Interrupt +void alttrigger( void); + + + + + + + +// ********************************************************************************************************************************************************* +// Variables * +// ********************************************************************************************************************************************************* +// Filecreation +int fileOpen = 0; +char fileName[23] = "/sd/mydir/LOGGER00.CSV"; + + +// ********************************************************************************************************************************************************* +// Setup * +// ********************************************************************************************************************************************************* +int main(){ + Servo myservo(PTA4); + + myservo.calibrate(calFirst, calSecond); + myservo.write(intPos); + + + #if DEBUG_TO_SERIAL + pc.baud(9600); + #endif + XB.baud(9600); + + + // *********************************************** + // Setting up the altimeter & temp sensor * + // *********************************************** + + wigo_sensor1.Oversample_Ratio( OVERSAMPLE_RATIO_8); // Set over sampling value (see MPL3115A2.h for details) + wigo_sensor1.Altimeter_Mode(); // Configure the sensor + + + // *********************************************** + // Filecreating * + // *********************************************** + #if DEBUG_TO_SERIAL + XB.printf("SD Namecalling\n"); + #endif + + #if SD_CARD + mkdir("/sd/mydir", 0777); // Making the folder in where to put the file + int i = 1; + nameFinder: + fileName[18] = '.'; // Making the dot in .CSV + fileName[17] = i%10 + '0'; // Numbering the filename + fileName[16] = i/10 + '0'; // to something not already there + i++; + FILE *fp = fopen(fileName, "r" ); // This checks if there is a file called fileName + if(fp != NULL){ + #if DEBUG_TO_SERIAL + XB.printf("File existed.\n"); + #endif + + goto nameFinder; + } + + if(fp == NULL){ + #if DEBUG_TO_SERIAL + XB.printf("fileName %c did not exist, creating one now!\n", fileName ); + XB.printf(fileName); + XB.printf("\n"); + #endif + + fp = fopen(fileName, "w" ); // This creates a file called fileName + if(fp == NULL){ + error("failed"); + } + } + #if DEBUG_TO_SERIAL + XB.printf("SD File created in the Rocket.\n"); + #endif + #endif //if SD + + + + + + + + + + + + + + // *********************************************** + // Mode 0: Handshaking with KTP * + // *********************************************** + t.start(); + int time1 = t.read(); + bool confirmed_rdy = false; + + while(confirmed_rdy == false){ + if(time1 - t.read() >= SECONDS_BETWEEN_MESSAGE * 1000){ + XB.putc(CONFIRM_ONLINE); + time1 = t.read(); + }// if + + while(time1 - t.read() < SECONDS_BETWEEN_MESSAGE * 1000){ + if(XB.getc() == MESSAGE_KTP_ONLINE){ + t.stop(); + confirmed_rdy = true; + }// if + }// While time + }// while !confirmed_rdy +// ********************************************************************************************************************************************************* +// Loop * +// ********************************************************************************************************************************************************* +while(1){ + // *********************************************** + // Mode 1: Listening for MESSAGE_KTP_SD * + // *********************************************** + bool confirmed_sd = false; + while(confirmed_sd == false){ + if(XB.readable()){ + if(XB.getc() == MESSAGE_KTP_SD){ + confirmed_sd = true; + }// if MESSAGE_KTP_SD + }// if READABLE + }// while Mode 1 + // *********************************************** + // Mode 2: Start logging data to SD * + // *********************************************** + + + + +}// While loop. The code should stop looping after this point. Keep this close to "Recovered stage" +// ********************************************************************************************************************************************************* +// Recovered stage: Writes end-message to SD-card datastream. * +// ********************************************************************************************************************************************************* + + + + +}// main \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun Nov 23 02:11:47 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/0b3ab51c8877 \ No newline at end of file