Simple Arduino light meter

Summary of Simple Arduino light meter


This Arduino light meter project uses a photo-transistor as a light sensor and 10 red LEDs to display light intensity. Each LED is driven by a BC547 transistor connected to Arduino digital pins through resistors. The photo-transistor is connected to analog input A0, and the Arduino reads its value to determine how many LEDs to light. The LED count inversely corresponds to light levels, using a scaling method to divide sensor readings by 128 for control. This setup is sensitive to both visible and infrared light, useful for testing remote controls.

Parts used in the Arduino Light Meter Project:

  • Arduino board
  • Photo-transistor
  • 10 red LEDs
  • 10 BC547 transistors (or equivalent general purpose transistors)
  • 2.2 kΩ resistors (for transistor bases)
  • 560 Ω resistors (current limiting for LEDs)
  • 12 V power supply

This Arduino project is a simple light meter using a photo-transistor. An LDR would be more appropriate but the photo-transistor is what I has spare at the time. On the other hand the photo-transistor is sensitive to infrared, so its handy for testing remote controls.

The project consists of 10 red LEDs driven by 10 BC547 transistors although any general purpose transistor will do. The base of each transistor is connected to the Arduino board digital pins D0 through to D7 via a 2.2K resistor. The LEDs are connected to a 12 volt source with current limiting resistors of 560 ohms.

Simple Arduino light meter

The input is provided by a photo-transistor connect to the Arduiono’s analogue input on analogue pin 0. The range of the input for the photo-transistor is 0 (full light) to 1023 (full dark), 1024 in total. This output is divided by 128, that is the full range (1024) divided by the number of LEDs (8). As the result is cast as a floating point, we round it up to the nearest integer. So 7.5 become 8. Finally we subtract this result from the total number of LEDs.

A simple for loop is used to enumerate the result and light/extinguish the appropriate number of LEDs. The source below:

int sensorPin = A0;
float sensorValue = 0;
int leds = 8;
int result = 0;
int divisor = 128;

void setup()
{
  PORTD = B00000000;
  pinMode(0,OUTPUT);
  pinMode(1,OUTPUT);
}

void loop() {
  sensorValue = analogRead(sensorPin);
  result = leds - round(sensorValue / divisor);
  for(int i = 0;i < leds;i++) {
    if(i < result) {
      digitalWrite(i,HIGH);
    } else {
      digitalWrite(i,LOW);
    }
  }
}

The results can be seen in this quick video showing how the LEDs react when a torch is brought near the photo-transistor:

 

For more detail: Simple Arduino light meter


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top