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: Speaker mbed mbed-rtos 4DGL-uLCD-SE hcsr04
Revision 15:d39446966d94, committed 2020-12-20
- Comitter:
- tadhgjones
- Date:
- Sun Dec 20 20:20:26 2020 +0000
- Parent:
- 14:0bbfa2c1de62
- Commit message:
- Final revision of EE3023 Design Project
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Dec 19 19:04:00 2020 +0000
+++ b/main.cpp Sun Dec 20 20:20:26 2020 +0000
@@ -2,44 +2,50 @@
#include "hcsr04.h"
#include "Speaker.h"
#include "uLCD_4DGL.h"
-//temp
+
+//Temperature Inputs
AnalogIn ain(p15);
AnalogIn ain2(p16);
-//dist
+
+//Distance Inputs
HCSR04 distSens(p25,p6);
Speaker mySpeaker(p18);
-//general
+
+//Initialisation of LCD and Serial Monitor
Serial pc(USBTX, USBRX);
uLCD_4DGL uLCD(p9,p10,p11);
-//autolights
+
+//Autolights Inputs
AnalogIn photodiode(p20);
PwmOut myled(p21);
-//distance
+
+//Distance
unsigned int dist;
float averageDistance();
void beeping();
float i;
float x = 0;
-//temp
+
+//Temperature
void Temperature();
void TempConstraints();
float getTemp();
float avgTemp();
float getTemp2();
float avgTemp2();
-
float voltage_in;
float degrees_c;
float avgT;
float Temp;
float a;
float b;
-//autolights
+
+//Autolights
void LED();
-
+
int main()
{
- //dist
+ //distance
uLCD.text_width(1);
uLCD.text_height(1);
uLCD.locate(10, 12);
@@ -64,6 +70,7 @@
LED();
}
}
+//measure average distance from sensor
float averageDistance()
{
int a = distSens.get_dist_cm();
@@ -80,6 +87,7 @@
dist = (a+b+c+d+e+f+g+h+i+j)/10;
return dist;
}
+//distance parameters and output
void beeping()
{
int distance = averageDistance();
@@ -99,48 +107,53 @@
if (distance < 5) i=1.2;
mySpeaker.PlayNote(700*i, 0.2, 2*i);
}
+//measure and output temperature
void Temperature(){
-
+ uLCD.locate(1,1);
+ uLCD.printf("Temperature:\n\n");
a = avgTemp();
b = avgTemp2();
- TempConstraints();
- Temp = ((a + b)/2)-7;
+ Temp = ((a + b)/2)-15;
+ uLCD.text_width(2);
+ uLCD.text_height(2);
+ uLCD.printf("%3.1f\t", Temp);
uLCD.text_width(1);
uLCD.text_height(1);
- uLCD.locate(1,1);
- uLCD.printf("%3.1f deg C\n\r", Temp);
-
+ uLCD.printf("o");
+ uLCD.text_width(2);
+ uLCD.text_height(2);
+ uLCD.printf("C");
+ uLCD.text_width(1);
+ uLCD.text_height(1);
+ TempConstraints();
}
-
+ //signal sensor fault or low temperature
void TempConstraints() {
-
if(degrees_c <= 4){
uLCD.text_width(1);
uLCD.text_height(1);
- uLCD.locate(1,1);
- pc.printf("WARNING\nCOLD TEMPERATURES\nICE MAY BE PRESENT");
+ uLCD.locate(1,5);
+ pc.printf("ICE WARNING");
}
if(abs(a-b) > 4){
uLCD.text_width(1);
uLCD.text_height(1);
- uLCD.locate(1,1);
- uLCD.printf("WARNING\nTEMPERATURE SENSOR\nFAULT\n");
+ uLCD.locate(1,5);
+ uLCD.printf("TEMPERATURE FAULT");
}
}
-
+//convert sensor outut to temperature
float getTemp(){
voltage_in = ain * 3.3;
degrees_c = ((voltage_in - 0.5) * 100.0);
return degrees_c;
}
-
float getTemp2(){
voltage_in = ain2 * 3.3;
degrees_c = ((voltage_in - 0.5) * 100.0);
return degrees_c;
}
-
-//Thsi function obtaines the voltage from the first sensor
+//Thsi function obtaines the average voltage from the first sensor
float avgTemp(){
float a = getTemp();
float b = getTemp();
@@ -163,14 +176,9 @@
float s = getTemp();
float t = getTemp();
- //The function is called to get 20 Values of the required voltage in order
- //to acieve an accurate resuilt and eliminate outlier effects
avgT = (a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t)/20;
-
return avgT;
}
-
-//this function obtaines the voltage from the second sensor
float avgTemp2(){
float a = getTemp2();
float b = getTemp2();
@@ -194,19 +202,27 @@
float t = getTemp2();
avgT = (a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t)/20;
-
return avgT;
}
+//check LED and turn on and off lights as required
void LED(){
-
if (photodiode*100 <= 27){
myled = 1;
- uLCD.printf("\nautolights ON ");
+ uLCD.locate(1,7);
+ uLCD.printf("Autolights:\n\n");
+ uLCD.text_width(2);
+ uLCD.text_height(2);
+ uLCD.printf("ON ");
+ uLCD.text_width(1);
+ uLCD.text_height(1);
} else {
myled = 0;
- uLCD.printf("\nautolights OFF");
-
- }
-
-
+ uLCD.locate(1,7);
+ uLCD.printf("Autolights:\n\n");
+ uLCD.text_width(2);
+ uLCD.text_height(2);
+ uLCD.printf("OFF");
+ uLCD.text_width(1);
+ uLCD.text_height(1);
+ }
}
\ No newline at end of file