Botao

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

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?

É 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

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!

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

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!

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

é 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...

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

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...

Ok, obrigado.
Vou experimentar agora isso.

Muito obrigdo
Abraço ( vlw )

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

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

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);

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);
}

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

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

Valeu, Aguardo Notícias..

Pois na pratica nao esta a funcionar, nao tem como voce testar?? so para ter certeza que nao me estou a enganar.

Obrigado

vou testar...
tu pode me dizer o que acontece?

tu sabe como montar a entrada do botão?

coloca 5v no botaão e um resistor ligado a entrada do botao e o GND, depois liga na saida do botão o pino 8 digital.

Sim, eu sei. A parte da montagem tenho a certeza que esta certa.
Basicamente nao acontece nada, ainda pensei que fosse do delay ser muito lento mas nao.

Obrigado

consegui!