fuck this

Dependencies:   BMP280

Committer:
mwthewsey
Date:
Wed Jan 10 03:57:59 2018 +0000
Revision:
25:a2aedb498b27
Parent:
24:7bf408dc491a
Final Submission

Who changed what in which revision?

UserRevisionLine numberNew contents of line
noutram 0:65ff7ad381e8 1 #include "mbed.h"
Swaggie 2:5a38ae8459d5 2 #include "WebUI.h"
Swaggie 2:5a38ae8459d5 3 #include "Serial.h"
Swaggie 3:8fa1e77c8a5d 4 #include "Sampling.h"
Swaggie 3:8fa1e77c8a5d 5 #include "LCD.h"
mwthewsey 11:b538e73841ae 6 #include "SDCard.h"
Swaggie 5:bea93c8e50b7 7 #include "SDBlockDevice.h"
Swaggie 20:25939e03b803 8 #include "Logging.h"
mwthewsey 12:03589f1d5c30 9
mwthewsey 12:03589f1d5c30 10 //Hardware setup
mwthewsey 21:6e733076f49c 11 BMP280 sensor(D14, D15); //Enviromental sensor
mwthewsey 21:6e733076f49c 12 AnalogIn LDRSensor(A0); //LDR sensor
mwthewsey 21:6e733076f49c 13 DigitalOut SamplingLED(PB_10); //LED to indicate sampling
mwthewsey 21:6e733076f49c 14
Swaggie 19:40c721f01ed2 15 //SD Card devices
Swaggie 19:40c721f01ed2 16 InterruptIn SD_WP(PE_10);
Swaggie 19:40c721f01ed2 17 InterruptIn UserButton(USER_BUTTON);
Swaggie 19:40c721f01ed2 18 SDBlockDevice sd(PB_5, D12, D13, D10);
Swaggie 19:40c721f01ed2 19 DigitalOut GreenLED(PB_11);
mwthewsey 12:03589f1d5c30 20
mwthewsey 21:6e733076f49c 21 //Serial interface
mwthewsey 21:6e733076f49c 22 Serial PC(USBTX, USBRX);
mwthewsey 21:6e733076f49c 23
mwthewsey 21:6e733076f49c 24 //LCD card object. LCD pins and two timeset buttons
mwthewsey 24:7bf408dc491a 25 ENVDISPLAY lcd(D9, D8, D7, D6, D4, D2,PE_12, PE_14);
mwthewsey 24:7bf408dc491a 26
mwthewsey 24:7bf408dc491a 27 //Forward Declaration of Self Test
mwthewsey 24:7bf408dc491a 28 void POST(void);
noutram 0:65ff7ad381e8 29
noutram 0:65ff7ad381e8 30 int main()
noutram 0:65ff7ad381e8 31 {
Swaggie 2:5a38ae8459d5 32 //Initialise devices
Swaggie 19:40c721f01ed2 33 firstSample = true; //Set only at start of program
mwthewsey 21:6e733076f49c 34 logging = false;
mwthewsey 21:6e733076f49c 35
Swaggie 2:5a38ae8459d5 36 //Hardware Self Test
mwthewsey 24:7bf408dc491a 37 POST();
mwthewsey 12:03589f1d5c30 38
Swaggie 19:40c721f01ed2 39 //Initialise interrupts and times
mwthewsey 21:6e733076f49c 40 SerialStart(); //Start serial comms
mwthewsey 21:6e733076f49c 41 lcd.Start(); //Start LCD functionality
mwthewsey 21:6e733076f49c 42 SDCardInit(); //Start SDCard functionality
mwthewsey 21:6e733076f49c 43 WebUISetup(); //Start Web Interface
Swaggie 19:40c721f01ed2 44 ConfigThreadsAndIR(); //Start sampling
Swaggie 19:40c721f01ed2 45
Swaggie 19:40c721f01ed2 46
Swaggie 6:8e1795a5886b 47 //Run
Swaggie 19:40c721f01ed2 48 while (true) {
Swaggie 19:40c721f01ed2 49 if (NewEnvSample && NewLDRSample) {
Swaggie 7:bf9f92ff02e8 50 //New samples have been captured and are in the register
mwthewsey 21:6e733076f49c 51 IncrementIndex(); //Index for buffers
Swaggie 19:40c721f01ed2 52 NewEnvSample = false; //Reset sampling threads
Swaggie 6:8e1795a5886b 53 NewLDRSample = false;
Swaggie 19:40c721f01ed2 54
mwthewsey 21:6e733076f49c 55 //Push latest samples to LCD.
mwthewsey 11:b538e73841ae 56 lcd.UpdateData(tempReadings[currentIndex],presReadings[currentIndex],LDRReadings[currentIndex],timeReadings[currentIndex]);
Swaggie 20:25939e03b803 57 LogEvent(Log_IndexInc); //Log position
Swaggie 6:8e1795a5886b 58 }
Swaggie 20:25939e03b803 59 if (logging) {
mwthewsey 21:6e733076f49c 60 //Grab from mailbox and print to serial
Swaggie 20:25939e03b803 61 string QueueData = CheckLoggingQueue(); //Get the data from queue
Swaggie 20:25939e03b803 62 char char_array[QueueData.length()+1]; //Char array for message
Swaggie 20:25939e03b803 63 strcpy(char_array, QueueData.c_str()); //String must be converted to char array for printf
Swaggie 20:25939e03b803 64 PC.printf("%s\n\r",char_array);
Swaggie 20:25939e03b803 65 }
Swaggie 19:40c721f01ed2 66 }
mwthewsey 24:7bf408dc491a 67 }
mwthewsey 24:7bf408dc491a 68
mwthewsey 24:7bf408dc491a 69 void POST(void)
mwthewsey 24:7bf408dc491a 70 {
mwthewsey 24:7bf408dc491a 71 printf("------Self Test------\n\r");
mwthewsey 24:7bf408dc491a 72 lcd.POST();
mwthewsey 24:7bf408dc491a 73 printf("LCD Test Done\n\r");
mwthewsey 24:7bf408dc491a 74 printf("SDCard ejected?: %d\n\r",SD_WP.read());
mwthewsey 24:7bf408dc491a 75 printf("SDCard Dismount Button: %d\n\r",UserButton.read());
mwthewsey 24:7bf408dc491a 76 printf("Flashing SDCard Status LEDs\n\r");
mwthewsey 24:7bf408dc491a 77 int i;
mwthewsey 24:7bf408dc491a 78 for (i=0;i<5;i++){ //Flash the LEDs
mwthewsey 24:7bf408dc491a 79 GreenLED = 1;
mwthewsey 24:7bf408dc491a 80 SDCardStatusLED = 0;
mwthewsey 24:7bf408dc491a 81 Thread::wait(200);
mwthewsey 24:7bf408dc491a 82 GreenLED = 0;
mwthewsey 24:7bf408dc491a 83 SDCardStatusLED = 1;
mwthewsey 24:7bf408dc491a 84 Thread::wait(200);
mwthewsey 24:7bf408dc491a 85 }
mwthewsey 24:7bf408dc491a 86 SDCardStatusLED = 0;
mwthewsey 24:7bf408dc491a 87 printf("Temp: %5.1fC\n\r",sensor.getTemperature()); //Print temperature
mwthewsey 24:7bf408dc491a 88 printf("Pres: %5.1fmBar\n\r",sensor.getPressure()); //Print Pressure
mwthewsey 24:7bf408dc491a 89 printf("LDR: %f\n\r",LDRSensor); //Print Light Level
mwthewsey 24:7bf408dc491a 90 printf("Flashing Sample LED\n\r");
mwthewsey 24:7bf408dc491a 91 for (i=0;i<5;i++){ //Flash the LED
mwthewsey 24:7bf408dc491a 92 SamplingLED = 1;
mwthewsey 24:7bf408dc491a 93 Thread::wait(200);
mwthewsey 24:7bf408dc491a 94 SamplingLED = 0;
mwthewsey 24:7bf408dc491a 95 Thread::wait(200);
mwthewsey 24:7bf408dc491a 96 }
mwthewsey 24:7bf408dc491a 97 SamplingLED = 0;
mwthewsey 24:7bf408dc491a 98 printf("------Self Test Complete------\n\r");
mwthewsey 24:7bf408dc491a 99 Thread::wait(1000);
mwthewsey 25:a2aedb498b27 100 }