Hi,
Can anyone help me on this problem.
I have an arduino, neopixel,LDR sensor, what i am trying to do is simply to make an average of light and based on that turn ON and OFF the neopixel.
i have the neopixel and in the middle is the LDR. When the average is <800 and when i pass my hand or something the LDR reads over 800 and it allows me to turn the leds off.
The problem is when the average is >800 (because of an extra light) when i pass my hand or another thing the LDR reads for a moment less then 800, but it seems that the LDR still reading and it goes to the condition of if(LDR>800)
i dont know if i explain myself right.
Someone helpp!! please
Heres is the code
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 8
#define NUMPIXELS 16
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 500;
int promedio=0;
char val;
const int buzzer = 5;
int contador=0;
void setup() {
#if defined (__AVR_ATtiny85__)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
noTone(buzzer);
Serial.begin(9600);
pixels.begin();
pixels.setPixelColor(0, pixels.Color(0,204,204));
pixels.setPixelColor(1, pixels.Color(0,204,204));
pixels.setPixelColor(2, pixels.Color(0,204,204));
pixels.setPixelColor(3, pixels.Color(0,204,204));
pixels.setPixelColor(4, pixels.Color(0,204,204));
pixels.setPixelColor(5, pixels.Color(0,204,204));
pixels.setPixelColor(6, pixels.Color(0,204,204));
pixels.setPixelColor(7, pixels.Color(0,204,204));
pixels.setPixelColor(8, pixels.Color(0,204,204));
pixels.setPixelColor(9, pixels.Color(0,204,204));
pixels.setPixelColor(10, pixels.Color(0,204,204));
pixels.setPixelColor(11, pixels.Color(0,204,204));
pixels.setPixelColor(12, pixels.Color(0,204,204));
pixels.setPixelColor(13, pixels.Color(0,204,204));
pixels.setPixelColor(14, pixels.Color(0,204,204));
pixels.setPixelColor(15, pixels.Color(0,204,204));
pixels.show();
delay(1000); // Delay for a period of time (in milliseconds).
pixels.setPixelColor(0, pixels.Color(0,0,0));
pixels.setPixelColor(1, pixels.Color(0,0,0));
pixels.setPixelColor(2, pixels.Color(0,0,0));
pixels.setPixelColor(3, pixels.Color(0,0,0));
pixels.setPixelColor(4, pixels.Color(0,0,0));
pixels.setPixelColor(5, pixels.Color(0,0,0));
pixels.setPixelColor(6, pixels.Color(0,0,0));
pixels.setPixelColor(7, pixels.Color(0,0,0));
pixels.setPixelColor(8, pixels.Color(0,0,0));
pixels.setPixelColor(9, pixels.Color(0,0,0));
pixels.setPixelColor(10, pixels.Color(0,0,0));
pixels.setPixelColor(11, pixels.Color(0,0,0));
pixels.setPixelColor(12, pixels.Color(0,0,0));
pixels.setPixelColor(13, pixels.Color(0,0,0));
pixels.setPixelColor(14, pixels.Color(0,0,0));
pixels.setPixelColor(15, pixels.Color(0,0,0));
pixels.show();
delay(500);
promedio=0;
for (int i=0; i<43;i++)
{
pixels.setPixelColor(0, pixels.Color(0,204,204));
pixels.setPixelColor(1, pixels.Color(0,204,204));
pixels.setPixelColor(2, pixels.Color(0,204,204));
pixels.setPixelColor(3, pixels.Color(0,204,204));
pixels.setPixelColor(4, pixels.Color(0,204,204));
pixels.setPixelColor(5, pixels.Color(0,204,204));
pixels.setPixelColor(6, pixels.Color(0,204,204));
pixels.setPixelColor(7, pixels.Color(0,204,204));
pixels.setPixelColor(8, pixels.Color(0,204,204));
pixels.setPixelColor(9, pixels.Color(0,204,204));
pixels.setPixelColor(10, pixels.Color(0,204,204));
pixels.setPixelColor(11, pixels.Color(0,204,204));
pixels.setPixelColor(12, pixels.Color(0,204,204));
pixels.setPixelColor(13, pixels.Color(0,204,204));
pixels.setPixelColor(14, pixels.Color(0,204,204));
pixels.setPixelColor(15, pixels.Color(0,204,204));
pixels.show();
promedio +=analogRead(A0);
Serial.println(promedio);
}
promedio= promedio/43;
Serial.println(promedio);
pixels.setPixelColor(0, pixels.Color(0,0,0));
pixels.setPixelColor(1, pixels.Color(0,0,0));
pixels.setPixelColor(2, pixels.Color(0,0,0));
pixels.setPixelColor(3, pixels.Color(0,0,0));
pixels.setPixelColor(4, pixels.Color(0,0,0));
pixels.setPixelColor(5, pixels.Color(0,0,0));
pixels.setPixelColor(6, pixels.Color(0,0,0));
pixels.setPixelColor(7, pixels.Color(0,0,0));
pixels.setPixelColor(8, pixels.Color(0,0,0));
pixels.setPixelColor(9, pixels.Color(0,0,0));
pixels.setPixelColor(10, pixels.Color(0,0,0));
pixels.setPixelColor(11, pixels.Color(0,0,0));
pixels.setPixelColor(12, pixels.Color(0,0,0));
pixels.setPixelColor(13, pixels.Color(0,0,0));
pixels.setPixelColor(14, pixels.Color(0,0,0));
pixels.setPixelColor(15, pixels.Color(0,0,0));
pixels.show();
}
void loop() {
Serial.available();
int LDR=analogRead(A0);
Serial.println(LDR);
if (promedio<800)
{
pixels.setPixelColor(0, pixels.Color(0,204,0));
pixels.setPixelColor(1, pixels.Color(0,204,0));
pixels.setPixelColor(2, pixels.Color(0,204,0));
pixels.setPixelColor(3, pixels.Color(0,204,0));
pixels.setPixelColor(4, pixels.Color(0,204,0));
pixels.setPixelColor(5, pixels.Color(0,204,0));
pixels.setPixelColor(6, pixels.Color(0,204,0));
pixels.setPixelColor(7, pixels.Color(0,204,0));
pixels.setPixelColor(8, pixels.Color(0,204,0));
pixels.setPixelColor(9, pixels.Color(0,204,0));
pixels.setPixelColor(10, pixels.Color(0,204,0));
pixels.setPixelColor(11, pixels.Color(0,204,0));
pixels.setPixelColor(12, pixels.Color(0,204,0));
pixels.setPixelColor(13, pixels.Color(0,204,0));
pixels.setPixelColor(14, pixels.Color(0,204,0));
pixels.setPixelColor(15, pixels.Color(0,204,0));
pixels.show();
if (LDR>800)
{
pixels.setPixelColor(0, pixels.Color(0,0,0));
pixels.setPixelColor(1, pixels.Color(0,0,0));
pixels.setPixelColor(2, pixels.Color(0,0,0));
pixels.setPixelColor(3, pixels.Color(0,0,0));
pixels.setPixelColor(4, pixels.Color(0,0,0));
pixels.setPixelColor(5, pixels.Color(0,0,0));
pixels.setPixelColor(6, pixels.Color(0,0,0));
pixels.setPixelColor(7, pixels.Color(0,0,0));
pixels.setPixelColor(8, pixels.Color(0,0,0));
pixels.setPixelColor(9, pixels.Color(0,0,0));
pixels.setPixelColor(10, pixels.Color(0,0,0));
pixels.setPixelColor(11, pixels.Color(0,0,0));
pixels.setPixelColor(12, pixels.Color(0,0,0));
pixels.setPixelColor(13, pixels.Color(0,0,0));
pixels.setPixelColor(14, pixels.Color(0,0,0));
pixels.setPixelColor(15, pixels.Color(0,0,0));
pixels.show();
}
}
if(promedio>800)
{
pixels.setPixelColor(0, pixels.Color(255,153,153));
pixels.setPixelColor(1, pixels.Color(255,153,153));
pixels.setPixelColor(2, pixels.Color(255,153,153));
pixels.setPixelColor(3, pixels.Color(255,153,153));
pixels.setPixelColor(4, pixels.Color(255,153,153));
pixels.setPixelColor(5, pixels.Color(255,153,153));
pixels.setPixelColor(6, pixels.Color(255,153,153));
pixels.setPixelColor(7, pixels.Color(255,153,153));
pixels.setPixelColor(8, pixels.Color(255,153,153));
pixels.setPixelColor(9, pixels.Color(255,153,153));
pixels.setPixelColor(10, pixels.Color(255,153,153));
pixels.setPixelColor(11, pixels.Color(255,153,153));
pixels.setPixelColor(12, pixels.Color(255,153,153));
pixels.setPixelColor(13, pixels.Color(255,153,153));
pixels.setPixelColor(14, pixels.Color(255,153,153));
pixels.setPixelColor(15, pixels.Color(255,153,153));
pixels.show();
}
}