Test Demo for Ambient Light Sensor

Dependencies:   SLCD mbed

main.cpp

Committer:
ceojoe1
Date:
2016-01-27
Revision:
0:75c2c5adf52a

File content as of revision 0:75c2c5adf52a:

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

#define PROGNAME "LightSense_K146z_PWM v1\n\r"
#define DATATIME 400 //milliseconds
#define LCDLEN 10
#define LIGHTSENSORPORT PTE22

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

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

int main()
{
    PwmOut greenColor(LED_GREEN);
    PwmOut redColor(LED_RED);
    AnalogIn LightSensor(LIGHTSENSORPORT);
    float lightData;
    char lcdData[LCDLEN];
    float max;
    float min = 1.0; 
    int timeToChangeDF = DATATIME;
    // set up tier for next step of Duty Factor timing
    LEDTimer.start();
    LEDTimer.reset();
    pc.printf(PROGNAME);
    
    while (true) {
      if(LEDTimer.read_ms() > timeToChangeDF) { //check for timer
      lightData = (1.0 - LightSensor.read());
      /*
       * IF LIGHT DATA > MAX, 
         MAX VALUE BECOMES THE CURRENT LIGHT DATA
      */
      if (lightData > max)
      {
          max = lightData;
      }
      if(lightData < min)
      {
          min = lightData;
      }
      pc.printf("MAX: %4.3f\r\n", max);
      pc.printf("MIN: %4.3f\r\n", min); 
      greenColor.write(1.0 - lightData);
      redColor.write(1.0 - lightData);
      sprintf(lcdData, "%4.3f", lightData);
      LCDMess(lcdData);
      pc.printf("%4.3f\r\n", lightData);
      timeToChangeDF = DATATIME;
      LEDTimer.reset();
    }
}
}