fuck this

Dependencies:   BMP280

Committer:
Swaggie
Date:
Thu Jan 04 19:32:30 2018 +0000
Revision:
8:dbb57b4d5ba4
Parent:
7:bf9f92ff02e8
Child:
9:ac5673cca703
Corrected a few compile errors in sampling code.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Swaggie 5:bea93c8e50b7 1 #include "Sampling.h"
Swaggie 5:bea93c8e50b7 2 #include "mbed.h"
Swaggie 8:dbb57b4d5ba4 3 #include "rtos.h"
Swaggie 6:8e1795a5886b 4
Swaggie 7:bf9f92ff02e8 5 //Index
Swaggie 7:bf9f92ff02e8 6 unsigned short newestIndex = BUFFERSIZE-1;
Swaggie 7:bf9f92ff02e8 7 unsigned short oldestIndex = BUFFERSIZE-1;
Swaggie 7:bf9f92ff02e8 8
Swaggie 7:bf9f92ff02e8 9 bool firstSample = true;
Swaggie 6:8e1795a5886b 10
Swaggie 7:bf9f92ff02e8 11 //Hardware
Swaggie 7:bf9f92ff02e8 12 BMP280 sensor(D14, D15);
Swaggie 8:dbb57b4d5ba4 13 AnalogIn LDRSensor(PA_0);
Swaggie 8:dbb57b4d5ba4 14 DigitalOut SamplingLED(LED1);
Swaggie 6:8e1795a5886b 15
Swaggie 5:bea93c8e50b7 16 void SampleTimerISR(void)
Swaggie 5:bea93c8e50b7 17 {
Swaggie 5:bea93c8e50b7 18 //Flag Threads
Swaggie 7:bf9f92ff02e8 19 t1.signal_set(1);
Swaggie 7:bf9f92ff02e8 20 t2.signal_set(1);
Swaggie 8:dbb57b4d5ba4 21 SamplingLED = 1;
Swaggie 8:dbb57b4d5ba4 22 SampleLEDTimeout.attach(&FlipSamplingLED,1); //To turn LED off
Swaggie 5:bea93c8e50b7 23 }
Swaggie 7:bf9f92ff02e8 24
Swaggie 5:bea93c8e50b7 25 void ConfigThreadsAndIR(void)
Swaggie 5:bea93c8e50b7 26 {
Swaggie 7:bf9f92ff02e8 27 NewEnvSample = false; //Reset
Swaggie 7:bf9f92ff02e8 28 NewLDRSample = false; //Reset
Swaggie 7:bf9f92ff02e8 29
Swaggie 8:dbb57b4d5ba4 30 t1.start(&ThreadSampleEnvSensor);
Swaggie 8:dbb57b4d5ba4 31 t2.start(&ThreadSampleLDR);
Swaggie 7:bf9f92ff02e8 32
Swaggie 8:dbb57b4d5ba4 33 sampleRate.attach(&SampleTimerISR, 15); //15 second interval
Swaggie 7:bf9f92ff02e8 34 }
Swaggie 7:bf9f92ff02e8 35
Swaggie 7:bf9f92ff02e8 36 void AddTempSample(float temp)
Swaggie 7:bf9f92ff02e8 37 {
Swaggie 7:bf9f92ff02e8 38 tempReadingsLock.lock(); //Take the key
Swaggie 7:bf9f92ff02e8 39 tempReadings[newestIndex+1] = temp; //Add the sample after the most recent
Swaggie 7:bf9f92ff02e8 40 tempReadingsLock.unlock(); // Release the key
Swaggie 7:bf9f92ff02e8 41 }
Swaggie 7:bf9f92ff02e8 42
Swaggie 7:bf9f92ff02e8 43 void AddPresSample(float pres)
Swaggie 7:bf9f92ff02e8 44 {
Swaggie 7:bf9f92ff02e8 45 presReadingsLock.lock(); //Take the key
Swaggie 7:bf9f92ff02e8 46 presReadings[newestIndex+1] = pres; //Add to register
Swaggie 8:dbb57b4d5ba4 47 presReadingsLock.unlock(); //Release the key
Swaggie 6:8e1795a5886b 48 }
Swaggie 6:8e1795a5886b 49
Swaggie 7:bf9f92ff02e8 50 void ThreadSampleEnvSensor(void)
Swaggie 6:8e1795a5886b 51 {
Swaggie 7:bf9f92ff02e8 52 while (true) {
Swaggie 7:bf9f92ff02e8 53 Thread::signal_wait(1); //Wait for signal 1
Swaggie 7:bf9f92ff02e8 54 //Get readings
Swaggie 7:bf9f92ff02e8 55 float temp = sensor.getTemperature();
Swaggie 7:bf9f92ff02e8 56 float pres = sensor.getPressure();
Swaggie 7:bf9f92ff02e8 57 AddPresSample(pres); //Add value to register
Swaggie 7:bf9f92ff02e8 58 AddTempSample(temp); //Add value to register
Swaggie 7:bf9f92ff02e8 59 NewEnvSample = true; //Signal to main thread
Swaggie 7:bf9f92ff02e8 60 }
Swaggie 7:bf9f92ff02e8 61 }
Swaggie 7:bf9f92ff02e8 62
Swaggie 7:bf9f92ff02e8 63 void AddLDRSample(float LDRval)
Swaggie 7:bf9f92ff02e8 64 {
Swaggie 7:bf9f92ff02e8 65 LDRReadingsLock.lock(); //Take the key
Swaggie 8:dbb57b4d5ba4 66 LDRReadings[newestIndex+1] = LDRval; //Add the sample after the most recent
Swaggie 7:bf9f92ff02e8 67 LDRReadingsLock.unlock(); // Release the key
Swaggie 6:8e1795a5886b 68 }
Swaggie 6:8e1795a5886b 69
Swaggie 7:bf9f92ff02e8 70 void ThreadSampleLDR(void)
Swaggie 6:8e1795a5886b 71 {
Swaggie 7:bf9f92ff02e8 72 while (true) {
Swaggie 7:bf9f92ff02e8 73 Thread::signal_wait(1); //Wait for signal 1
Swaggie 7:bf9f92ff02e8 74 //get readings
Swaggie 8:dbb57b4d5ba4 75 float LDRval = LDRSensor; //Read the analogue pin value
Swaggie 7:bf9f92ff02e8 76 //get time function
Swaggie 7:bf9f92ff02e8 77 AddLDRSample(LDRval);
Swaggie 7:bf9f92ff02e8 78 //add time sample
Swaggie 7:bf9f92ff02e8 79 NewLDRSample = true; //signal to main thread
Swaggie 7:bf9f92ff02e8 80 }
Swaggie 7:bf9f92ff02e8 81 }
Swaggie 7:bf9f92ff02e8 82
Swaggie 7:bf9f92ff02e8 83 void IncrementIndex(void)
Swaggie 7:bf9f92ff02e8 84 {
Swaggie 7:bf9f92ff02e8 85 newestIndex++; //Move the index forward one
Swaggie 7:bf9f92ff02e8 86 if (newestIndex == oldestIndex) {
Swaggie 7:bf9f92ff02e8 87 //If this is true then the memory is full and has looped back around and overwritten the oldest sample
Swaggie 7:bf9f92ff02e8 88 //Therefore, we need to move the oldest index pointer
Swaggie 7:bf9f92ff02e8 89 if (firstSample)
Swaggie 7:bf9f92ff02e8 90 {
Swaggie 7:bf9f92ff02e8 91 //this prevents the initial error
Swaggie 7:bf9f92ff02e8 92 oldestIndex++;
Swaggie 7:bf9f92ff02e8 93 firstSample = false;
Swaggie 7:bf9f92ff02e8 94 }
Swaggie 7:bf9f92ff02e8 95 }
Swaggie 7:bf9f92ff02e8 96 }
Swaggie 8:dbb57b4d5ba4 97
Swaggie 8:dbb57b4d5ba4 98 void FlipSamplingLED(void)
Swaggie 8:dbb57b4d5ba4 99 {
Swaggie 8:dbb57b4d5ba4 100 SamplingLED = 0;
Swaggie 8:dbb57b4d5ba4 101 }