Using the LTR390 with Arduino is a simple matter of wiring up the sensor to your Arduino-compatible microcontroller, installing the Adafruit LTR390 library we've written, and running the provided example code.
I2C Wiring
Here is how to wire up the sensor using one of the STEMMA QT connectors. The examples show a Metro but wiring will work the same for an Arduino or other compatible board.
- Connect board VIN (red wire) to Arduino 5V if you are running a 5V board Arduino (Uno, etc.). If your board is 3V, connect to that instead.
- Connect board GND (black wire) to Arduino GND
- Connect board SCL (yellow wire) to Arduino SCL
- Connect board SDA (blue wire) to Arduino SDA
Here is how to wire the sensor to a board using a solderless breadboard:
- Connect board VIN (red wire) to Arduino 5V if you are running a 5V board Arduino (Uno, etc.). If your board is 3V, connect to that instead.
- Connect board GND (black wire) to Arduino GND
- Connect board SCL (yellow wire) to Arduino SCL
- Connect board SDA (blue wire) to Arduino SDA
Library Installation
You can install the Adafruit LTR390 library for Arduino using the Library Manager in the Arduino IDE.
Click the Manage Libraries ... menu item, search for Adafruit LTR390 , and select the Adafruit LTR390 library:
Next, follow the same process for the Adafruit BusIO library.
After opening the demo file, upload to your Arduino wired up to the sensor. Once you upload the code, you will see the UV data values being printed when you open the Serial Monitor (Tools->Serial Monitor) at 115200 baud, similar to this:
/*************************************************** This is an example for the LTR390 UV Sensor Designed specifically to work with the LTR390 UV sensor from Adafruit ----> https://www.adafruit.com These sensors use I2C to communicate, 2 pins are required to interface ****************************************************/ #include "Adafruit_LTR390.h" Adafruit_LTR390 ltr = Adafruit_LTR390(); void setup() { Serial.begin(115200); Serial.println("Adafruit LTR-390 test"); if ( ! ltr.begin() ) { Serial.println("Couldn't find LTR sensor!"); while (1) delay(10); } Serial.println("Found LTR sensor!"); ltr.setMode(LTR390_MODE_UVS); if (ltr.getMode() == LTR390_MODE_ALS) { Serial.println("In ALS mode"); } else { Serial.println("In UVS mode"); } ltr.setGain(LTR390_GAIN_3); Serial.print("Gain : "); switch (ltr.getGain()) { case LTR390_GAIN_1: Serial.println(1); break; case LTR390_GAIN_3: Serial.println(3); break; case LTR390_GAIN_6: Serial.println(6); break; case LTR390_GAIN_9: Serial.println(9); break; case LTR390_GAIN_18: Serial.println(18); break; } ltr.setResolution(LTR390_RESOLUTION_16BIT); Serial.print("Resolution : "); switch (ltr.getResolution()) { case LTR390_RESOLUTION_13BIT: Serial.println(13); break; case LTR390_RESOLUTION_16BIT: Serial.println(16); break; case LTR390_RESOLUTION_17BIT: Serial.println(17); break; case LTR390_RESOLUTION_18BIT: Serial.println(18); break; case LTR390_RESOLUTION_19BIT: Serial.println(19); break; case LTR390_RESOLUTION_20BIT: Serial.println(20); break; } ltr.setThresholds(100, 1000); ltr.configInterrupt(true, LTR390_MODE_UVS); } void loop() { if (ltr.newDataAvailable()) { Serial.print("UV data: "); Serial.print(ltr.readUVS()); } delay(100); }
If you are not getting the data you expect, please post to https://forums.adafruit.com/ with your project information for assistance.
Text editor powered by tinymce.