Sensor de luz ambiente usando resistor fotográfico e luzes LED!
Componentes e suprimentos
| | × | 1 | |
| | × | 1 | |
| | × | 2 | |
| | × | 1 | |
| | × | 2 | |
| Fios de jumpers (genérico) | | × | 1 | |
| | × | 1 | |
Aplicativos e serviços online
Sobre este projeto
Estou usando o Arduino há algum tempo e decidi que já passou da hora de criar meu próprio projeto do zero. Modifiquei alguns circuitos que encontrei online de Alex Glow e Joe Coburn para que se adaptassem melhor a este projeto. Por favor, se você encontrar algum problema, ou achar que encontrou algo que funcione melhor do que o meu design, por favor, comente abaixo e eu entrarei em contato com você.
Fiação
Eu tenho um resistor de foto conectado ao pino analógico 0 (qualquer pino analógico funcionaria) e um 5V no lado direito da placa de ensaio. Ele é executado por meio de um resistor de 1K ohm aterrado. Eu conectei um LED (qualquer cor) no lado oposto da placa de ensaio no pino digital 13 (qualquer pino digital funcionaria) e um resistor de 220 ohms aterrado (um 100 ohm também funcionaria). Um pouco à direita do primeiro LED, um LED de cor diferente foi conectado da mesma forma, mas com um pino digital diferente.
Como funciona
Se o resistor de foto ler um valor acima de 450, ele imprimirá "É bastante leve!" no monitor serial e desliga todos os LEDs, assim:
if (light> 450) {// Se estiver claro ... Serial.println ("É bastante claro!"); digitalWrite (13, BAIXO); // desliga o LED esquerdo digitalWrite (12, LOW); // desligue o LED à direita}
Se ler um valor entre 230 e 450, ele imprime "É uma luz média!" no monitor serial e liga o LED esquerdo, assim:
else if (light> 229 &&light <451) {// Se for luz média ... Serial.println ("É luz média!"); digitalWrite (13, ALTO); // liga o LED esquerdo digitalWrite (12, LOW); // desligue o LED à direita}
Isso apenas nos deixa com valores abaixo de 230 para contabilizar. Se um valor estiver abaixo de 230, ele imprime "Está bastante escuro!" no monitor serial e acende ambos os LEDs, assim:
else {// Se estiver escuro ... Serial.println ("Está muito escuro!"); digitalWrite (13, ALTO); // Liga o LED esquerdo digitalWrite (12, HIGH); // Ligue o LED à direita}
Eu adicionei um atraso de 1000 ao final do meu loop para evitar uma sobrecarga de informações no monitor serial, como este:
atraso (1000); // não envie spam para o computador!
Certifique-se de olhar o esquema e verificar seu código antes de enviar ou executar qualquer coisa.
Código
LED_PR_Light_Read Arduino
luz interna =0; // armazena o light valuevoid setup () {// coloque seu código de configuração aqui, para rodar uma vez:Serial.begin (9600); // configura serial para falar com o computador pinMode (13, OUTPUT); // configura o pino digital 13 como um pinMode de saída (12, OUTPUT); // configure o pino digital 12 como uma saída} void loop () {// coloque seu código principal aqui, para executar repetidamente:light =analogRead (A0); // lê e salva o valor de PR Serial.println (light); // imprime o valor da luz atual if (light> 450) {// Se for brilhante ... Serial.println ("É bastante leve!"); digitalWrite (13, BAIXO); // desliga o LED esquerdo digitalWrite (12, LOW); // desligue o LED direito} else if (light> 229 &&light <451) {// Se for uma luz média ... Serial.println ("É uma luz média!"); digitalWrite (13, ALTO); // liga o LED esquerdo digitalWrite (12, LOW); // desligue o LED direito} else {// Se estiver escuro ... Serial.println ("Está muito escuro!"); digitalWrite (13, ALTO); // Liga o LED esquerdo digitalWrite (12, HIGH); // Liga o LED direito} delay (1000); // não envie spam para o computador!}
Esquemas