Boa noite,

Eu estou a tentar fazer o jogo do martelo..a ideia é o seguinte:

Utilizando um potenciómetro  deste género (Sliding Potentiometer Board Module) ler um valor na entrada A0  do arduino e com esse valor ligar vários leds dependendo da intensidade que o sinal tenha (0 a 1023). Mas para isso é necessário registar o valor máximo que atinge o potenciómetro.

O potenciómetro esta com a posição inicial 0 e tem uma mola que o coloca sempre nessa posição.

A minha duvida é como vou ler a posição máxima que ele atinge.

Obrigado pela leitura

código ja feito, 


int potenciometro = A0;
int valor = 0;
int resetPin = 13 ;

float a=0;
float b=0;


int led1 = 1;
int led2 = 2;
int led3 = 3;
int led4 = 4;


void setup() {

pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);

pinMode(resetPin, OUTPUT);


}

void loop() {

valor = analogRead(potenciometro);

if (valor >= 1 && valor <= 500 )
{
valor=1;
}
else if (valor > 500 && valor <= 1023)
{
valor=2;
}


switch (valor) {
case 1:

digitalWrite(led1, HIGH);
delay(2000);
digitalWrite(led2, HIGH);
delay(2000);

break;

case 2:
digitalWrite(led1, HIGH);
delay(2000);
digitalWrite(led2, HIGH);
delay(2000);
digitalWrite(led3, HIGH);
delay(2000);
digitalWrite(led4, HIGH);
delay(2000);

break;

}
digitalWrite(resetPin, LOW); // { BOtão de Reset }

}

Exibições: 242

Responder esta

Respostas a este tópico

Davi, 

legal seu projeto. vou dar algumas dicas (nem todas testada)

Para saber o valor máximo, vc pode fazer uma lógica assim

"Se valor_atual maior que valor_anterior então valor máximo é igual ao valor atual"

Depois que o processo todo acabar, vc zera o valor máximo.

Vc terá que reavaliar  o seu programa. não poderá ter delay como está.

Uma dica para quando vc estiver mais familiarizado com a programação (que eu acredito que é a mesma utilizada em teclados musicais que simulam piano, seria calcular a velocidade que o valor do potenciômetro sobre.

Por exemplo:

quando acionada completamente a alavanca, o potenciômetro cai de 0 a 1032. então vc calcula o tempo que ele levou de 0 a  255. Quanto mais rápido, mais forte foi a batida. faz isso para cada terço do percurso da alavanca (e da parte útil do ppotenciometro)

com isso, vc pode utilizar molas mais leves. Da outra forma, vc não tem como diferenciar os "muito fortes"

 

Boa noite Pedroso,

Obrigado pelas suas dicas mas infelizmente não possuo conhecimentos suficientes de programação para as aplicar.

O meu problema é mesmo esse conseguir medir qual o valor máximo que o potenciómetro atinge. 

David, 

Conhecimento se conquista, hoje com a internet depende apenas do seu interesse.  Espero que vc tenha interesse em não desistir na primeira dificuldade que tiver e sim, aprender com elas.

vc pode continuar com a lógica de IF, apenas remova o delay, a cada verificação do potenciômetro ele ajustará o status das lâmpadas. 

Ai verifique a lógica que passei no comentário anterior (do valor  máximo)

Explore mais a comunicação serial para entender o que está acontecendo e irá aprendendo.

Bom trabalho! 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço