collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: LDR - com fade de acordo com a luminosidade  (Lida 17077 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline anaes

  • Mini Robot
  • *
  • Mensagens: 26
LDR - com fade de acordo com a luminosidade
« em: 24 de Novembro de 2009, 15:30 »
Boas ,

Tou a fazer uma led "strip" com leds ligados em paralelo e ligados directamente ao arduino.
E tenho na board um ldr com uma resistencia e este ligado a porta analogica 0 do arduino.

A questão e a seguinte:

Dá para fazer um fade dos leds a medida que a iluminação vai sendo mais fraca? E aumentar conforme ela tambem aumenta?

Peço desculpa se a pergunta é basica mas os meus skills no java são miuto poucos.

O código que tenho agora só liga e desliga :
Código: [Seleccione]

pinMode(12,OUTPUT);//LED STRIP

void loop() {
val=analogRead(0);    //led strip
    if(val< 850){
    digitalWrite(12,HIGH);
    delay(2000);
    }
    if(val> 850){
    digitalWrite(12,LOW);
    delay(2000);
    }
 }

Desde já obrigado , e fico contente com o suporte que tenho recebido no luso robotica.

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: LDR - com fade de acordo com a luminosidade
« Responder #1 em: 24 de Novembro de 2009, 15:41 »
Uma pergunta de algibeira eu vou fazer...

Será que não dá para ler o valor do ADC, e mandar esse valor invertido para o PWM que alimenta os LEDs ?
Assim o fade é mais linear. Pode aplicar-se um algoritmo para a variação não ser tão brusca.

Dá para fazer isso no Arduino?  presumo que sim!, não passa de um microcontrolador :)

Offline anaes

  • Mini Robot
  • *
  • Mensagens: 26
Re: LDR - com fade de acordo com a luminosidade
« Responder #2 em: 24 de Novembro de 2009, 15:57 »
Uma pergunta de algibeira eu vou fazer...

Será que não dá para ler o valor do ADC, e mandar esse valor invertido para o PWM que alimenta os LEDs ?
Assim o fade é mais linear. Pode aplicar-se um algoritmo para a variação não ser tão brusca.

Dá para fazer isso no Arduino?  presumo que sim!, não passa de um microcontrolador :)
:o não percebi nada do que disseste! "ADC"? "PMW"?! Sou mesmo muito noob! Comecei nisto há cerca de 2 semanas e não tenho bases de electronica nenhumas!
Desculpa! Não basta fazer um algoritmo para incrementar o valor analogico gradualmente?! (é que tb não sei mt de java)
Dão cadeiras destas a designers dps dá nisto"! ^^

bgd pela rapidez de resposta.

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: LDR - com fade de acordo com a luminosidade
« Responder #3 em: 24 de Novembro de 2009, 16:03 »
:) sem stress


ADC = Analogue to Digital Converter

PWM = Pulse Width Modulation (que pode ser usado para fazer DAC = Digital to Analogue Converter)


O teu LDR está ligado a um pino ADC, que te converte um sinal real, num valor digital.
Esse valor digital é então passado, depois de invertido, para um PWM, que vai fazer variar o brilho consoante o valor do LDR.

Segundo o que entendi, queres variar inversamente os LEDs, consoante a luz no LDR ?
Ou seja, menos luz no LDR, mais luz nos LEDs?


fui explicito?  :-\

Offline anaes

  • Mini Robot
  • *
  • Mensagens: 26
Re: LDR - com fade de acordo com a luminosidade
« Responder #4 em: 24 de Novembro de 2009, 16:07 »
Sim agora ja cheguei lá...
Mas entao vou ter de ligar a uma pwm... prai a 11, e so dps fazer o algoritmo que ainda não percebi bem como fazer!
Mas o pretendido e realmente fazer a inversão ... menos luz ambiente mais luz nos leds.

Tenho de ligar a uma pwm portanto?

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: LDR - com fade de acordo com a luminosidade
« Responder #5 em: 24 de Novembro de 2009, 16:13 »
Sim, exactamente.

Mas quantos LEDs tens? e a alimentação dos mesmo, como é?
Há que ter isto em conta.

Dá requisitos completos, sff.



Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: LDR - com fade de acordo com a luminosidade
« Responder #6 em: 24 de Novembro de 2009, 16:14 »
Para controlar uma saída PWM usas a função "analogWrite" (vê os detalhes na documentação do Arduino).
Essa função aceita um valor entre 0 e 255, em que 0 vai manter o teu LED apagado e 255 deixa-o aceso com o maior brilho possivel. O teu algoritmo agora é converter o valor de 0 a 1023 que lês com o analogRead para um valor entre 0 e 255 para escrever com o analogWrite, tendo em conta o comportamento que desejas para o LED.

Offline anaes

  • Mini Robot
  • *
  • Mensagens: 26
Re: LDR - com fade de acordo com a luminosidade
« Responder #7 em: 24 de Novembro de 2009, 16:17 »
ok vou tentar
 :)

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: LDR - com fade de acordo com a luminosidade
« Responder #8 em: 24 de Novembro de 2009, 16:19 »
Tens um exemplo de fazer o efeito "fade" em Examples > Analog > Fading, no software do Arduino.

Só um reparo... Tens falado que não percebes nada de JAVA, mas o Arduino é programado em C, não é em JAVA (JAVA é o IDE, que é o programa que abres para fazer upload do código para a placa). Não sei se me fiz entender...

Offline anaes

  • Mini Robot
  • *
  • Mensagens: 26
Re: LDR - com fade de acordo com a luminosidade
« Responder #9 em: 24 de Novembro de 2009, 16:44 »
Tens um exemplo de fazer o efeito "fade" em Examples > Analog > Fading, no software do Arduino.

Só um reparo... Tens falado que não percebes nada de JAVA, mas o Arduino é programado em C, não é em JAVA (JAVA é o IDE, que é o programa que abres para fazer upload do código para a placa). Não sei se me fiz entender...

xiii brigado vou ja micar isso ;)

Offline anaes

  • Mini Robot
  • *
  • Mensagens: 26
Re: LDR - com fade de acordo com a luminosidade
« Responder #10 em: 24 de Novembro de 2009, 16:51 »
o fade do exemplo não depende dos valores recebidos de um LDR...
Código: [Seleccione]
int ledPin2 = 11;

void loop() {
   
   // fade in from min to max in increments of 5 points:
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin2, fadeValue);         
    // wait for 30 milliseconds to see the dimming effect   
    delay(30);                           
  }

  // fade out from max to min in increments of 5 points:
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin2, fadeValue);         
    // wait for 30 milliseconds to see the dimming effect   
    delay(30);                           
  }


Neste momento o fade é crescente e decrescente... alguma ideia como usar agora a porta analogica e os valores do LDR para controlar o fade?!

Desculpem as duvidas basicas! Mas já é o desespero pré-entrega! -.-"

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: LDR - com fade de acordo com a luminosidade
« Responder #11 em: 24 de Novembro de 2009, 17:25 »
Amigo, eu disse que o código fazia o efeito "fade", não disse que te fazia a papinha toda... :p

Basicamente é só uma questão de programação agora... Basta fazeres um if.

Allgoritmo:

MUD = Valor de mudança
se o valor do LDR for maior que MUD e LED = HIGH
// Código Fade Out
Ou
se o valor do LDR for menor que MUD e LED = LOW
// Código Fade In


Agora passas isso para código que o Arduino entenda. Não podes esperar que te façamos tudo, acho que é importante que sejas tu a fazer, para depois veres o fruto do teu trabalho.

Offline anaes

  • Mini Robot
  • *
  • Mensagens: 26
Re: LDR - com fade de acordo com a luminosidade
« Responder #12 em: 24 de Novembro de 2009, 17:44 »
Amigo, eu disse que o código fazia o efeito "fade", não disse que te fazia a papinha toda... :p

Basicamente é só uma questão de programação agora... Basta fazeres um if.

Allgoritmo:

MUD = Valor de mudança
se o valor do LDR for maior que MUD e LED = HIGH
// Código Fade Out
Ou
se o valor do LDR for menor que MUD e LED = LOW
// Código Fade In


Agora passas isso para código que o Arduino entenda. Não podes esperar que te façamos tudo, acho que é importante que sejas tu a fazer, para depois veres o fruto do teu trabalho.

;) eu tou a tentar , mas sem ver efeitos começa a ser complicado! Mas compreendo o teu ponto de vista.
Para os mais curiosos podem ver o broadcast do projecto : http://www.wate-r-evolution.com/AquaStatus/index.html# se virem fumo é normal!

Offline anaes

  • Mini Robot
  • *
  • Mensagens: 26
Re: LDR - com fade de acordo com a luminosidade
« Responder #13 em: 24 de Novembro de 2009, 18:03 »
Código: [Seleccione]


int ledPin2 = 11;
        int val=0;
       
void setup() {

val=analogRead(0);

if(val> 10){
     ledPin2==HIGH;
     }
     
    else{ledPin2==LOW;}
   
   // fade in from min to max in increments of 5 points:

  if(val<800 && ledPin2==HIGH){
  for(int fadeValue = val ; fadeValue <= 255; fadeValue +=5) {

    // sets the value (range from 0 to 255):
    analogWrite(ledPin2, fadeValue);   
     
    // wait for 30 milliseconds to see the dimming effect   
    delay(30);                           
  }
}
if(val>800 && ledPin2==LOW){
  // fade out from max to min in increments of 5 points:
  for(int fadeValue = val ; fadeValue >= 0; fadeValue -=5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin2, fadeValue);         
    // wait for 30 milliseconds to see the dimming effect   
    delay(30); 
                         
  } }

seria algo tipo isto ?... ou estou a dar um tiro muito ao lado?

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: LDR - com fade de acordo com a luminosidade
« Responder #14 em: 24 de Novembro de 2009, 18:45 »
Não podes ter ledPin2==HIGH, porque no início definiste que a variável ledPin2 é do tipo Inteiro.

Está quase.. Dou-te uma dica. Usa uma variável auxiliar...

(boolean ledOn = false;)