Go Down

Topic: Contador de passagem... (Read 8 times) previous topic - next topic

ViniciusPolo

#10
Oct 24, 2011, 05:14 am Last Edit: Oct 24, 2011, 05:18 am by ViniciusPolo Reason: 1
Olá.
Vamos começar com o exemplo do botão que é simples e facil de entender, e seu projeto é basicamente isso.
Vc vai precisar de um botão e um resistor de 10k.
Ligue os botao como nessa imagem na entrada digital 2 e o outro na 3.



Feito isso conecte seu Arduino e abra o Arduino IDE.
Tente colar o seguinte código:


const int botaoIncrementa = 2;//Definindo um nome para o Pino onde o botao incrementar está conectado, nesse caso Pino Digital 1. Apenas um regra para facilitar e nao precisarmos sempre lembrar em qual pino está conectado cada botao
const int botaoReset = 3;     //Definindo um nome para o Pino onde o botao incrementar está conectado, nesse caso Pino Digital 1
int numeroResistores = 0;     //Cria a variavel onde vamos armazenar o numero de resistores, e ja atribui o valor zero para ela

void setup() {
  pinMode(botaoIncrementa, INPUT);//Definindo o pino do botao como entrada
  pinMode(botaoReset, INPUT);     //Definindo o pino do botao como entrada
  Serial.begin(9600);             // Inicia a comunicaçao serial, vamos usar para enviar o numero de resistores
}

void loop(){         //Funcao princiapl que vai ser um loop infinito

  if (digitalRead(botaoIncrementa) == HIGH) {  //Checa se o botao incrementa está apertado, caso esteja executa o que está dentro das cheves do if
  numeroResistores++; //Esse comando incrementa o numero de resistores em 1
  Serial.print("Numero de resistores = ");//Imprime na serial essa mensagem
  Serial.println(numeroResistores);//Imprime na serial o valor da variavel, no caso numeroResistores. ln no final indica que depois da mensagem vai pular uma linha
  }
 
  if (digitalRead(botaoReset) == HIGH) {  //Checa se o botao reset está apertado, caso esteja executa o que está dentro das cheves do if
  numeroResistores = 0; //Reseta o numero de resistores para zero
  Serial.print("Numero de resistores resetado para = ");//Imprime na serial essa mensagem
  Serial.println(numeroResistores);//Imprime na serial o valor da variavel, no caso numeroResistores
  }
  delay(1000);//Espera um segundo antes de verificar novamente, esse tempo vc pode variar para evitar de checar duas vezes, pois o microcontrolador é capaz de checar milhares de vezes por segundo.
  //Se vc deixar de colocar esse tempo um simples pressionar de 100 milissegundos é suficiente para incrementar em mil o numero de resistor. Depois vc terá de ajustar com o seu equipamento funcionando para o melhor tempo
}




Se nao conseguir vou anexar o arquivo compactado do projeto, basta descompactar e abrir com o Arduino IDE.
Acabei errando nesse codigo anexado os pinos dos botoes, mude de 1 e 2 para 2 e 3 como no codigo desse post que está certo.
Não esqueça de abrir o serial monitor em Tools para ver as mensagens.
Qualquer duvida me diga.
E vamos continuar.
Precisa de produtos para seu Arduino?
Não deixe de ver meus produtos no Mercado Livre!
http://lista.mercadolivre.com.br/_CustId_76934379

rafa_mazali

vinicius

o código deu certim, funcionou legal

só vai faltar configurar o tempo de espera quando tudo tiver montado para ajsutar melhor

agora só falta a parte dos TIL e do Lcd,

me fala uma coisa, o TIL tem velocidade de "chaveamento" rápida o suficiente para poder passa os resistores em uma velocidade até razoável?

se não a contagem sera muito lenta...


rafa_mazali

cara fiz um teste aqui colocando o fototransistor ao invez do botao..

na hora que eu coloco o foto no pino 2 ele dispara a contagem diretao igual doido,, mesmo sem voltagem no pino..

o que pode ser isso,, ai depois que eu tiro o fio do pino 2 e coloco o fio do push bottom ele fica normall

ViniciusPolo

Olá.
Esse problema me parece que vc colocou o fototransistor invertido. Mas nao tenho certeza pois eu uso de maneira diferente meus botoes, nao como essa figura que postei do teste.
Melhor mesmo é vc testar eles separados antes para ter certeza que estao funcionando, pois muitos dos que comprei vieram queimados.
Primeira coisa para testar o emissor que é o escuro, ligue ele como se fosse um led. Perna maior no positivo a outra num resistor de 220R ou mais e o resistor no negativo. Depois use uma webcam para ver se ele acende ou nao, pois é invisivel ao olho humano.
Vou fazer o teste do fototransistor aqui na minha protoboard e depois montar como eu faço o botao e te envio uma foto.
Estou meio ocupado, mas acho que até amanha consigo.
Se estiver com pressa pode procurar na net depois tirar duvida.
Sobre o tempo eu nunca testei, pois quando usei o fototransistor no meu TCC eu nao precisava de acionar rapidamente. Só testando mesmo. :D
Vai postando os problemas e fazendo a parte mecanica.
Até.
Precisa de produtos para seu Arduino?
Não deixe de ver meus produtos no Mercado Livre!
http://lista.mercadolivre.com.br/_CustId_76934379

rafa_mazali

ok vinicius

fiz uns testes aqui, liguei o coletor do transistor nos 5v direto, ai no emissor coloquei o resistor de 10k aterrando e mandei o emissor para a entrada digital 2, continuava disparado, mas ai fiz um teste inverti a leitura digital de if (digitalRead(botaoIncrementa) == HIGH, troquei por LOW, e resolveu, ele conta somente quando interrompe o feixe, mas se puder poste para mim como voce faria somente para eu ter uma ideia melhor, estou terminado a parte mecanica, ainda falta testar se da para fazer um feixe bem fino para o led interromper,, e depois testar a velocidade. Com tudo pronto só vai faltar o lcd

aguardo seu comentario

e mais uma vez obrigado pela ajuda..

Go Up