Que tal fazer o seu luxímetro para automatizar o acendimento das luzes do jardim ao anoitecer? E mais, aplicar um efeito usando uma fita de led RGB.
Para o experimento de hoje nós vamos utilizar:
O LDR é um resistor sensível à luz que varia sua resistência conforme é alterada a intensidade de luz que incide sobre ele. À medida que fica mais claro a sua resistência diminui para alguns poucos Ohms, e quando fica mais escuro diminui a sua resistência aumenta para alguns mega Ohms.
O seu uso é bem simples, onde através de um circuito divisor resistivo a variação de resistência é convertida em tensão e usada pelo circuito de controle.
O sensor de luz foi utilizado para detectar a quantidade de luminosidade presente no ambiente e, dependendo da resposta, ligar ou desligar a fita de LEDs RGB.
Veja ao lado o diagrama da ligação e abaixo um exemplo de código.
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 |
// Experimentos de Garagem Teste LDR com fita de LED RGB // Autor : Aldyr Amaro // www.experimentosdegaragem.com.br const int LDR_Pin = A0; int PIN_RED = 10; int PIN_GREEN = 11; int PIN_BLUE = 9; float luminosidade; float amostra; int i; void setup() { pinMode (PIN_RED, OUTPUT); pinMode (PIN_GREEN, OUTPUT); pinMode (PIN_BLUE, OUTPUT); Serial.begin(9600); } void loop() { amostra=0; //Zera a variável LDR for(i=0;i<=10;i++) //Faz 10 vezes a leitura do sensor { amostra = analogRead(LDR_Pin); //Lê o valor do sensor (LDR ligado ao pino A0) e guarda na variável LDR luminosidade = luminosidade + amostra; Serial.println("amostra: "); //envia valor para o computador Serial.println(amostra); //envia valor para o computador delay(10); //Delay se 10 milissegundos } luminosidade=luminosidade/10; //Divide o valor armazenado por 10 Serial.println("luminosidade: "); //Imprime o valor do LDR Serial.println(luminosidade); //Imprime o valor do LDR (luminosidade <= 400) ? (analogWrite(PIN_BLUE,100)) : (analogWrite(PIN_BLUE,0)); ((luminosidade >= 401) && (luminosidade <= 800)) ? (analogWrite(PIN_GREEN,80)) : (analogWrite(PIN_GREEN,0)); (luminosidade >= 800) ? (analogWrite(PIN_RED,80)) : (analogWrite(PIN_RED,0)); //Se o valor lido (luminosidade) for maior ou igual a 1100, liga a fita na cor estabelecida através dos valores analógicos, senão desliga. delay(500); //delay de 0,5 seg } |
Bora pro vídeo.