I know this can be done without the Arduino, I am dong this to get the bits together for a more complex project.
Making sure the individual pieces work before putting them together.
I read the LDR on analog pin 1 and then used PWM on pin 6 to set the LED.
// Background Light (the brightest it will be)
int LDRMax;
// When LDR is value returned (depends on the resistor in line with the LDR (I used a 1.5K)
int LDRMin = 50;
// Ratio of range to 255 (max analog out reading)
float LDRRatio;
// Analog Pin for reading LDR
int LDRPin = 1;
// The Value read for the LDR
int LDRValue;
// PWM Pin for the LED
int ledPin = 6;
void setup() {
// Initalize LED Pin
pinMode(ledPin, OUTPUT);
// Enable Serial Communication - useful for debugging
Serial.begin(9600);
// Get the maximum LDR Reading
LDRMax = analogRead(LDRPin);
// Print to serial
Serial.print("LDRMax: ");
Serial.println(LDRMax);
// Calculate the ratio (note the use of float - since the calculation is being done on integers you have to state this is a float calculation
LDRRatio = (float)255/(LDRMax-LDRMin);
// Print to serial
Serial.print("LDRRatio: ");
Serial.println(LDRRatio);
}
void loop() {
// Read the LDR
LDRValue = analogRead(LDRPin) - LDRMin;
// Print the value to the monitor so I can see it
Serial.println(LDRValue);
// Modify reading to match analogWrite range using Ration calculation
LDRValue = (LDRValue
) * LDRRatio;
// Sometimes the number is over 255 or under 0 - rounding errors !!!!!
if (LDRValue < 0){LDRValue = 0;}
if (LDRValue > 255){LDRValue = 255;}
// Print to Monitor
Serial.print("LDRValue after calculation: ");
Serial.println(LDRValue);
// Set the value for the LED
analogWrite(ledPin, LDRValue);
delay(100);
}
Still figuring out the Arduino coding and also auto calibrate the LDR so I have the full range.
In the video the range of readings was from 30 to 155. The scale is 0 to 1023 so I'm only getting a small portion of the range which means I have to get this right to go from full brightness to off.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.