In this article we look at a ambient light digital 16-bit resolution sensor – this time its the VEML7700 and we will connect it to our Arduino Uno
This is the sensor that I bought for this
Lets look at some information regarding the sensor from the manufacturer
The VEML7700 is a high accuracy ambient light digital 16-bit resolution sensor. It includes a high sensitive photo diode, a low noise amplifier, a 16-bit A/D converter and supports an easy to use I2C bus communication interface.
The ambient light result is as digital value available
FEATURES
Integrated modules: ambient light sensor (ALS)
Supply voltage range VDD: 2.5 V to 3.6 V
Communication via I2C interface
Floor life: 72 h, MSL 4, according to J-STD-020
Low shut down current consumption: typ. 0.5 μA
AMBIENT LIGHT FUNCTION
Filtron TM technology adaption: close to real human eye response
O-Trim TM technology adoption: ALS output tolerance≤ 10 %
16-bit dynamic range for ambient light detection from 0 lx to about 120 klx with resolution down to 0.0036 lx/ct,supports low transmittance (dark) lens design
100 Hz and 120 Hz flicker noise rejection
Excellent temperature compensation
High dynamic detection resolution
Software shutdown mode control
Parts Required
Once again for ease of use I connect an sensor shield connected to my to Arduino Uno and then connect the sensor to that
Name | Link |
Arduino Uno | UNO R3 CH340G/ATmega328P, compatible for Arduino UNO |
VEML7700 | Adafruit 4162 VEML7700 Lux Sensor – I2C Light Sensor |
Connecting wire | Free shipping Dupont line 120pcs 20cm male to male + male to female and female to female jumper wire |
sensor shield | Expansion IO Board Sensor Shield |
Schematic/Connection
Code Example
This uses the library from https://github.com/DFRobot/DFRobot_VEML7700
I tried an Adafruit one – could not get the library to work, various errors. The one above worked out of the box
[codesyntax lang=”cpp”]
#include <Wire.h> #include "DFRobot_VEML7700.h" DFRobot_VEML7700 als; void setup() { Serial.begin(9600); als.begin(); } void loop() { float lux; als.getALSLux(lux); Serial.print("Lux:"); Serial.print(lux); Serial.println(" lx"); delay(200); }
[/codesyntax]
Output
Open the serial monitor and you should see something like this, shine light, cover the sensor to change the lux values
Links
https://www.vishay.com/docs/84286/veml7700.pdf