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.
Diff: functions.cpp
- Revision:
- 4:28134b3439bc
- Parent:
- 1:3ae60fd51e2b
- Child:
- 5:b354825e5372
--- a/functions.cpp Fri Oct 26 17:52:40 2018 +0000
+++ b/functions.cpp Mon Nov 12 00:12:11 2018 +0000
@@ -1,149 +1,382 @@
#include "stdafx.h"
#include "functions.h"
-float temp_cal(AnalogIn temp_sen)
+void modeProcess()
{
- float a[10], tempC;
- float sum = 0;
+ temp_measure = temp_cal();
+ if (modeStatus) {
+ fanLevel_dis = fan_cal(temp_measure);
+ lightLevel_dis = light_cal();
+ } else {
+ fanLevel_dis = fanLevel_man;
+ lightLevel_dis = lightLevel_man;
+ }
+ setPWM(fanLevel_dis);
+}
+float temp_cal()
+{
+ float a[10], tempC, sum = 0;
int i;
for(i = 0; i < 10; i++) {
a[i] = temp_sen.read();
wait(.05);
sum += a[i];
}
- tempC=(sum*3.3*10); //3.685503686
+ tempC=sum*3.3*10;
//tempF=(9.0*tempC)/5.0 + 32.0;
return tempC;
}
-float light_cal (AnalogIn light_sen)
+int light_cal()
{
- float vl[10], vol, sum1 = 0;
- int i;
+ float vl[10], vol, sum = 0;
+ int i, lvl;
for (i = 0; i < 10; i++) {
vl[i] = light_sen.read();
wait(.05);
- sum1 += vl[i];
+ sum += vl[i];
}
//output voltage of light sensor
- vol = sum1*3.3*10;
- return vol;
+ vol = sum*3.3*10;
+ if ((vol > 0) && (vol <= 66)) {
+ lvl = 4;
+ } else if ((vol > 66) && (vol <= 132)) {
+ lvl = 3;
+ } else if ((vol > 132) && (vol <= 198)) {
+ lvl = 2;
+ } else if ((vol > 198) && (vol <= 264)) {
+ lvl = 1;
+ } else {
+ lvl = 0;
+ }
+ return lvl;
+}
+
+int fan_cal(int &temp)
+{
+ int speed;
+ int range = (high - low)/3;
+ int mid1 = low + range;
+ int mid2 = high - range;
+ if (temp <= low) {
+ speed = 0;
+ } else if ((temp > low) && (temp <= mid1)) {
+ speed = 1;
+ } else if ((temp > mid1) && (temp <= mid2)) {
+ speed = 2;
+ } else if ((temp > mid2) && (temp <= high)) {
+ speed = 3;
+ } else {
+ speed = 4;
+ }
+ return speed;
+}
+
+void setPWM(int &speed)
+{
+ if (speed == 0) {
+ pwm.period(0);
+ pwm.write(0);
+ } else if (speed == 1) {
+ pwm.period(1);
+ pwm.write(0.25);
+ } else if (speed == 2) {
+ pwm.period(1);
+ pwm.write(0.5);
+ } else if (speed == 3) {
+ pwm.period(1);
+ pwm.write(0.75);
+ } else {
+ pwm.period(1);
+ pwm.write(1);
+ }
}
-void buttonMode(int &state, DigitalIn buttonMode)
+void buttonEnter()
+{
+ if ((enter == 0) && (state == 0)) {
+ state = 1;
+ wait(0.2);
+ }
+ if ((enter == 0) && (state == 1) && (type == 0)) {
+ type = 1;
+ wait(0.2);
+ }
+ if ((enter == 0) && (state == 1) && (type == 1)) {
+ state = 2;
+ type = 0;
+ wait(0.2);
+ }
+ if ((enter == 0) && (state == 1) && (type == 2)) {
+ state = 3;
+ }
+ if ((enter == 0) && (state == 1) && (type == 3)) {
+ state = 4;
+ }
+ if ((enter == 0) && (state == 1) && (type == 4)) {
+ state = 5;
+ type = 0;
+ }
+ if ((enter == 0) && (state == 2) && (type == 0)) {
+ type = 1;
+ wait(0.2);
+ }
+ if ((enter == 0) && (state == 2) && (type == 1)) {
+ type = 2;
+ wait(0.2);
+ }
+ if ((enter == 0) && (state == 2) && (type == 2)) {
+ type = 1;
+ wait(0.2);
+ }
+ if ((enter == 0) && (state == 5) && (type == 0)) {
+ type = 1;
+ modeStatus = !modeStatus;
+ }
+ if ((enter == 0) && (state == 5) && (type == 1)) {
+ modeStatus = !modeStatus;
+ }
+}
+
+void buttonBack()
{
- if (buttonMode == 0) {
- if (state == 0) {
- state = 1;
- } else if (state == 1) {
- state = 2;
- } else {
- state = 0;
+ if ((back == 0) && (state == 1) && (type == 0)) {
+ state = 0;
+ type = 0;
+ wait(0.2);
+ }
+ if ((back == 0) && (state == 1) && ((type == 1) || (type == 2) || (type == 3) || (type == 4))) {
+ state = 1;
+ type = 0;
+ wait(0.2);
+ }
+ if ((back == 0) && (state == 2) && (type == 0)) {
+ state = 1;
+ // type = 1;
+ wait(0.2);
+ }
+ if ((back == 0) && (state == 2) && ((type == 1) || (type == 2))) {
+ state = 2;
+ type = 0;
+ wait(0.2);
+ }
+ if ((back == 0) && (state == 3)) {
+ state = 1;
+ type = 2;
+ wait(0.2);
+ }
+ if ((back == 0) && (state == 4)) {
+ state = 1;
+ type = 3;
+ wait(0.2);
+ }
+ if ((back == 0) && (state == 5)) {
+ state = 1;
+ type = 4;
+ wait(0.2);
+ }
+}
+
+void buttonUp()
+{
+ if ((up == 0) && (state == 1) && (type == 0)) {
+ type = 1;
+ wait(0.2);
+ }
+ if ((up == 0) && (state == 1) && (type == 1)) {
+ type = 2;
+ wait(0.2);
+ }
+ if ((up == 0) && (state == 1) && (type == 2)) {
+ type = 3;
+ wait(0.2);
+ }
+ if ((up == 0) && (state == 1) && (type == 3)) {
+ type = 4;
+ wait(0.2);
+ }
+ if ((up == 0) && (state == 2) && (type == 1)) {
+ low++;
+ }
+ if ((up == 0) && (state == 2) && (type == 2)) {
+ high++;
+ }
+ if ((up == 0) && (state == 3)) {
+ if (lightLevel_man < 4) {
+ lightLevel_man++;
+ }
+ }
+ if ((up == 0) && (state == 4)) {
+ if (fanLevel_man < 4) {
+ fanLevel_man++;
}
}
}
-int buttonUp(DigitalIn buttonUp, int &value)
+void buttonDown()
{
- if (buttonUp == 0) {
- value++;
+ if ((down == 0) && (state == 1) && (type == 4)) {
+ type = 3;
+ wait(0.2);
+ }
+ if ((down == 0) && (state == 1) && (type == 3)) {
+ type = 2;
+ wait(0.2);
+ }
+ if ((down == 0) && (state == 1) && (type == 2)) {
+ type = 1;
+ wait(0.2);
}
- return value;
-}
-
-int buttonDown(DigitalIn buttonDown, int &value)
-{
- if (buttonUp == 0) {
- value--;
+ if ((down == 0) && (state == 1) && (type == 1)) {
+ type = 0;
+ wait(0.2);
+ }
+ if ((down == 0) && (state == 2) && (type == 1)) {
+ low--;
+ }
+ if ((down == 0) && (state == 2) && (type == 2)) {
+ high--;
}
- return value;
+ if ((down == 0) && (state == 3)) {
+ if (lightLevel_man > 0) {
+ lightLevel_man--;
+ }
+ }
+ if ((down == 0) && (state == 4)) {
+ if (fanLevel_man > 0) {
+ fanLevel_man--;
+ }
+ }
}
-void mainScreen(TextLCD &lcd, AnalogIn &temp_sen, AnalogIn &light_sen, int &state, int &temp_val, int &light_val, int &fan_val)
+void mainScreen()
{
- int vl_temp = 0;
- float vl_light = 0;
- if (state == 0) {
- vl_temp = temp_cal(temp_sen);
- vl_light = light_cal(light_sen);
- if (temp_val != vl_temp) {
- lcd.cls();
- lcd.printf("Temp: %i\n",vl_temp);
- wait(0.1);
- temp_val = vl_temp;
- } else {
- lcd.cls();
- lcd.printf("Temp: %i\n",temp_val);
- //lcd.printf("Light: %.2f \n", light_val);
- wait(0.1);
- }
- lcd.printf("Light: %.2f \n", vl_light);
+ modeProcess();
+ buttonEnter();
+ lcd.cls();
+ lcd.printf("T %i L %i F %i \n",temp_measure, lightLevel_dis, fanLevel_dis);
+ if (modeStatus) {
+ lcd.printf("Auto mode: ON\n");
+ } else {
+ lcd.printf("Auto mode: OFF\n");
}
- if (state == 1) {
-
-
+ wait(0.2);
+}
+void optionScreen()
+{
+ if(type == 0) {
+ lcd.cls();
+ lcd.printf(" Set Temp\n");
+ lcd.printf(" Set Light");
+ wait(0.2);
+ buttonBack();
+ buttonUp();
}
-}
-void optionScreen(TextLCD &lcd, int &state, int &pointer, DigitalIn &up, DigitalIn &down)
-{
- if(pointer == 0) {
+ if (type == 1) {
+ buttonEnter();
+ buttonUp();
+ buttonDown();
+ buttonBack();
lcd.cls();
lcd.printf("o Set Temp\n");
lcd.printf(" Set Light");
wait(0.2);
}
- if (up == 0 && down == 1 && pointer == 0) {
- pointer++; // pointer = 1
+ if (type == 2) {
lcd.cls();
lcd.printf(" Set Temp\n");
lcd.printf("o Set Light");
wait(0.2);
- }
- if (up == 0 && down == 1 && pointer == 1) {
- pointer++; // pointer = 2
- lcd.cls();
- lcd.printf("o Set Fan\n");
- lcd.printf(" Set Bluetooth");
- wait(0.2);
+ buttonEnter();
+ buttonUp();
+ buttonDown();
+ buttonBack();
}
- if (up == 0 && down == 1 && pointer == 2) {
- pointer++; // pointer = 3
- lcd.cls();
- lcd.printf(" Set Fan\n");
- lcd.printf("o Set Bluetooth");
- wait(0.2);
- }
- if (up == 0 && down == 1 && pointer == 3) {
- lcd.cls();
- lcd.printf(" Set Fan\n");
- lcd.printf("o Set Bluetooth");
- wait(0.2);
- }
- if (up == 1 && down == 0 && pointer == 3) {
- pointer--; // pointer = 2
+ if (type == 3) {
lcd.cls();
lcd.printf("o Set Fan\n");
- lcd.printf(" Set Bluetooth");
+ lcd.printf(" Set Mode");
wait(0.2);
+ buttonEnter();
+ buttonUp();
+ buttonDown();
+ buttonBack();
+ }
+ if (type == 4) {
+ lcd.cls();
+ lcd.printf(" Set Fan\n");
+ lcd.printf("o Set Mode");
+ wait(0.2);
+ buttonEnter();
+ buttonUp();
+ buttonDown();
+ buttonBack();
}
- if (up == 1 && down == 0 && pointer == 2) {
- pointer--; // pointer = 1
+}
+
+void temperatureScreen()
+{
+ if (type == 0) {
lcd.cls();
- lcd.printf(" Set Temp\n");
- lcd.printf("o Set Light");
+ lcd.printf("Temp setup\n");
+ lcd.printf(" Low:%i High:%i", low, high);
wait(0.2);
+ buttonEnter();
+ buttonBack();
+ }
+ if (type == 1) {
+ lcd.cls();
+ lcd.printf("Temp setup\n");
+ lcd.printf("oLow:%i High:%i", low, high);
+ wait(0.2);
+ buttonEnter();
+ buttonUp();
+ buttonDown();
+ buttonBack();
}
- if (up == 1 && down == 0 && pointer == 1) {
- pointer--; // pointer = 1
+ if (type == 2) {
lcd.cls();
- lcd.printf("o Set Temp\n");
- lcd.printf(" Set Light");
+ lcd.printf("Temp setup\n");
+ lcd.printf(" Low:%i oHigh:%i", low, high);
wait(0.2);
+ buttonEnter();
+ buttonUp();
+ buttonDown();
+ buttonBack();
}
- if (up == 1 && down == 0 && pointer == 0) {
- lcd.cls();
- lcd.printf("o Set Temp\n");
- lcd.printf(" Set Light");
- wait(0.2);
+}
+
+void lightScreen()
+{
+ lcd.cls();
+ lcd.printf("Light setup\n");
+ lcd.printf("Brightness: %i", lightLevel_man);
+ wait(0.2);
+ buttonUp();
+ buttonDown();
+ buttonBack();
+}
+
+void fanScreen()
+{
+ lcd.cls();
+ lcd.printf("Fan setup\n");
+ lcd.printf("Speed: %i", fanLevel_man);
+ wait(0.2);
+ buttonUp();
+ buttonDown();
+ buttonBack();
+}
+void modeScreen()
+{
+ lcd.cls();
+ lcd.printf("Mode setup\n");
+ if (modeStatus) {
+ lcd.printf("Auto: ON");
+ } else {
+ lcd.printf("Auto: OFF");
}
-}
\ No newline at end of file
+ wait(0.2);
+ buttonEnter();
+ buttonBack();
+}