reading light sensor and out put between analog and digital

Dependencies:   SLCD mbed

Fork of lightsense_kl46z_basic by AnnaLouise Martinez

Committer:
annalou
Date:
Mon Sep 19 04:07:39 2016 +0000
Revision:
11:75596fecb8d5
Parent:
10:4fa8bf6e3ade
AMartSSD341_HW5.2Pt2

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 9:f619cdaa7a65 5 #define PROGNAME "lightsense_kl46z_basic v1\n\r"
scohennm 8:3b19ecdc4261 6 #define DATATIME 400 // milliseconds
scohennm 1:51f8c2b04ce2 7 #define LCDLEN 10
scohennm 8:3b19ecdc4261 8 #define LIGHTSENSORPORT PTE22
annalou 11:75596fecb8d5 9 #define LBUT PTC12 // port addresses for buttons
annalou 11:75596fecb8d5 10 #define RBUT PTC3
annalou 11:75596fecb8d5 11
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:3b19ecdc4261 17 Timer LEDTimer;
scohennm 1:51f8c2b04ce2 18
annalou 11:75596fecb8d5 19 DigitalIn buttons[2] = {RBUT, LBUT};
annalou 11:75596fecb8d5 20
annalou 10:4fa8bf6e3ade 21 void LCDMess(char *lMess)
annalou 10:4fa8bf6e3ade 22 {
annalou 10:4fa8bf6e3ade 23 slcd.Home();
annalou 10:4fa8bf6e3ade 24 slcd.clear();
annalou 10:4fa8bf6e3ade 25 slcd.printf(lMess);
annalou 10:4fa8bf6e3ade 26 }
scohennm 0:e23fffd4b9a7 27
scohennm 9:f619cdaa7a65 28
annalou 10:4fa8bf6e3ade 29 int main()
annalou 10:4fa8bf6e3ade 30 {
scohennm 8:3b19ecdc4261 31 AnalogIn LightSensor(LIGHTSENSORPORT);
annalou 10:4fa8bf6e3ade 32 float lightData;
scohennm 1:51f8c2b04ce2 33 char lcdData[LCDLEN];
annalou 10:4fa8bf6e3ade 34 PwmOut gled(LED_GREEN);
annalou 10:4fa8bf6e3ade 35 PwmOut rled(LED_RED);
annalou 11:75596fecb8d5 36 unsigned short lightWord;
annalou 11:75596fecb8d5 37 bool lButON = false;
annalou 10:4fa8bf6e3ade 38
scohennm 8:3b19ecdc4261 39 int timeToChangeDF = DATATIME;
scohennm 3:64e28ee5719b 40 LEDTimer.start();
scohennm 3:64e28ee5719b 41 LEDTimer.reset();
scohennm 1:51f8c2b04ce2 42 pc.printf(PROGNAME);
annalou 10:4fa8bf6e3ade 43
annalou 10:4fa8bf6e3ade 44 while(true) {
annalou 10:4fa8bf6e3ade 45 if (LEDTimer.read_ms() > timeToChangeDF) { // check for timer time out transtion
annalou 10:4fa8bf6e3ade 46 lightData = (1.0 - LightSensor.read()); // show as increasiing with increasing intensity
annalou 10:4fa8bf6e3ade 47 sprintf(lcdData,"%4.3f",lightData);
annalou 10:4fa8bf6e3ade 48 LCDMess(lcdData);
scohennm 8:3b19ecdc4261 49 timeToChangeDF = DATATIME;
annalou 11:75596fecb8d5 50 //pc.printf(lcdData);
annalou 10:4fa8bf6e3ade 51 rled = lightData;
annalou 10:4fa8bf6e3ade 52 gled = lightData;
annalou 11:75596fecb8d5 53
annalou 11:75596fecb8d5 54 //using if to switch between the RAW and Float output
annalou 11:75596fecb8d5 55 if(lButON == true)
annalou 11:75596fecb8d5 56 {
annalou 11:75596fecb8d5 57 lightWord = LightSensor.read_u16();
annalou 11:75596fecb8d5 58 pc.printf("LS => %10d \r\n", lightWord);
annalou 11:75596fecb8d5 59 lButON = false;
annalou 11:75596fecb8d5 60 }
annalou 11:75596fecb8d5 61 else
annalou 11:75596fecb8d5 62 {
annalou 11:75596fecb8d5 63 lightData = (1.0 - LightSensor.read());
annalou 11:75596fecb8d5 64 pc.printf("ls => %1.3f \r\n", lightData);
annalou 11:75596fecb8d5 65 lButON = true;
annalou 11:75596fecb8d5 66 }
scohennm 8:3b19ecdc4261 67 LEDTimer.reset();
annalou 10:4fa8bf6e3ade 68 }
annalou 11:75596fecb8d5 69 }// end while
scohennm 4:bd42ab18979b 70 }