We have lot of getting started guide with LDR. How To Turn On LED in Dark With LDR and Arduino is the basic behind all of them. We can perform the same work using transistor – Turn On LED On Dark With Transistor. As the value of LDR will be variable depending on batch, you need to run the basic Turn On LED in Dark guide to note the values on serial monitor in various lighting situations like inside room, at dark and sunlight etc. With Arduino We an Turn On Particular Color LED Depending On Light/LDR With Simple Circuit and Easy Code. The basic logic is based on Control Multiple LED Depending on the Level of Light or with just this code when LDR is connected –
1 2 3 4 5 6 7 8 9 | int LDR_Pin = A0; void setup(){ Serial.begin(9600); } void loop(){ int LDRReading = analogRead(LDR_Pin); Serial.println(LDRReading); delay(250); } |
Code and Connection To Turn On Particular Color LED Depending On Light
We will use 4 LDR in this project. We need the following parts :
- Arduino UNO or similar board – ONE
- LDR – ONE
- 10K Ohm resistor – ONE
- LED – THREE (One RED, One Green, One Yellow)
- 220 Ohm resistors for LEDs – THREE
- Breadboard – ONE
- Jumpers – Few
This will be the circuit diagram (better to say connection) :
---
We can write the logic in various ways, like –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | int sensorPin = A0; int ledPin1 = 11; //red LED int ledPin2 = 10; //yellow LED int ledPin3 = 9; //green LED int sensorValue = 0; //minimum value from the sensor void setup() { pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); } void loop() { sensorValue = analogRead(sensorPin); if (sensorValue <= 10) { // turn the ledPin on digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); delay(100); } if (sensorValue < 600 && sensorValue > 10) { digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, HIGH); digitalWrite(ledPin3, LOW); delay(200); } if (sensorValue >= 750) { digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, HIGH); delay(400); } } |
The values like that of 600
, 750
are based on reading on serial monitor with my LDR. Your LDR likely to give different values and you may need to change it.
You can blink a particular colored LED with minimal modification in coding, like if you want to blink the red LED on dark and others to give stable light then you can write –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | int sensorPin = A0; int ledPin1 = 11; //red LED int ledPin2 = 10; //yellow LED int ledPin3 = 9; //green LED int sensorValue = 0; //minimum value from the sensor void setup() { pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); } void loop() { sensorValue = analogRead(sensorPin); if (sensorValue <= 10) { // turn on ledPin1 digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); delay(100); // turn off ledPin1 digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); // effect will be like blinking delay(100); } if (sensorValue < 600 && sensorValue > 10) { digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, HIGH); digitalWrite(ledPin3, LOW); delay(200); } if (sensorValue >= 750) { digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, HIGH); delay(400); } } |
Tagged With multi blinking led in arduino , arduino ldr controller red yellow and green , led amarillo arduino , ldr light level and colours , ldr circuit using breadboard arduino and led , how to turn on LED a color arduino , coding an arduino board to turn an LED a color if a condition has passed , change led value based on sensor arduino , arduino make led change depending on value , turn on light on particular arduino