Este é um projeto que mostra a variação da intensidade da luz utilizando uma fotocélula com Arduino. De acordo com a variação da intensidade da luz, os leds acendem ou apagam e se não houver luz nenhuma, um buzzer apita. Neste projeto foi utilizado:
Primeiramente, faça as ligações como demonstrado abaixo:
A fotocélula é um resistor que varia de acordo com a intensidade da luz. Quanto maior a luminosidade, maior a resistência da fotocélula. Na figura acima, mostra um divisor de tensão com a fotocélula e um resistor de 10kOhm. Essa divisão é necessária para que a porta analógica A0 do Arduino possa detectar a sua variação. Assim se caso haja muita luminosidade, apenas 1 Led acenderá, se houver pouca luminosidade, alguns Leds acenderão e se houver nenhuma luminosidade, todos os leds acenderão e o buzzer tocará. A programação para o funcionamento está demonstrada abaixo:
#include <Tone.h>
int LDRpin=A0;
int LDRval=0;
Tone player;
int note[]={NOTE_A3,NOTE_G4};
void setup() //Setup the output pins and play the buzzer
{
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
player.begin(10);
Serial.begin(9600);
}
void loop()
{
LDRval=analogRead(LDRpin);
if(Serial.available()>0)
{
Serial.println(LDRval);
}
delay(100);
if(LDRval>850)
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>800 && LDRval<850)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>750 && LDRval<800)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>700 && LDRval<750)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>650 && LDRval<700)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval>600 && LDRval<650)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
player.stop();
}
if(LDRval<600)
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
player.play(note[1]);
}
}
Referências:
http://labdegarag1.lojatemporaria.com/arduino-original.html
Comentar
Opa, baseado nesse projeto, será que alguém pode me ajudar?
Ao invés de usar a LDR, queria usar o fotodiodo SFH203P, como posso ligar esse elemento no arduino e fazer funcionar?
O datasheet do SFH203P basta colocar no google que aparece, é da OSRAM.
Sei que precisa ligar alguma resitencia, será que precisa de algo mais?
Obrigado.
A biblioteca é esta http://rogue-code.googlecode.com/files/Arduino-Library-Tone.zip
Sidney,
esta library gera tons em onda quadrada em um determinado pino com controle da frequencia e da duração dos tons.
Olhe no link abaixo para saber mais:
http://code.google.com/p/rogue-code/wiki/ToneLibraryDocumentation
Amigos,
que biblioteca é esta <Tone.h>?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)