This program demonstrates ambient light sensing on the QW Shields.

Dependencies:   mbed

Components / QW SIGFOX Development Kit
The QW ecosystem is designed to rapidly explore the Sigfox network.

Committer:
quicksand
Date:
Thu Nov 05 09:40:10 2015 +0000
Revision:
0:6c17d1a79f75
This program demonstrates the ambient light sensing functionality of the VCNL4010 on the QW Shields.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
quicksand 0:6c17d1a79f75 1 #include "mbed.h"
quicksand 0:6c17d1a79f75 2 #include "VCNL4010.h"
quicksand 0:6c17d1a79f75 3
quicksand 0:6c17d1a79f75 4 DigitalOut LED_0 (PB_6);
quicksand 0:6c17d1a79f75 5 DigitalOut LED_1 (PA_7);
quicksand 0:6c17d1a79f75 6 DigitalOut LED_2 (PA_6);
quicksand 0:6c17d1a79f75 7 DigitalOut LED_3 (PA_5);
quicksand 0:6c17d1a79f75 8
quicksand 0:6c17d1a79f75 9 //Virtual serial port over USB
quicksand 0:6c17d1a79f75 10 Serial pc(USBTX, USBRX);
quicksand 0:6c17d1a79f75 11 Serial modem(PA_9, PA_10);
quicksand 0:6c17d1a79f75 12
quicksand 0:6c17d1a79f75 13 // configure VCNL4010
quicksand 0:6c17d1a79f75 14 VCNL40x0 VCNL40x0_Device (PB_9, PB_8, VCNL40x0_ADDRESS); // Define SDA, SCL pin and I2C address
quicksand 0:6c17d1a79f75 15
quicksand 0:6c17d1a79f75 16
quicksand 0:6c17d1a79f75 17 int main() {
quicksand 0:6c17d1a79f75 18
quicksand 0:6c17d1a79f75 19 LED_0 = 1;
quicksand 0:6c17d1a79f75 20 LED_1 = 1;
quicksand 0:6c17d1a79f75 21 LED_2 = 1;
quicksand 0:6c17d1a79f75 22 LED_3 = 1;
quicksand 0:6c17d1a79f75 23
quicksand 0:6c17d1a79f75 24 unsigned char ID=0;
quicksand 0:6c17d1a79f75 25 unsigned int AmbiValue=0;
quicksand 0:6c17d1a79f75 26
quicksand 0:6c17d1a79f75 27 // print information on screen
quicksand 0:6c17d1a79f75 28 pc.printf("\n\n VCNL4010 Proximity/Ambient Light Sensor");
quicksand 0:6c17d1a79f75 29 pc.printf("\n Read Ambillight on demand in endless loop");
quicksand 0:6c17d1a79f75 30
quicksand 0:6c17d1a79f75 31 VCNL40x0_Device.ReadID (&ID); // Read VCNL40x0 product ID revision register
quicksand 0:6c17d1a79f75 32 pc.printf("\n\n Product ID Revision Register: %d", ID);
quicksand 0:6c17d1a79f75 33
quicksand 0:6c17d1a79f75 34 wait_ms(3000); // wait 3s (only for display)
quicksand 0:6c17d1a79f75 35
quicksand 0:6c17d1a79f75 36 while(1) {
quicksand 0:6c17d1a79f75 37 VCNL40x0_Device.ReadAmbiOnDemand (&AmbiValue); // read ambi value on demand
quicksand 0:6c17d1a79f75 38 pc.printf("Ambient light: %5.0i cts \tIlluminance: %7.2f lx\r", AmbiValue, AmbiValue/4.0);
quicksand 0:6c17d1a79f75 39 if(AmbiValue < 5000) LED_3 = 0;
quicksand 0:6c17d1a79f75 40 else LED_3 = 1;
quicksand 0:6c17d1a79f75 41 if(AmbiValue < 4000) LED_2 = 0;
quicksand 0:6c17d1a79f75 42 else LED_2 = 1;
quicksand 0:6c17d1a79f75 43 if(AmbiValue < 3000) LED_1 = 0;
quicksand 0:6c17d1a79f75 44 else LED_1 = 1;
quicksand 0:6c17d1a79f75 45 if(AmbiValue < 2000) LED_0 = 0;
quicksand 0:6c17d1a79f75 46 else LED_0 = 1;
quicksand 0:6c17d1a79f75 47 }
quicksand 0:6c17d1a79f75 48 }