reading light sensor and out put between analog and digital

Dependencies:   SLCD mbed

Fork of lightsense_kl46z_basic by AnnaLouise Martinez

main.cpp

Committer:
annalou
Date:
2016-09-19
Revision:
11:75596fecb8d5
Parent:
10:4fa8bf6e3ade

File content as of revision 11:75596fecb8d5:

#include "mbed.h"
#include "SLCD.h"


#define PROGNAME "lightsense_kl46z_basic v1\n\r"
#define DATATIME 400 // milliseconds
#define LCDLEN 10
#define LIGHTSENSORPORT PTE22
#define LBUT PTC12  // port addresses for buttons
#define RBUT PTC3




SLCD slcd; //define LCD display globally define
Serial pc(USBTX, USBRX);
Timer LEDTimer;

DigitalIn buttons[2] = {RBUT, LBUT};

void LCDMess(char *lMess)
{
    slcd.Home();
    slcd.clear();
    slcd.printf(lMess);
}


int main()
{
    AnalogIn LightSensor(LIGHTSENSORPORT);
    float lightData;
    char lcdData[LCDLEN];
    PwmOut gled(LED_GREEN);
    PwmOut rled(LED_RED);
    unsigned short lightWord;
    bool lButON = false;

    int timeToChangeDF = DATATIME;
    LEDTimer.start();
    LEDTimer.reset();
    pc.printf(PROGNAME);

    while(true) {
        if (LEDTimer.read_ms() > timeToChangeDF) { // check for timer time out transtion
            lightData = (1.0 - LightSensor.read()); // show as increasiing with increasing intensity
            sprintf(lcdData,"%4.3f",lightData);
            LCDMess(lcdData);
            timeToChangeDF = DATATIME;
            //pc.printf(lcdData);
            rled = lightData;
            gled = lightData;
            
            //using if to switch between the RAW and Float output
            if(lButON == true)
            {
                lightWord = LightSensor.read_u16();
                pc.printf("LS => %10d \r\n",  lightWord);
                lButON = false;
            }
            else
            {
                lightData = (1.0 - LightSensor.read());
                pc.printf("ls => %1.3f \r\n", lightData); 
                lButON = true;   
            }
            LEDTimer.reset();
        }
    }// end while
}