Go Down

Topic: Botao (Read 3661 times) previous topic - next topic

Fidel

Boas, tenho um projecto que gostava de implementar o arduino, tenho um arduino uno, mas nao tenho muitos conhecimentos em linguagem (para nao dizer nenhum).
O que eu pretendo fazer para já é ao carregar num botão de pressão a porta pwm devera aumentar a tensao de 0 a 5v gradualmente e demorar tipo 5 segundos a fazer isso.

Grato por qualqier tipo de ajuda
Paulo Teixeira

MarceloBoeira

Desculpa mas deixa eu ver se entendi direito,
você quer uma saida pwm regulando a tensão pela pressão do botão de pressão, gradualmente, mas de 5 em 5 segundos?


My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

Fidel

É quase isso.
O que eu quero é para funcionar de acelerador, ou seja quando carregar no botão a saída pwm tem de aumentar a tensão de 0 ate 5v, e demora tipo 5 segundos a fazer isso... mas tem de manter a tensão nos 5v só quando deixar o botão é que baixa a tensão.

Obrigado

MarceloBoeira

ta certo então...

Pressiona ele vai aumentando tipo 1v por segundo (5v - 5 Segundos) dai depois ele mantem na tensão que foi regulada.(teria q ter um display pra exemplificar) ...


Vou sair agora e depois eu entro coloco o código +- uma base pra você...

Desculpe a demora.

Vlw!
My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

Fidel

Não tens de pedir desculpa por nada, eu só agradeço.
So quero mesmo uma base, os valores depois eu ajusto... O principal é a cena do botão enquanto carrega acelerar e se soltar o botão desliga.

Abraço e muito obrigado

MarceloBoeira

while (botao==1){
           valor_pwm++;
           delay(1000);
           if (valor_pwm>=5){
           valor_pwm=0;
           }
}
delay(100);

bom eu acho q é mais ou menos isso, enquanto o botaão estiver pressionado ele incrementa a variavel. Se continuar pressionado no proximo loop ele da mais uma incrementada, se continuar pressionado ele aguarda 1 segundo e volta no loop. se ficar pressionado e chegar até >=5 ele volta pra 0v.
agora é só ajustar aos valores...
Qualquer coisa se não for isso ou alguma mudança posta ai que eu tento ajudar...
vlw!
My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

Fidel

Pelo que percebi acho que não é bem isso pois tem de se manter nos 5v ate deixar de carregar no botao. Mas ta la perto o resto sao ajustes, mas amanha vou experimentar e digo alguma coisa.

Obrigado
Abraço

MarceloBoeira

é isso que não estou pegando, pois a pressaõ do botão gera um valor, e você quer q esse valor interfira na tensão de 5v em 5 segundos mas não entendi como, em que sequencia...

faz tipo uma coisa assim pra mim entender...

pressiona botao
le valor
faz tal coisa...


meio linear dai eu entendo o que você quer e faço o código, ou parte mais significante do mesmoo...
My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

Fidel

Vamos lá ver se percebe melhor o que eu quero.
Quando carrego no botão a tensão da saída pwm tem de aumentar tipo 1v por segundo até aos 5v. Quando deixo o botão a tensão cai, mas enquanto tiver o botão pressionado tem de manter os 5v.

Abraço

MarceloBoeira

ta acho que agora foi, seria com while então, tipo enquanto botão pressionado avalia tempo e transforma em 1v por Segundo...


void loop(){
while (botao == 1){
         valor_pwm++;
         delay(1000);
         if (valor_pwm >= 5){
             valor_pwm =5;
         }
}
if  (botao == 0){
     valor_pwm = 0;
}
}

Acho que seria algo assim... só tem q configurar esse pwm com valores específicos...



My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

Fidel

Ok, obrigado.
Vou experimentar agora isso.

Muito obrigdo
Abraço ( vlw )

Fidel

Desculpa mas nao consegui que desse.
O que eu tenho neste momento é isso:
Quote

int valor_pwm =11;
int botao =8;


void setup()
{
  pinMode(valor_pwm, OUTPUT);
  pinMode(botao, INPUT);
}

void loop()
{
while (botao == 1)
{
         valor_pwm++;
         delay(10);
         if (valor_pwm >= 5)
         {
             valor_pwm = 5;
         }
}

}

A parte da montagem tenho a certeza que esta correcta ( também não e muita coisa).
Obrigdo

MarceloBoeira

valor pwm tem q ser o valor a ser usado em uma escrita analógica, você esta tribuindo ele há uma porta analógica e não valor de saida analógico, ...


ficaria assim:

analogWrite(PINO_DE_SAIDA, valor_pwm); 
My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

MarceloBoeira

int valor_pwm;
int botao =8;
int pino_saida = 11;

void setup()
{
  pinMode(pino_saida, OUTPUT);
  pinMode(botao, INPUT);
}

void loop()
{
while (botao == 1)
{
         valor_pwm = valor_pwm + 50;;
         delay(1000);
         if (valor_pwm >= 256)
         {
             valor_pwm = 256;
         }
}
analogWrite(pino_saida, valor_pwm);   
}
My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

MarceloBoeira

acho que funciona compilei não deu erro...

agora e ver se na praática tem o efeito correto...


Valeu, Aguardo Notícias..
My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy