The LilyPad Light Sensor is an e-textile friendly version of the Ambient Light Sensor Breakout. If you've used the breakout in a project before, the hookup and code will be very similar. You will need to connect to a LilyPad Arduino or other microcontroller to read the sensor values and use in your code.
This sensor outputs an analog value from 0 to 3.3V. In bright light (full daylight) this sensor will output 3.3V, and if completely covered will output 0V. In a typical indoor lighting situation, the sensor will output from around 1 to 2V.
LilyPad Light Sensor DEV-08464This is a simple to use light sensor that outputs an analog value from 0 to 5V. With exposure to daylight, this sensor will o…
RetiredTo follow along with the code examples, we recommend:
Suggested ReadingTo add this sensor to a project, you should be comfortable sewing with conductive thread and uploading code to your LilyPad Arduino. Here are some tutorials to review before working with this sensor:
What is a Circuit?Every electrical project starts with a circuit. Don't know what a circuit is? We're here to help.
LightLight is a useful tool for the electrical engineer. Understanding how light relates to electronics is a fundamental skill for many projects.
Getting Started with LilyPadAn introduction to the LilyPad ecosystem - a set of sewable electronic pieces designed to help you build soft, sewable, interactive e-textile projects.
If you have not used the TEMT6000 light sensor before, we recommend checking out the TEMT6000 Hookup Guide for basic information regarding that sensor.
Attaching to a LilyPad ArduinoThe LilyPad Light Sensor has three sew tabs - Power (+), Ground (-), and Signal (S). The signal tab should be connected to an analog tab (marked with an 'A') on the LilyPad Arduino.
To follow along with the code examples in this tutorial, connect the light sensor to a LilyPad Arduino as shown below. Use alligator clips to temporarily connect Signal to A3 on a LilyPad Arduino, (-) to (-) on the LilyPad, and (+) to A5. When you are finished prototyping, replace the alligator clips with conductive thread traces for permanent installation in your project.
To make our diagrams easier to follow, and to avoid any potential short circuits in our stitching, we'll be connecting the Power pin to A5, which we will then set to HIGH in our code. This will act as an additional power attachment.
If following along with a
LilyPad ProtoSnap Plus, the light sensor is pre-wired to A2
. The light sensor on the ProtoSnap is a slightly different version that the catalog item, but functions the same.
Other LilyPad connection notes:Note: This example assumes you are using the latest version of the Arduino IDE on your desktop. If this is your first time using Arduino, please review our tutorial on installing the Arduino IDE.
After connecting the light sensor, let's take a look at the values it reads under different lighting conditions. For this we'll use analogRead()
and Serial.print()
.
Upload the following code to your LilyPad Arduino, making sure to select the correct LilyPad board from the drop down menu below. Choose
LilyPad Arduino USBif using a LilyPad Arduino USB. The LilyPad Arduino Simple, LilyPad Arduino, and LilyPad Development Board, and Development Board Simple all use a
LilyPad ATmega 328. Select
LilyPad USB Plusif following along with the LilyPad ProtoSnap Plus.
Don't forget to select the Serial Port that your LilyPad is connected to.
Copy the following code and upload it to your LilyPad.
language:c
/******************************************************************************
LilyPad Light Sensor Example
SparkFun Electronics
This example code reads the input from a LilyPad Light Sensor and displays in
the Serial Monitor.
Light Sensor connections:
* S pin to A3
* + pin to A5
* - to -
******************************************************************************/
// Set which pin the Signal output from the light sensor is connected to
// If using the LilyPad Development Board, change this to A6
int sensorPin = A3;
// Create a variable to hold the light reading
int lightValue;
void setup()
{
// Set sensorPin as an INPUT
pinMode(sensorPin, INPUT);
// Set pin A5 to use as a power pin for the light sensor
// If using the LilyPad Development Board, comment out these lines of code
pinMode(A5, OUTPUT);
digitalWrite(A5, HIGH);
// Initialize Serial, set the baud rate to 9600 bps.
Serial.begin(9600);
}
void loop()
{
// Get the current light level
lightValue = analogRead(sensorPin);
// Print some descriptive text and then the value from the sensor
Serial.print("Light value is:");
Serial.println(lightValue);
// Delay so that the text doesn't scroll too fast on the Serial Monitor.
// Adjust to a larger number for a slower scroll.
delay(200);
}
Once your code is uploaded, open the serial terminal in the IDE and see the output. Numbers should begin to stream by. Observe how the numbers change as the ambient light changes. Use your hand to cover the sensor or a flashlight to shine more light on it. Next we'll be using these values to control behaviors in our code.
Using Values to Trigger BehaviorsNext, we'll make some decisions in the code based on the light sensor's readings. This example code creates a simple automatic night light that turns on an LED when it’s dark.
We'll use the analogRead()
function to get data from the light sensor and compare it to a variable we set for darkness level. When the readings from the light sensor fall below our threshold set for dark, it will turn on the LED.
You can hook up a LilyPad LED to pin 5 or use the built-in LED attached to pin 13.
language:c
/******************************************************************************
LilyPad Light Sensor Trigger - Automatic Night Light
SparkFun Electronics
Adapted from Digital Sandbox Experiment 11: Automatic Night Light
This example code reads the input from a LilyPad Light Sensor compares it to
a set threshold named 'dark'. If the light reading is below the threshold,
an LED will turn on.
Light Sensor connections:
* S pin to A3
* + pin to A5
* - to -
Connect an LED to pin 5 or use the built-in LED on pin 13
******************************************************************************/
// The dark variable determines when we turn the LEDs on or off.
// Set higher or lower to adjust sensitivity.
const int darkLevel = 50;
// Create a variable to hold the readings from the light sensor.
int lightValue;
// Set which pin the Signal output from the light sensor is connected to
// If using the LilyPad Development Board, change this to A6
int sensorPin = A3;
// Set which pin the LED is connected to.
// Set to 13 if you'd rather use the LilyPad Arduino's built-in LED.
int ledPin = 5;
void setup()
{
// Set sensorPin as an INPUT
pinMode(sensorPin, INPUT);
// Set LED as outputs
pinMode(ledPin, OUTPUT);
// Set pin A5 to use as a power pin for the light sensor
// If using the LilyPad Development Board, comment out these lines of code
pinMode(A5, OUTPUT);
digitalWrite(A5, HIGH);
// Initialize Serial, set the baud rate to 9600 bps.
Serial.begin(9600);
}
void loop()
{
// Read the light sensor's value and store in 'lightValue'
lightValue = analogRead(sensorPin);
// Print some descriptive text and then the value from the sensor
Serial.print("Light value is:");
Serial.println(lightValue);
// Compare "lightValue" to the "dark" variable
if (lightValue <= darkLevel) // If the reading is less then 'darkLevel'
{
digitalWrite(ledPin, HIGH); // Turn on LED
}
else // Otherwise, if "lightValue" is greater than "dark"
{
digitalWrite(ledPin, LOW); // Turn off LED
}
// Delay so that the text doesn't scroll to fast on the Serial Monitor.
// Adjust to a larger number for a slower scroll.
delay(100);
}
If your light sensor isn't triggering correctly, check the output of the Serial Monitor to see if there's a better value for the dark variable than what is set in the example code.
Project Examples Light Sensitive HatLet your geek shine with this hat that blinks when the lights go down.
Musical BraceletCombining the sensor with a LilyPad Buzzer can create interesting interactive projects, for example this wearable light-controlled musical instrument or Opto-Theremin. Control tones on the buzzer by covering the LilyPad Light Sensor.
Twinkling Prom DressThis prom dress project featured in this video uses an initial threshold setting and light sensor to trigger some LilyPad Pixel Boards.
LilyPad Safety ScarfCreate a scarf lights up when it gets dark with LilyPad and sewable LED ribbon.
Resources and Going FurtherHere are some resources for planning a project with the light sensor:
Or, you can check out these other great light-based tutorials.
Let It Glow Holiday CardsCraft a glowing card for friends and family this holiday season with paper circuits - no soldering required!
Lumenati Hookup GuideLumenati is our line of APA102c-based addressable LED boards. We'll show you how to bring the sparkle to your projects!
Flashlight KitThis is an assembly guide for the SparkFun Flashlight Kit, a basic learn to solder kit.
LumiDrive Hookup GuideThe LumiDrive LED Driver is SparkFun’s foray into all things Python on micro-controllers. With the SparkFun LumiDrive you will be able to control and personalize a whole strand of APA102s directly from the board itself.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4