LusoRobótica - Robótica em Português

Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: GnobarEl em 04 de Fevereiro de 2013, 23:47

Título: [Projecto] - Alvo dardos electrónico
Enviado por: GnobarEl em 04 de Fevereiro de 2013, 23:47
Viva!

Iniciei um novo projecto, que consiste em ligar o meu alvo de setas ao PC (sem fios) e assim poder criar jogos novos e criar uma maior interactividade com o jogo.

O alvo por dentro tem duas folhas de acetato, quando a seta bate no alvo, as folhas tocam uma na outra e fecham o circuito. Ambas as folhas estão ligadas com uma flatcable ao PCB e criam uma matrix.

O problema esta em conseguir receber o sinal que o circuito foi fechado.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fs8.postimage.org%2F4htri9hup%2FP1220544.jpg&hash=71f5969d2b2b9022630238b74e5a7db9bb7b7aa0) (http://postimage.org/image/4htri9hup/)

Como podem ver na imagem, soldei 3 fios, para testar. Por ex. se chantar o fio laranja com um dos pretos, o
circuito 'e fechado e aparece a respectiva pontuação no display.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fs9.postimage.org%2Fj85pdn8uz%2FP1220547.jpg&hash=3c3cb19d61750659e9857b7bc0d0444b998f621e) (http://postimage.org/image/j85pdn8uz/)

Nesta imagem podem ver as duas folhas de acetato, cada uma com as pistas e os pontos que vão tocar na outra folha quando uma seta atinge o alvo.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fs7.postimage.org%2Fo1b4p59zr%2FP1220550.jpg&hash=c07d580bb28955b28d3e2bd7ab2a40e0d6757ea8) (http://postimage.org/image/o1b4p59zr/)

As duas flat cables ligadas ao PCB.

Feita a introdução do projecto.

Problemas.

Numa das folhas de acetato, se colocar o multímetro, em dois pontos seguidos, consigo fazer o teste de continuidade, no entanto se seguir as pistas e afastar muito as duas pontas de prova do multimetro, deixo de consegui efectuar o teste. Mesmo estando na mesma pista.

Se ligar dos dois fios ao arduino, sempre que uma seta atinge o alvo na posicao X e fecha o circuito, era suposto o arduino detectar isso. Mas não... não detecta nada...

Alguma sugestão? Se precisarem de informação adicional basta dizerem.

Obrigado.
Título: Re: [Projecto] - Alvo dardos electrónico
Enviado por: GnobarEl em 19 de Fevereiro de 2013, 10:46
Viva,

Estive a ligar as flats do alvo ao arduino, e estou a utilizar a library keypad http://playground.arduino.cc/code/Keypad (http://playground.arduino.cc/code/Keypad) para detectar qual o ponto onde a seta acertou.

Pelo que entendi, e 'e aqui que começam os problemas, o arduino, lê todas as linhas e colunas.
Por ex. começa a ler a linha 1 e varre as colunas todas.
Linha 1 Coluna 1
Linha 1 Coluna 2
....
quando termina, muda de linha e inicia o mesmo processo.
Linha 2 Coluna 1
Linha 2 Coluna2
....

O que acontece, 'e que quando a seta bate no alvo, o circuito 'e fechado e aberto tão rapidamente que o arduino nem sempre consegue detectar.
Umas vezes detecta, outras não.

Alguma sugestão para contornar esse problema?

Obrigado.
Título: Re: [Projecto] - Alvo dardos electrónico
Enviado por: dio123 em 19 de Fevereiro de 2013, 10:57
Ou seja,
tens 7 fios que vem do dardo, linhas e colunas.

Isso de ser demasiado rápido, pode ter haver com a ligação Serial, se estiveres a ver o resultados no serial monitor ou a o contacto linha com coluna é tão rapido que o arduino pode estar a meio e do codigo e não apanha a  linha e coluna que foi tocada.



Título: Re: [Projecto] - Alvo dardos electrónico
Enviado por: tarquinio em 19 de Fevereiro de 2013, 12:34
Se a questão é mesmo a velocidade de varrimento ser lenta, para resolveres o problema sem usar hardware diferente tens de conseguir torná-la mais eficiente. Não me parce que tenha a ver com a velocidade da ligação Serial, a não ser que estejas a fazer prints a toda a hora...
Sugeria que tentasses olhar para o modo como a library funciona e tentares aproveitar um pedaço do código da função "scanKeys" para fazeres a tua versão mais eficiente. Por exemplo, em vez de varreres as posições todas, varreres logo as linhas, e ao descobrir um contacto numa das linhas ir logo á procura da coluna certa. Pelo que vi do código, ele faz o varrimento completo, e vai guardando os vários botões pressionados em cada varrimento. Isto permite detectar por exempl vários botões pressionados ao mesmo tempo, mas tambem vai tormar a coisa bastante mais lenta. Visto que no teu caso só vais querer um de cada vez, podes tornar a coisa mais directa.
Título: Re: [Projecto] - Alvo dardos electrónico
Enviado por: dio123 em 19 de Fevereiro de 2013, 13:54
então nesse caso se calhar é melhor não usar a biblioteca keypad.

Explica-me uma coisa.

ao lançares o dardo,ao prencionar a posição, o pino que representa a linha e o pino que representa a coluna tem 5v?

Se ambos tiverem 5v podes simplesmente fazer  if linha1=high and coluna2=high{pontos = 20}, mas não sei se vais ter o mesmo problema

Ou exprimentares http://www.instructables.com/id/Arduino-3-wire-Matrix-Keypad/step2/Wiring-up-the-resistors/ (http://www.instructables.com/id/Arduino-3-wire-Matrix-Keypad/step2/Wiring-up-the-resistors/) mas depende quanto tempo a linha com coluna fica a fazer contacto entre si, porque pode não ter tempo suficiente para porta analogica ter uma leitura certa.