Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BSP_DISCO_L476VG LCD_DISCO_L476VG
Diff: main.cpp
- Revision:
- 0:0949c00010ff
- Child:
- 1:28d1cf3f31f7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Oct 19 20:57:39 2020 +0000
@@ -0,0 +1,167 @@
+/* Project: Data Fitting Code
+Description: Base functionality for lighting controller.
+
+Author: Alex Mueller and Marissa Gore
+Date: 10/18/2020
+
+*/
+
+//Includes
+#include "mbed.h" //includes mbed header file
+#include "LCD_DISCO_L476VG.h" //includes LCD libraries
+#include <stdio.h> //includes studio header file
+#include <fstream> //include file handing library
+
+
+DigitalOut Ctrl(PA_2); //Controls relay
+DigitalIn button(PA_0); //Push button changes display mode
+AnalogIn ain(PA_1); //Sensor
+
+LCD_DISCO_L476VG lcd;
+
+//Global variables
+float sampledData[10000];
+int numDataSamples = 0;
+//int StateEx = 1;
+
+//Initalize functions
+void SensorValues(float value);
+void Timer(); //not done
+int PersonId();
+int PeakLocation();
+void Counter(int count);
+void Status();
+//void DisplayHandler(int count);
+
+int main()
+{
+ float value;
+ bool incident = false;
+ float baseline = 65; //75cm
+ int count = 0;
+ int person;
+ uint8_t DisplayedString[7] = {0};
+
+ while(1)
+ {
+// printf("%i\n", count*50);
+// DisplayHandler(count);
+ value = 30 * pow(ain.read(), -1.173);
+ printf("%f \n", value);
+ if(value < baseline)
+ {
+ incident = true;
+ SensorValues(value);
+ }
+ else if(incident == true && value >= baseline)
+ {
+ person = PersonId();
+ if(person == 1)
+ {
+ Ctrl = 1; //change to set low to turn on relay
+ count++;
+ Counter(count);
+ }
+ else if(person == 0)
+ {
+ count--;
+ Counter(count);
+ if(count == 0)
+ {
+ Ctrl = 0; //change to set high to turn off relay
+ }
+ }
+ incident = false;
+ numDataSamples = 0;
+ }
+ ThisThread::sleep_for(5);
+ }
+}
+
+void SensorValues(float value)
+{
+ sampledData[numDataSamples] = value;
+ numDataSamples++;
+}
+
+////void Timer()
+////{
+//// pizza
+////}
+
+int PeakLocation()
+{
+ int min = sampledData[0];
+ int saveLow;
+ for (int i = 1; i < numDataSamples; ++i)
+ {
+ if(sampledData[i] < min)
+ {
+ min = sampledData[i];
+ saveLow = i;
+ }
+ }
+ return saveLow;
+}
+
+int PersonId()
+{
+ int lowest = PeakLocation();
+
+ if(lowest < (numDataSamples*(1/2 - 0.1))) // Lowest < midpoint - 10%
+ {
+ return -1;
+ }
+ else if(lowest > (numDataSamples*(1/2 + 0.1))) // Lowest > midpoint + 10%
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+void Counter(int count)
+{
+ lcd.Clear();
+ uint8_t DisplayedString[7] = {0};
+ sprintf((char *)DisplayedString, "%d\n", count);
+ lcd.DisplayString(DisplayedString);
+
+// if(button == 1)
+// {
+// StateEx =2;
+// }
+}
+
+//void Status()
+//{
+// lcd.Clear();
+// if(Ctrl == 1)
+// {
+// lcd.DisplayString((uint8_t *)"OFF");
+// }
+// if(Ctrl == 0)
+// {
+// lcd.DisplayString((uint8_t *)"ON");
+// }
+// if(button == 1)
+// {
+// StateEx =1;
+// }
+//}
+
+//void DisplayHandler(int count)
+//{
+// switch(StateEx)
+// {
+// case PersonCount: Counter(count);
+// break;
+// case LEDstatus: Status();
+// break;
+// case ErrorState: printf("Error the cookie monster is going to eat you");
+// break;
+// }
+// wait(0.1);
+//}
\ No newline at end of file