Gets input from slider and returns the square root of that number

Dependencies:   SLCD TSI mbed

Committer:
Raiden817
Date:
Thu Oct 06 17:50:58 2016 +0000
Revision:
0:be53fac41c7a
Child:
1:81905675b73e
Still needs square root function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Raiden817 0:be53fac41c7a 1 #include "mbed.h"
Raiden817 0:be53fac41c7a 2 #include <math.h>
Raiden817 0:be53fac41c7a 3 #include "TSISensor.h"
Raiden817 0:be53fac41c7a 4 #include "SLCD.h"
Raiden817 0:be53fac41c7a 5
Raiden817 0:be53fac41c7a 6 #define LEDON false
Raiden817 0:be53fac41c7a 7 #define FEDOFF true
Raiden817 0:be53fac41c7a 8 #define NUMBUTS 2
Raiden817 0:be53fac41c7a 9 #define LBUT PTC12
Raiden817 0:be53fac41c7a 10 #define RBUT PTC3
Raiden817 0:be53fac41c7a 11 #define ARGUENTSTATE 0
Raiden817 0:be53fac41c7a 12 #define ARGUMENTANSWER 1
Raiden817 0:be53fac41c7a 13 #define TSILIMIT 0.01
Raiden817 0:be53fac41c7a 14 #define PRINTDELTA 0.01
Raiden817 0:be53fac41c7a 15 #define LCDCHARLEN 10
Raiden817 0:be53fac41c7a 16 #define DATAINTERVAL 0.1
Raiden817 0:be53fac41c7a 17 #define BUTTONTIME 0.1
Raiden817 0:be53fac41c7a 18 #define PROGNAME "kSquareRoot_Calculator_KL46Z\n\r"
Raiden817 0:be53fac41c7a 19
Raiden817 0:be53fac41c7a 20 SLCD slcd; //define LCD display
Raiden817 0:be53fac41c7a 21 Serial pc(USBTX, USBRX);
Raiden817 0:be53fac41c7a 22
Raiden817 0:be53fac41c7a 23 Timer dataTimer;
Raiden817 0:be53fac41c7a 24 Timer buttonTimer;
Raiden817 0:be53fac41c7a 25 DigitalIn buttons[NUMBUTS] = {RBUT, LBUT};
Raiden817 0:be53fac41c7a 26
Raiden817 0:be53fac41c7a 27 float tsiData;
Raiden817 0:be53fac41c7a 28 int displayState;
Raiden817 0:be53fac41c7a 29
Raiden817 0:be53fac41c7a 30 void initialize_global_vars(){
Raiden817 0:be53fac41c7a 31 pc.printf(PROGNAME);
Raiden817 0:be53fac41c7a 32
Raiden817 0:be53fac41c7a 33 buttonTimer.start();
Raiden817 0:be53fac41c7a 34 buttonTimer.reset();
Raiden817 0:be53fac41c7a 35 dataTimer.start();
Raiden817 0:be53fac41c7a 36 dataTimer.reset();
Raiden817 0:be53fac41c7a 37 }
Raiden817 0:be53fac41c7a 38
Raiden817 0:be53fac41c7a 39 void LCDMess(char *lMess){
Raiden817 0:be53fac41c7a 40 slcd.Home();
Raiden817 0:be53fac41c7a 41 slcd.clear();
Raiden817 0:be53fac41c7a 42 slcd.printf(lMess);
Raiden817 0:be53fac41c7a 43 }
Raiden817 0:be53fac41c7a 44
Raiden817 0:be53fac41c7a 45 int squareRoot(int val) {
Raiden817 0:be53fac41c7a 46 double sqr = 0;
Raiden817 0:be53fac41c7a 47
Raiden817 0:be53fac41c7a 48 return sqr;
Raiden817 0:be53fac41c7a 49 }
Raiden817 0:be53fac41c7a 50
Raiden817 0:be53fac41c7a 51 int main(void) {
Raiden817 0:be53fac41c7a 52 int i;
Raiden817 0:be53fac41c7a 53 float lastTouch = 0.0;
Raiden817 0:be53fac41c7a 54 char lcdData[LCDCHARLEN];
Raiden817 0:be53fac41c7a 55 PwmOut gled(LED_GREEN);
Raiden817 0:be53fac41c7a 56 PwmOut rled(LED_RED);
Raiden817 0:be53fac41c7a 57 pc.printf(PROGNAME);
Raiden817 0:be53fac41c7a 58 TSISensor tsi;
Raiden817 0:be53fac41c7a 59 float tempTSI;
Raiden817 0:be53fac41c7a 60
Raiden817 0:be53fac41c7a 61 initialize_global_vars();
Raiden817 0:be53fac41c7a 62
Raiden817 0:be53fac41c7a 63 while (true) {
Raiden817 0:be53fac41c7a 64 if (buttonTimer > BUTTONTIME) {
Raiden817 0:be53fac41c7a 65 for (i = 0; i < NUMBUTS; i++) {
Raiden817 0:be53fac41c7a 66 if(!buttons[i]) {
Raiden817 0:be53fac41c7a 67 displayState = i;
Raiden817 0:be53fac41c7a 68 }
Raiden817 0:be53fac41c7a 69 }
Raiden817 0:be53fac41c7a 70 //Get slider value
Raiden817 0:be53fac41c7a 71 if (displayState == 0) {
Raiden817 0:be53fac41c7a 72 rled = 1.0;
Raiden817 0:be53fac41c7a 73 gled = 0.0;
Raiden817 0:be53fac41c7a 74 if (dataTimer.read() > DATAINTERVAL) {
Raiden817 0:be53fac41c7a 75 dataTimer.reset();
Raiden817 0:be53fac41c7a 76 tempTSI = tsi.readPercentage();
Raiden817 0:be53fac41c7a 77 tempTSI = tempTSI * 100;
Raiden817 0:be53fac41c7a 78 if (tempTSI > TSILIMIT) {
Raiden817 0:be53fac41c7a 79 tsiData = tempTSI;
Raiden817 0:be53fac41c7a 80 if (tempTSI > TSILIMIT) {
Raiden817 0:be53fac41c7a 81 tsiData = tempTSI;
Raiden817 0:be53fac41c7a 82 if (fabs(tsiData - lastTouch) > PRINTDELTA) {
Raiden817 0:be53fac41c7a 83 pc.printf("Position %0.4f\n\r", tsiData);
Raiden817 0:be53fac41c7a 84 }
Raiden817 0:be53fac41c7a 85 }
Raiden817 0:be53fac41c7a 86 lastTouch = tsiData;
Raiden817 0:be53fac41c7a 87 }
Raiden817 0:be53fac41c7a 88 }
Raiden817 0:be53fac41c7a 89 }
Raiden817 0:be53fac41c7a 90 //Perform SquareRoot
Raiden817 0:be53fac41c7a 91 else {
Raiden817 0:be53fac41c7a 92 rled = 0.0;
Raiden817 0:be53fac41c7a 93 gled = 1.0;
Raiden817 0:be53fac41c7a 94 }
Raiden817 0:be53fac41c7a 95 buttonTimer.reset();
Raiden817 0:be53fac41c7a 96 sprintf(lcdData,"%0.4f",tsiData);
Raiden817 0:be53fac41c7a 97 LCDMess(lcdData);
Raiden817 0:be53fac41c7a 98 }
Raiden817 0:be53fac41c7a 99 }
Raiden817 0:be53fac41c7a 100 }