LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: djimp em 22 de Junho de 2010, 21:05
-
Boa noite, recebi hj o meu arduino, tenho visto vários videos com o sensor ldr a controlar um led, a minha questão é se da para fazer a controlar 2 led´s, tudo consoante a luz, um liga, e outro desliga.
Se me poderem ajudar.
Ivo
-
Podes fazer algo tipo:
#define LedPin1 4 //led 1 no pino digital 4
#define LedPin2 5 //led 2 no pino digital 5
#define LdrPin 0 //ldr ligado no analog 0
int ldr; //variavel para guardar o valor lido do ldr
void setup(){
pinMode(LedPin1, OUTPUT); //definir os pinos dos leds como saidas digitais
pinMode(LedPin2, OUTPUT);
}
void loop(){
ldr=analogRead(LdrPin); //lê o valor do ldr usando a adc no pino 0
if(ldr>512){
digitalWrite(LedPin1,LOW); //coloca o led1 a 0(desligado)
digitalWrite(LedPin2,HIGH); //colocar o led2 a 1(ligado)
}
else{
digitalWrite(LedPin1,HIGH); //coloca o led1 a 1(ligado)
digitalWrite(LedPin2,LOW);} //coloca o led2 a 0(desligado)
}
Basicamente é isto, penso que é simples o suficiente para entenderes, mas se não perceberes diz que tento explicar melhor, não sei se está escrito sem erros.
-
LDR dão mesmo para brincar ;) aconselho-te a testares varias maneiras, e a experimentares o uso do PWM.
Por exemplo um dos dois leds dizia-te o quanto estava escuro, o outro o quanto estava iluminado (a velha historia do copo meio cheio, meio vazio), terias sempre o inverso um do outro ;)
Não te esqueças que:
o analogRead(pin)-> retorna um valor entre 0 e 1023;
o analogWrite(pin, value) ->value tem de estar entre 0(off) e 255(on);
Tem sempre http://arduino.cc/en/Reference/Extended (http://arduino.cc/en/Reference/Extended) a mão, dá muito jeito ;)
-
fiz as ligacoes como estava no programa, mas ao ligar só me acende um led e nao faz mais nada.. será da ligação ou do programa?
-
Já experimentas-te chegar um candeeiro ao ldr ou tapa-lo com a mão para ele não receber luz?
Eu não sei se os ldr é só ligar á massa ou aos 5v e á entrada analógica se tem de ter mais alguma coisa pelo meio, experimenta alterar o 512 para outro valor maior ou mais pequeno e faz variar a luz que o ldr recebe.
-
Alguns LDRs não lhes chega tapar com a mão.
Algumas tampas de caneta, que são pretas e opacas funcionam bem. É deslizar o LDR lá para dentro.
-
tapar com a mão chega sim, faz variar os valores lidos lidos arduino... é o bastante... :) so que ele deve ter feito copy paste ao código e nem deve ter reparado nos valores.
Para saberes que valores tás a jogar aconselho-te a fazer
#define sensor 5 // sensor ligado ao pin analogico 5
int AnalogValue=(AnalogRead(sensor));
Serial.println(AnalogValue, DEC); // imprimir o valor na consola
não faças copy paste disto, ate porque nao iria funcionar... mas usa isto e passa com a mão e vê se os valores lidos variam ou nao... Experimenta :P
-
Deixo aqui uma foto de como fiz a ligação.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg684.imageshack.us%2Fimg684%2F5459%2F23062010311.jpg&hash=96e7d3b57c8d76fe55909d8d90c9b00be30e4527) (http://img684.imageshack.us/i/23062010311.jpg/)
Será que está bem? no LDR ja meti nos 5v e no o outro pin no 0 como foi dito GND e fica na mesma, penso que a ligação esteja bem, no programa já nao sei, pois nao percebo muito de linguagem C, mas quero aprender pois isto é inovador :D
Ivo
-
assim há primeira vista tens o ldr mal ligado, não é no gnd mas sim nos 5v. e depois acho que é melhor pores uma resistencia de 220OMG nos leds, nao sei quais leds usas mas faz as contas R=U*I
U=ddp
I=intensidade
vê na datasheet...
-
Olha esses leds, uma resistencia como foi dito de 220 chega ;)
Experimenta ligar o LDR assim
5V-->res 1kOhm ->Entrada Analog -> LDR -> Gnd
-
ha tantos esquemas de ldr's, para que complicar?
http://webzone.k3.mah.se/projects/arduino-workshop/projects/arduino_meets_processing/instructions/ldr.html (http://webzone.k3.mah.se/projects/arduino-workshop/projects/arduino_meets_processing/instructions/ldr.html)
faz isso que depois dou-te ajuda no código :)
-
Precisas de uma resistencia com o LDR, para fazeres um divisor de tensão...
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2F2.bp.blogspot.com%2F_pN9NjDAkrKI%2FRoH_7NG-qzI%2FAAAAAAAAAEQ%2F6JuF3BTS_fM%2Fs400%2FARDUINO_LDR.GIF&hash=4e28b7d3b55a1ee99c9b163c24c399c1c460e4f6)