kl46z, lux calc

Dependencies:   SLCD mbed

Fork of lightsense_kl46z_PWM_simple by Stanley Cohen

Committer:
scohennm
Date:
Mon Feb 06 18:59:14 2017 +0000
Revision:
9:96ddab3435d2
Parent:
8:ea818c9220fc
measure luc

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"
scohennm 1:51f8c2b04ce2 3
scohennm 3:64e28ee5719b 4
scohennm 8:ea818c9220fc 5 #define PROGNAME "lightsense_kl46z_PWM v1\n\r"
scohennm 8:ea818c9220fc 6 #define DATATIME 400 // milliseconds
scohennm 1:51f8c2b04ce2 7 #define LCDLEN 10
scohennm 8:ea818c9220fc 8 #define LIGHTSENSORPORT PTE22
scohennm 9:96ddab3435d2 9 #define LUXSCALING 1650 // full scale lux 500 lux/volt
scohennm 9:96ddab3435d2 10 #define LIMTMESSAGE "OVER"
scohennm 9:96ddab3435d2 11 #define FULLSCALE 1000.0
scohennm 6:710e18c552f5 12
scohennm 6:710e18c552f5 13
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:ea818c9220fc 17 Timer LEDTimer;
scohennm 1:51f8c2b04ce2 18
scohennm 1:51f8c2b04ce2 19 void LCDMess(char *lMess){
scohennm 1:51f8c2b04ce2 20 slcd.Home();
scohennm 1:51f8c2b04ce2 21 slcd.clear();
scohennm 1:51f8c2b04ce2 22 slcd.printf(lMess);
scohennm 1:51f8c2b04ce2 23 }
scohennm 0:e23fffd4b9a7 24
scohennm 0:e23fffd4b9a7 25 int main() {
scohennm 8:ea818c9220fc 26 PwmOut greenColor(LED_GREEN);
scohennm 8:ea818c9220fc 27 PwmOut redColor(LED_RED);
scohennm 8:ea818c9220fc 28 AnalogIn LightSensor(LIGHTSENSORPORT);
scohennm 6:710e18c552f5 29 float lightData;
scohennm 9:96ddab3435d2 30 float luxData;
scohennm 1:51f8c2b04ce2 31 char lcdData[LCDLEN];
scohennm 4:bd42ab18979b 32
scohennm 8:ea818c9220fc 33 int timeToChangeDF = DATATIME;
scohennm 3:64e28ee5719b 34 // set up timer for next step of Duty Factor timing
scohennm 3:64e28ee5719b 35 LEDTimer.start();
scohennm 3:64e28ee5719b 36 LEDTimer.reset();
scohennm 1:51f8c2b04ce2 37 pc.printf(PROGNAME);
scohennm 1:51f8c2b04ce2 38
scohennm 3:64e28ee5719b 39
scohennm 8:ea818c9220fc 40 while(true) {
scohennm 8:ea818c9220fc 41 if (LEDTimer.read_ms() > timeToChangeDF){ // check for timer time out transtion
scohennm 9:96ddab3435d2 42 // start out assuming over 1000 lux
scohennm 9:96ddab3435d2 43 sprintf(lcdData,"%s",LIMTMESSAGE);
scohennm 8:ea818c9220fc 44 lightData = (1.0 - LightSensor.read()); // show as increasiing with increasing intensity
scohennm 9:96ddab3435d2 45 luxData = lightData * LUXSCALING;
scohennm 9:96ddab3435d2 46
scohennm 8:ea818c9220fc 47 greenColor.write(1.0- lightData);
scohennm 8:ea818c9220fc 48 redColor.write(1.0-lightData);
scohennm 9:96ddab3435d2 49 if( luxData < FULLSCALE){
scohennm 9:96ddab3435d2 50 sprintf(lcdData,"%4.0f",luxData);
scohennm 9:96ddab3435d2 51 }
scohennm 8:ea818c9220fc 52 LCDMess(lcdData);
scohennm 9:96ddab3435d2 53 pc.printf("%4.3f" "%4.0f\r\n",lightData,luxData);
scohennm 8:ea818c9220fc 54 timeToChangeDF = DATATIME;
scohennm 8:ea818c9220fc 55 LEDTimer.reset();
scohennm 8:ea818c9220fc 56 }
scohennm 4:bd42ab18979b 57 }// emd while
scohennm 4:bd42ab18979b 58 }