LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: Skilgannon em 31 de Janeiro de 2010, 11:27

Título: Blink + fade
Enviado por: Skilgannon em 31 de Janeiro de 2010, 11:27
Olá a todas,

Tive o meu arduino a muito pouco tempo e entao estive a experimentar com ele.
Quando utilizo o exemplo fade no arduino, se ligo o LED ao pin 13 ( fazendo a devidas alteração no codigo), ele faz blink. Mas se ligo ao pin 9 ele já faz o fade correcto.
Alguem tem ideia do porque? Está estragado o arduino?

Cumprimentos
(edit)
Também não funciona com o pino 12, mas com o 11 já funciona.
Título: Re: Blink + fade
Enviado por: TigPT em 31 de Janeiro de 2010, 12:47
Olá,

Posta o código e se possível o esquema de ligações que estás a fazer para te podermos ajudar ;)

PS:  se estiveres a utilizar o AnalogWrite ele só funciona nos pins que dizem "PWM" nesse pin (11,10,9,6,5,3)
Se estiveres a utilizar uma biblioteca como a SoftwareServo, já podes fazer em qualquer pin.
Título: Re: Blink + fade
Enviado por: metRo_ em 31 de Janeiro de 2010, 12:49
Podes estar descansado que está a funcionar muito bem, o que acontece é que no pino 13 e 12 como são saidas digitais ele vai variar entre 0 ou 5V enquanto que nos 11 e 9 são saídas PWM (http://en.wikipedia.org/wiki/Pulse-width_modulation). Basicamente um saida PWM é uma onde quadrada na qual se pode alterar o dutty-cicle e como isso alterar a tensão média na saída.
Título: Re: Blink + fade
Enviado por: Skilgannon em 31 de Janeiro de 2010, 13:07
O código está em baixo, eu só alterava o ledPin
mas deve ser como o metRo_ disse, o facto dos pinos não serem PWM

Muito obrigado =)


Código: [Seleccione]
int ledPin =9;
void setup(){

}

void loop(){
     for(int i=0;i<=255;i+=5){
      analogWrite(ledPin,i);
      delay(30);
    }
    for(int i=255;i>=0;i-=5){
      analogWrite(ledPin,i);
      delay(30);
    }
 
}
Título: Re: Blink + fade
Enviado por: oxytech em 31 de Janeiro de 2010, 20:39
o problema esta em declarares a variavel no ciclo for.

no segundo ciclo estas a dizer de novo que "i=0"

tens que fazer algo do genero:

Código: [Seleccione]
i=someshit;

for(;i<=255;i+=5){}

penso eu que seja isto! não tenho aqui o arduino para te confirmar.

cumps

edit: desculpa la, eu ja estava a fazer confusão com um problema que tive e ja estava a dizer as coisas mal ... como foi dito o mais provável é devido aos pinos pwm.

cumps