Algumas semanas atrás, ouvi meu sobrinho (7 anos) queixando-se do escuro à noite. Basicamente, ele estava com medo, então eu decidi colocar o conhecimento em prática e construir uma lâmpada de noite para as crianças. Desde que o projeto foi destinado para crianças, eu pensei em fazer a lâmpada mudar de cor de vez em quando. Deve também ser sensível à luz de modo que se o quarto for bem iluminado, a lâmpada permaneceria apagada.
Para este projeto, o Arduino Uno foi usado. Em vez disso você pode usar qualquer outro Arduino e todos devem funcionar bem.
Hardware:
1x Arduino
Alguns fios Jumper
Painel de Meia Dimensão 1x
1x LED RGB Catodo Brilhante
1x Photo Resistor
Resistores 2 x 220 Ohm
Resistor 1x 330 Ohm
Resistor de 1x 10K Ohm
Hardware:
SchematicEsquema
Então, basicamente, a idéia era que, como um primeiro, a lâmpada deve ser ligado apenas quando a leitura foto-resistor vai abaixo de um certo limite, o que significa que a luz ambiente caiu consideravelmente, Em segundo lugar a lâmpada deve mudar de cor em determinados intervalos. É por isso que um LED RGB foi usado.
O Resistor de Foto ou Resistor Dependente de Luz (LDR) é um resistor que diminui sua resistência quando exposto à luz. Isto significa que quanto mais luz o LDR recebe mais corrente passa através dele e através do pino Arduino que é então lido pelo Arduino. A resistência conectada em série com o LDR serve para limitar ou aumentar o alcance da sensibilidade LDR à luz. Um resistor de 10kOhm é uma boa escolha para ler a luz ambiente, mas não se o LDR está exposto à luz solar direta, e também não é bom para condições de baixa luminosidade porque os valores saturar rapidamente nesses extremos.
O código é auto-explicativo, mas vou esboçar alguns pontos aqui. Lembre-se que este esboço precisa fazer 2 coisas, verifique primeiro o LDR para o brilho do ambiente, se o brilho do ambiente é menor do que a variável darkThreshold (que obviamente você pode ajustar) o LED é aceso, escolhendo 3 valores aleatórios para o vermelho, Pinos verdes e azuis. A luz ambiente é lida a cada segundo, por exemplo, se, de repente, você liga a luz principal da sala, o LED desliga-se quase que instantaneamente. A cor do LED muda cada 'changeColorTime' em milissegundos. Por padrão é definido como 900000 milissegundos equivalente a 15 minutos (como de costume sinta-se livre para jogar com esses números)
intphotoSensorPin = A0;
intredLedPin = 3;
intgreenLedPin = 5;
intblueLedPin = 6;
intredLedVal = 0;
intgreenLedVal = 0;
intblueLedVal = 0;
booleanisLedOn = false;
int brightness = 1023;
intdarkThreshold = 50;
intchangeColorTime = 900000;
longlastUpdate=0;
void setup()
{
randomSeed(analogRead(1));
}
void loop()
{
getBrightness();
if (brightness<darkThreshold){ if (!isLedOn) { LedOn(); isLedOn = true; lastUpdate = millis(); } else if (millis()>lastUpdate+changeColorTime)
{
LedOn();
isLedOn = true;
lastUpdate = millis();
}
}
else {
LedOff();
isLedOn = false;
}
delay(1000);
}
intgetBrightness()
{
brightness = analogRead(photoSensorPin);
returnbrightness;
}
voidLedOn()
{
redLedVal = random(1,128);
greenLedVal = random(1,128);
blueLedVal = random(1,128);
analogWrite(redLedPin,redLedVal);
analogWrite(greenLedPin,greenLedVal);
analogWrite(blueLedPin,blueLedVal);
}
voidLedOff(){
analogWrite(redLedPin,0);
analogWrite(greenLedPin,0);
analogWrite(blueLedPin,0);
}
Fonte: http://runtimeprojects.com/2016/05/a-smart-night-lamp-for-kids/