ES_SSD541_HW_52b

Dependencies:   SLCD TSI mbed

Fork of lightsense_kl46z_basic by Stanley Cohen

Committer:
eseifert
Date:
Mon Sep 19 12:20:03 2016 +0000
Revision:
10:8f6e61ccc23e
Parent:
9:f619cdaa7a65
ES_SSD541_HW_52b;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
scohennm 0:e23fffd4b9a7 1 #include "mbed.h"
scohennm 1:51f8c2b04ce2 2 #include "SLCD.h"
eseifert 10:8f6e61ccc23e 3 #include "TSISensor.h"
scohennm 3:64e28ee5719b 4
scohennm 9:f619cdaa7a65 5 #define PROGNAME "lightsense_kl46z_basic v1\n\r"
eseifert 10:8f6e61ccc23e 6 #define DATATIME 400 // milliseconds
scohennm 1:51f8c2b04ce2 7 #define LCDLEN 10
scohennm 8:3b19ecdc4261 8 #define LIGHTSENSORPORT PTE22
eseifert 10:8f6e61ccc23e 9 #define TSILIMIT 0.99
eseifert 10:8f6e61ccc23e 10 #define LBTN PTC12 // port addresses for buttons
eseifert 10:8f6e61ccc23e 11 #define RBTN PTC3
eseifert 10:8f6e61ccc23e 12 #define BUTTONTIME 0.2
eseifert 10:8f6e61ccc23e 13 #define NUMBUTS 2
scohennm 0:e23fffd4b9a7 14
scohennm 4:bd42ab18979b 15 SLCD slcd; //define LCD display globally define
scohennm 1:51f8c2b04ce2 16 Serial pc(USBTX, USBRX);
scohennm 8:3b19ecdc4261 17 Timer LEDTimer;
eseifert 10:8f6e61ccc23e 18 Timer ButtonTimer;
eseifert 10:8f6e61ccc23e 19 TSISensor tsi;
scohennm 1:51f8c2b04ce2 20
eseifert 10:8f6e61ccc23e 21 float lightData_f;
eseifert 10:8f6e61ccc23e 22 float tsidata;
scohennm 0:e23fffd4b9a7 23
eseifert 10:8f6e61ccc23e 24 void LCDMess(char *lMess)
eseifert 10:8f6e61ccc23e 25 {
eseifert 10:8f6e61ccc23e 26 slcd.Home();
eseifert 10:8f6e61ccc23e 27 slcd.clear();
eseifert 10:8f6e61ccc23e 28 slcd.printf(lMess);
eseifert 10:8f6e61ccc23e 29 }
scohennm 9:f619cdaa7a65 30
eseifert 10:8f6e61ccc23e 31 int main()
eseifert 10:8f6e61ccc23e 32 {
scohennm 8:3b19ecdc4261 33 AnalogIn LightSensor(LIGHTSENSORPORT);
eseifert 10:8f6e61ccc23e 34 DigitalIn buttons[NUMBUTS] = {LBTN, RBTN};
eseifert 10:8f6e61ccc23e 35
eseifert 10:8f6e61ccc23e 36 unsigned lightData_u;
scohennm 1:51f8c2b04ce2 37 char lcdData[LCDLEN];
eseifert 10:8f6e61ccc23e 38 bool showRawData = false;
scohennm 8:3b19ecdc4261 39 int timeToChangeDF = DATATIME;
eseifert 10:8f6e61ccc23e 40 int i = 0;
eseifert 10:8f6e61ccc23e 41
scohennm 3:64e28ee5719b 42 LEDTimer.start();
scohennm 3:64e28ee5719b 43 LEDTimer.reset();
eseifert 10:8f6e61ccc23e 44 ButtonTimer.start();
eseifert 10:8f6e61ccc23e 45 ButtonTimer.reset();
scohennm 1:51f8c2b04ce2 46 pc.printf(PROGNAME);
eseifert 10:8f6e61ccc23e 47 PwmOut gled(LED_GREEN);
eseifert 10:8f6e61ccc23e 48 PwmOut rled(LED_RED);
eseifert 10:8f6e61ccc23e 49
eseifert 10:8f6e61ccc23e 50 while(true) {
eseifert 10:8f6e61ccc23e 51 tsidata = tsi.readPercentage();
eseifert 10:8f6e61ccc23e 52
eseifert 10:8f6e61ccc23e 53 for (i=0; i<NUMBUTS; i++) { // index will be 0 or 1
eseifert 10:8f6e61ccc23e 54 if(!buttons[i]) {
eseifert 10:8f6e61ccc23e 55 showRawData = i;
eseifert 10:8f6e61ccc23e 56 } // if ! buttons
eseifert 10:8f6e61ccc23e 57 }// for loop to look at buttons
eseifert 10:8f6e61ccc23e 58 ButtonTimer.reset();
eseifert 10:8f6e61ccc23e 59
eseifert 10:8f6e61ccc23e 60 if (LEDTimer.read_ms() > timeToChangeDF) { // check for timer time out transtion
eseifert 10:8f6e61ccc23e 61 lightData_f = (1 - LightSensor.read()); //
eseifert 10:8f6e61ccc23e 62 lightData_u = (LightSensor.read_u16());
eseifert 10:8f6e61ccc23e 63 if(showRawData == true) {
eseifert 10:8f6e61ccc23e 64 sprintf(lcdData,"%4.3f",lightData_f);
eseifert 10:8f6e61ccc23e 65 } else {
eseifert 10:8f6e61ccc23e 66 lightData_u % 100;
eseifert 10:8f6e61ccc23e 67 if(tsidata > .75) {
eseifert 10:8f6e61ccc23e 68 lightData_u / 10;
eseifert 10:8f6e61ccc23e 69 } else {
eseifert 10:8f6e61ccc23e 70 lightData_u * 10;
eseifert 10:8f6e61ccc23e 71 }
eseifert 10:8f6e61ccc23e 72 sprintf(lcdData,"%u",lightData_u);
eseifert 10:8f6e61ccc23e 73 }
eseifert 10:8f6e61ccc23e 74 LCDMess(lcdData);
eseifert 10:8f6e61ccc23e 75 gled = lightData_f;
eseifert 10:8f6e61ccc23e 76 rled = lightData_f;
scohennm 8:3b19ecdc4261 77 timeToChangeDF = DATATIME;
scohennm 8:3b19ecdc4261 78 LEDTimer.reset();
eseifert 10:8f6e61ccc23e 79 }
eseifert 10:8f6e61ccc23e 80 }// end while
eseifert 10:8f6e61ccc23e 81 }