Olá, estou precisando usar vários botões para um projeto e fiz um programa simples de botões

basicamente se o nivel lógico do botão for alto, ele envia um caractere pela serial, se não for alto, não envia nada. Usei 15 botões no programa, mas ao fazer isso, o arduino começa a enviar vários caracteres como se eu tivesse apertando vários botões. Alguém já teve algum problema parecido? Isso é um problema físico ou de software?

sketch: http://pastebin.com/pKAaLsJM

Em anexo, tem uma foto do que aparece na serial

Exibições: 456

Responder esta

Respostas a este tópico

boa tarde,

estive a ver o teu código, os As do arduino são analógicos e não consegues ter digitais la. e tu estas assumir que essas entras digitais, nessa para o teu projecto não vai dar. 

  1. const int bn = A4;
  2. const int bo = A5; 
  1.   n = digitalRead(bn);
  2.   o = digitalRead(bo);

tenta usar o ciclo "switch / case".

mais uma coisa, por nao usar um ou dois teclados em vez de todo botões?

espero ter ajudado, boa sorte

Marco R.

Realmente um dos erros que tava dando foi por eu ter considerado que as entradas analógicas eram digitais de forma errada. Obrigado, Marco.

Oi HN, bom dia,

Como nao consigo ver seu codigo com o tabet que estou usando, acho que

voce esta' tendo um efeito chamado " bounce" .

Tem varios topicos aqui no LdG tratando do assunto.

 Este artigo tambem explica o que ocorre:

     http://www.labbookpages.co.uk/electronics/debounce.html

Rui   (Tablete teclado sem acentos)

Artigo muito interessante Rui, já usei um schmitt trigger na faculdade pra fazer um contador, mas vi que o problema era porque a maioria dos pinos estavam flutuantes, eu acredito

Teria que ver como vc ligou, mas meu palpite é que vc ligou a chave ao 5V e mais nada...

Acontece que os pinos de qualquer circuito digital se deixados abertos (desligados), quando lidos aparece o nivel 1. Para fazer seu circuito funcionar como vc pretende precisaria de um resistor de pulldown, um 10K para o GND ligado em cada pino.

Vc tb poderia usar as chaves ao GND e considerar ativo em 0.

Eduardo, eu tô usando a configuração pulldown com um resistor de 10k. Vi que grande parte dos caracteres que estavam sendo enviados pela serial eram porque eu quis testar sem fazer o circuito na protoboard, ou seja, só conectei 2 botões pra testar. Resolvi grande parte do problema, coloquei os 14 botões na protoboard em pulldown e agora a serial não fica enviando tudo aqui, mas os botões conectados aos pinos 0 e 1 (rx e tx) ficam sempre em HIGH não interessa se eu configurei como input e usei a configuração pulldown. Só falta resolver o problema desses dois pinos.

Os pinos de TX e RX são usados pelo debug. É por eles que vc consegue ler as variaveis pelo monitor.

O ideal seria deixar eles livres, ou usar para algum dispositivo serial.

Caso não queria mesmo vc vai precisar eliminar do codigo qualquer uso da serial.

Pelo o que eu pesquisei, e testei, só o pino 1(tx) pode ser configurado como entrada e saída digital. Não tem como fazer isso no pino 0. Obrigado pela Ajuda, post resolvido.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço