Contador com botão de reset
Recebi alguns pedidos aqui no blog sobre contadores com botão de reset. No post Contador Display 7 segmentos – 3 dígitos, por exemplo, o contador era incrementado cada vez que o sensor óptico TCRT5000 era acionado, mas para zerar o contador era preciso reiniciar o Arduino.
Vou mostrar nesse post como implementar facilmente esse botão de reset do contador em dois circuitos: um utilizando display 7 segmentos de 3 dígitos, e outro utilizando um display LCD 16×2.
Contador com display 7 segmentos
Vou usar o mesmo circuito do post anterior do contador com display 7 segmentos, acrescentando apenas um push-button para resetar o contador. A lista de material desse circuito fica assim :
- 3 resistores de 1 K (um para cada dígito/anodo)
- 1 resistor de 220 ohms (led IR do sensor óptico)
- 1 resistor de 10 K (ligado ao sensor óptico – receptor)
- 1 resistor de 10 K (pull up do botão de reset)
- Display 7 segmentos de 3 dígitos CPS03631BR
- Sensor óptico reflexivo TCRT5000
- 1 push-button
No programa, acrescentei a definição do pino do botão (pino_botao_reset), ligado ao pino analógico A0.
Um IF verifica se o botão foi pressionado, e caso isso aconteça o valor da variável contador é zerada, e o display é atualizado (linhas 41 a 47). Esse programa utiliza a biblioteca SevSeg, que você pode baixar nesse link.
// Programa: Contador utilizando display 7 segmentos, // TCRT5000 e botao reset // Autor: Arduino e Cia // Carrega a biblioteca SevSeg #include "SevSeg.h" SevSeg sevseg; // Cria variaveis globais int contador = 0; // Ligado ao pino "coletor" do sensor óptico - Porta A5 ao Arduino int pinosensor = 19; // Pino ligado ao botao de reset int pino_botao_reset = A0; // Armazena o valor lido pelo sensor optico int leitura; // Armazena o estado do botao reset int estadobotao = 0; void setup() { // Utilizando display de anodo comum, // pinos dos digitos : 10 a 13 // Pino dos segmentos : 2 a 9 sevseg.Begin(1,13,10,11,12,2,3,4,5,6,7,8,9); // Controla a luminosidade - 0 a 100 sevseg.Brightness(20); // Define o pino do sensor optico como entrada pinMode(pinosensor, INPUT); // Define o pino do botao reset como entrada pinMode(pino_botao_reset, INPUT); } void loop() { sevseg.PrintOutput(); sevseg.NewNum(contador,(byte) 2); // Verifica se o botao reset foi pressionado estadobotao = digitalRead(pino_botao_reset); if (estadobotao != 1) { // Zera o contador contador = 0; } // Le as informações do pino do sensor optico leitura = digitalRead(pinosensor); // Verifica se o objeto foi detectado pelo sensor if (leitura != 1) { // Incrementa o valor do contador contador = contador++; // Loop caso o objeto pare sobre o sensor while(digitalRead(pinosensor) != 1) { sevseg.PrintOutput(); sevseg.NewNum(contador,(byte) 2); } } }
Contador LCD 16×2 e botão de reset
Para utilizar o contador com botão de reset no display LCD 16×2, utilizei o mesmo circuito, substituindo o display 7 segmentos pelo LCD. Lista de material:
- 1 resistor de 220 ohms (led IR do sensor óptico)
- 1 resistor de 10 K (ligado ao sensor óptico – receptor)
- 1 resistor de 10 K (pull up do botão de reset)
- LCD 16×2 HD44780
- 1 potenciômetro 10 K (ajuste contraste LCD)
- Sensor óptico reflexivo TCRT5000
- 1 push-button
Informações específicas sobre o display LCD utilizado, como pinagem, datasheet e outras informações você encontra no artigo Display LCD 16×2 – Backlight azul – HD44780.
O programa é o mesmo que eu utilizei para o display 7 segmentos, retirando o uso da biblioteca SevSeg e utilizando a biblioteca LiquidCrystal para controle do LCD:
// Programa: Contador utilizando LCD 16x2 e botao reset // Autor: Arduino e Cia #include <LiquidCrystal.h> LiquidCrystal lcd(12,11,5,4,3,2); // Cria variaveis globais int contador = 0; // Ligado ao pino "coletor" do sensor óptico - Porta A5 ao Arduino int pinosensor = 19; // Pino ligado ao botao de reset int pino_botao_reset = A0; // Armazena o valor lido pelo sensor optico int leitura; // Armazena o estado do botao reset int estadobotao = 0; void setup() { lcd.begin(16,2); // Define o pino do sensor optico como entrada pinMode(pinosensor, INPUT); // Define o pino do botao reset como entrada pinMode(pino_botao_reset, INPUT); // Informacoes iniciais no LCD lcd.print("Contador : 0"); } void loop() { // Verifica se o botao reset foi pressionado estadobotao = digitalRead(pino_botao_reset); if (estadobotao != 1) { // Zera o contador contador = 0; // Apaga o valor anterior lcd.setCursor(11,0); lcd.print(" "); // Mostra o valor zerado lcd.setCursor(11,0); lcd.print(contador); } // Le as informações do pino do sensor optico leitura = digitalRead(pinosensor); // Verifica se o objeto foi detectado pelo sensor if (leitura != 1) { // Incrementa o valor do contador contador = contador++; // Apaga o valor anterior lcd.setCursor(11,0); lcd.print(" "); // Mostra o valor do contador lcd.setCursor(11,0); lcd.print(contador); // Loop caso o objeto pare sobre o sensor while(digitalRead(pinosensor) != 1) {} } }
Muito Bom, me ajudou muito, seria possivel como seria para gravar o numero atual na EEPROM?
Bom dia,
Boa ideia. Apesar da EEPROM do Arduino ser relativamente pequena, dependendo da placa, salvar o valor do contador nessa memória não iria ocupar muito espaço.
Vou tentar montar um post sobre isso.
Abraço e obrigado !
Bom dia
preciso fazer um circuito com arduino
que va contar de 0 a 9 por pulsos, qando chegar no 9, ele vai soar uma sirene, e eu tenho que apertar um botão reset pra ele iniciar novamente.
pode me ajudar com isso ?
obrigado
Bom dia, Arduino e Cia.
Você venderia um contador desse, com reset e o display backlight azul ?
Pretendo adquirir um contador de pulsos.
Da seguinte forma:
Valor de cada pulso = 0,03571429
Ou seja:
A cada 28 pulsos = 1,0
Eu precisaria que o display me mostrasse no mínimo, (00,00) ou (000,00)
Por favor, entre em contato comigo.
[email protected]
Renato
Boa tarde,
Mandei um email para você.
Abraço !
Olá Amigo, queria o seu contato que estou precisando de um desses também. teria como ter seu contato ? Abraços
Oi Carlos,
Por favor entre em contato utilizando o formulário de contato no lado direito da página. Conversamos por email.
Abraço!
gostei muito do seu video mostrando um o trabalho com arduino!
mas meu motivo de estar entrando em contato com vc, é :recebi um trabalho para fazer do meu curso de eletronica no prazo de uma semana para entrega, com arduino como sou iniciante nao tenho ideia como começar a fazer e preciso de uma ajuda.
vamos ver se voce pode me ajudar
o trabalho é facil pra quem intende bem, tenho que fazer um contador de peça usando o arduino, esse contador tem que contar tres tipos de peça(sendo que terei que usar tres botoes),e mais um para reset. os resultados da contagem tem que aparecer na tela do pc,
quando for zerar ele tem que mostrar as contagem totais de cada peça separado. a placa com botoes eu me viro em fazer o problema é o codigo do arduino.
meu arduino e o uno.
ex:
quero contar tipos de bolinhas, quando as bolinhas que eu peguei forem de tamanho pequena eu adiciono no primeiro botao um click, quando a bolinha for media no segundo botao, e grande no terceiro botao, tem que constar os tres valores na tela quando mudar de especie de bolinhas eu zero, para continuar outra contagem.
se voce tiver tempo, e querer me ajudar blz eu ficarei muito agradecido, se voce nao quiser desconsidere essa mensagem.
[email protected]
Boa noite Jhone,
Meu problema realmente é o tempo. rs… Mas se quiser me mandar o código depois que conseguir programar, podemos discutir se falta algum detalhe no programa.
Abraço !
Vc teria algum contador Crescente/ descrencente, com chaves para a contagem dos pusos e com um contador de tempo decrescente? Seria para utilizar em um placar esportivo.
como posso trocar trocar o sensor por apenas um push button?
Boa noite,
Pode ser feito sim. Troque o sensor por um push button, fazendo a mesma ligação que eu fiz no botão de reset, mas ligando o "novo" botão na porta A5.
Abraço!
Boa noite trabalho com calibração de pluviometros que usam reed switches, capazes de gerar pulsos de 5Vdc, você pode entrar em contato via email e me mandar um preço para fazer um contador que use bateria, trabalho sempre no campo. Obrigado
Boa tarde,
Por favor utilize o formulário de contato no lado direito da página, assim podemos conversar por email.
Abraço!
Olá amigo, fiz um projeto com 3 displays de 7 segmentos que utiliza um sensor de temperatura LM35, também utilizando a biblioteca Sevseg do seu projeto e funcionou, porém os displays não mostram a parte decimal da temperatura mostrando somente a parte inteira, há alguma forma de corrigir esse problema com a biblioteca Sevseg que vc utilizou? Abraços!!!
Boa noite Rafael,
Você está enviando esse valor de temperatura para o serial monitor ? lá aparece a parte decimal ?
Abraço!
Exatamente, o valor decimal aparece normalmente no serial monitor, porém nos displays aparece somente a parte inteira do valor.
E possivel no lugar do sensor colocar um botao
Boa noite,
É possível sim. Faz o mesmo efeito.
Abraço!
Olá Amigo!!!
Alguem sabe informar se esta biblioteca é possível fazer um projeto com mais do que 4 display de 7 segmentos?
Abraços!!!
Bom dia Rafael,
Nesse caso você vai precisar de um CI como o Max7219, para gerenciar essa quantidade de display e "economizar" portas do Arduino:
http://www.arduinoecia.com.br/2013/07/ligando-2-displays-7-segmentos-ao.html
Abraço!
Obrigado por esta boa explicação, eu gostaria de usá-lo em combinação com um SSD Adafruit 1306 IC2. talvez você possa me ajudar com o código e explicação?
Bom dia,
O ideal seria eu ter um desses para testar, infelizmente (ainda) não tenho. 🙂
Abraço!
Olá cara! Eu usei este exemplo como base para fazer um projeto bem legal. Porém encontrei alguns probleminhas que me parecem bem bestas mas ainda não sei resolver. Eu substitui o pino 19 (sensor) pelo 15(A1), declarando ele no modo pull-up, e deixei o pino do botao do mesmo jeito por que estou sem resistores. 🙂
Depois eu configurei uma mensagem de lcd diferente, lá no início (linha 27) e mudei o nome da variavel contador para atuacoes.
O propósito é que ele conte um evento toda vez que um rele meu, NA, atuar. Envio o gnd pro rele e quendo o mesmo fecha a porta A1 zera, contando mais um. e o botão de reeste é o gnd com o pino A0, tamebm declarado pull-up.
Resultado: aparece tudinho na tele mas nao responde aos aterramentos dos pull-up. As mensagens ficam estáticas.
Usei um Pro-mini (Beestore) + Conversor serial USB (BTE13-009) + IC2 (CH340) e o LCD 16×9 (HD44780).
Espero que não tenha incomodado. Muito obrigado desde já! 🙂
Oi Rafael!
Cara, você já tentou testar esse programa por partes ? Assim acho que fica mais fácil de vc isolar esse problema de aterramento do pull-up, pq pode ser que nem seja esse o problema, às vezes é alguma coisa errada no software mesmo.
Abraço!
// Programa : atuacoes utilizando LCD 16×2 e botao reset
// Autor : Arduino e Cia
#include
#include
// Inicializa o display no endereco 0x27 por causa do IC2
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);
// Cria variaveis globais
int atuacoes = 0;
// Ligado ao pino A1 (pull-up) – Porta A1 ao Arduino
int pinocontato = 15;
// Pino ligado ao botao de reset
int pino_botao_reset = A0;
// Armazena o valor lido pelo pino A1 (pull-up)
int leitura;
// Armazena o estado do botao reset
int estadobotao = 0;
void setup()
{
lcd.begin(16,2);
// Define o pino A1 (pull-up) como entrada
pinMode(pinocontato, INPUT);
digitalWrite(15, HIGH); //ativando o pull-up do pino A1
// Define o pino do botao reset como entrada
pinMode(pino_botao_reset, INPUT);
digitalWrite(14, HIGH); //ativando o pull-up do pino A0
// Informacoes iniciais no LCD
lcd.print("Power Engenharia");
}
void loop()
{
// Verifica se o botao reset foi pressionado
estadobotao = digitalRead(pino_botao_reset);
if (estadobotao != LOW)
{
// Zera o atuacoes
atuacoes = 0;
// Apaga o valor anterior
lcd.setCursor(11,1);
lcd.print(" ");
// Mostra o valor zerado
lcd.setCursor(0,1);
lcd.print("atuacoes: ");
}
// Le as informações do pino A1
leitura = digitalRead(pinocontato);
// Verifica se houve aterramento do pino A1
if (leitura != LOW)
{
// Incrementa o valor do atuacoes
atuacoes = atuacoes++;
// Apaga o valor anterior
lcd.setCursor(11,1);
lcd.print(" ");
// Mostra o valor do atuacoes
lcd.setCursor(0,1);
lcd.print("atuacoes: ");
// Loop caso o objeto pare sobre o sensor
while(digitalRead(pinocontato) != HIGH)
{}
}
}
// Apaga o valor anterior
lcd.setCursor(11,1);
–>não seria (11,0) ???
ola o meu lcd e 16×2 porém ja vem com teclado o que muda na ligação?
Boa noite Anizio,
Qual o modelo do seu LCD ? Eu tenho um post sobre lcd com teclado: http://www.arduinoecia.com.br/2013/08/shield-lcd-16×2-com-keypad.html
Abraço!
Olá, se o seu modelo, for (provavelmente) o citado na resposta, você poderá inclusive configurar os botoes do seu LCD para resetar o contador, com estes botoes voce podera fazer menus e tudo mais. observe a resposta do blog. 🙂 FlW!
Haaa, inclusive já foi resolvido o post sobre um probleminha que tive com o código. Obrigado pelo post, muito útil.
opa, valeu Rafael ! 🙂
Abraço!
Olá, mesmo depois de ter realizado todo projeto, as letras não são impressas no display, porem consigo regular o brilho pelo segundo potenciômetro, gostaria de saber ser pode me ajudar.
Oi Ryumou,
Tente utilizar um LCD com um exemplo básico, para testar a ligação. Veja este post, por favor: http://www.arduinoecia.com.br/2013/12/lcd-16-x-2-backlight-azul-hd44780.html
Abraço!
Boa noite arduino e cia. Estou fazendo um contador de peças de uma estera porém meu programa está apresentando problema na hora que a peça para de frente o sensor o contador dispara usei o comando while porém ele finaliza o programa quando sua satisfação é falsa conto com sua ajuda
Boa tarde,
O programa já prevê essa condiçao (linha 61). você chegou a alterar algo ?
Abraço!
Estou com o mesmo problema. Obs: não alterei nada do código.
oi boa tarde
estou querendo fazer um com 10 botoes e cada um dele quando eu aperta me mostre um numero como eu poderia faz me dar uma ideia ai se for positivável
Olá amigo,
Primeiro, parabens pela aula… sou iniciante nos Arduinos.
A minha intenção é usar um arduino para fazer contagem mas, precisa ser Up e Down… Incrementar o contador no sentido horário e decrementar no anti-horário, para leitura de um eixo de motor ( Tipo um contador de Tape Deck ).
Como incluir isso em seu contador ?
obrigado
Oi Marcos,
É possível fazer sim, mas será necessário dar uma olhada no tipo de motor, eixo, etc, para ver como isso será feito.
Abraço!
Olá amigo,
Primeiro, parabens pela aula… sou iniciante nos Arduinos.
A minha intenção é usar um arduino para fazer contagem mas, precisa ser Up e Down… Incrementar o contador no sentido horário e decrementar no anti-horário, para leitura de um eixo de motor ( Tipo um contador de Tape Deck ).
Como incluir isso em seu contador ?
obrigado
Boa noite obrigado pelo site me ajudou muito. Gostaria de saber se tem como fazer o contador contar decrescente estou precisando fazer um contador de pesas com pulsos manual com botões. Tambem gostaria de saber quanto eu poderia cobrar por este serviço com o programa e montagem. Se puderem me ajudar agradesso desde já. Se puder me responder no meu email [email protected]. obrigado.
Consigo contar decresente
Boa noite,
Entre em contato utilizando o formulário de contato no lado direito da página. Combinamos por email.
Abraço e obrigado!
Boa tarde parabéns pelo projeto como sou novo no mundo do arduino gostei muito de sua pagina pois então posso colocar mais um display nesse projeto qual seria a mudança abraços.
Olá, meu nome é Lucas e estou trabalhando em um projeto onde utilizo este mesmo sensor com um circuito de precisão ajustável. Ele possui uma entrada analógica e outra digital. Utilizei este mesmo código nele, mas ele está incrementando a variável "contador" somente uma vez. É como se ficasse preso na função while() e quando eu tiro a variável é incrementada várias vezes com 1 único objeto. Se puder me ajudar ficarei muito agradecido, pois preciso resolver isso urgentemente! Abraço!
Olá, estou fazendo um projeto onde utilizo esse mesmo sensor com um circuito de precisão ajustável. Ele possui uma entrada digital e outra analógica. Utilizei este mesmo código, porém ele incrementa a variável "contador" somente 1 vez. É como se ficasse preso na função while() que é justamente o problema que ela deveria resolver, já que se eu tirá-la, a variável é incrementada várias vezes se o objeto parar sobre o sensor. Se você puder me ajudar ficarei muito agradecido, pois preciso resolver isso urgentemente! Abraço!
Bom dia, acredito que o que eu quero fazer seja muito simples, eu quero executar um programa no arduino e ele mande um pulso para um outro aparelho e pare.
Eu quero interromper esse pulso…
Tem como? Agradeço muito qualquer ajuda.
Oi Erick,
Você quer mandar um dado de um Arduino para outro, é isso ? Você pode simplesmente usar as portas digitais pra isso.
Abraço!
no me cuenta que puede ser ???
Boa noite,
Está usando o valor correto para a resistência do TCRT5000 ?
Você consegue mudar esse projeto. com a opção de eu determinar a quantidade de objetos por exemplo quando der 10 objetos o Arduíno ligar um rele por exemplo?. e porque tom uma ideia de colocar isso numa bobinadeira ai quando der a quantidade de voltas que eu estabelecer ele desliga meu rele que liga o motor da bobinadeira. Tem você me ajudar com isso.
Oi Anizio,
Posso desenvolver isso sim, por favor entre em contato utilizando o formulário de contato no lado direito da página, e vamos combinar por email.
Abraço!
Ola, como eu faria para ligar um display (7segmentos) e ele apresentar o numero 0 e quando eu pressionar o botão apresentar outro número? me ajuda!!! [email protected]
Boa noite, eu gosta de saber se é possível vocês elaborar um projeto de um botão que apertando uma vez acenda um led, apertando o mesmo pela 2ª vez acenda um 2º led, e na 3ª acenda um 3º led e na 4ª vez que apertar apague todos os leds.
Boa noite,
Seria um loop simples ? Ao apertar o botão novamente ele reiniciaria o processo ?
Abraço!
BOM DIA ! GOSTARIA DE SABER COMO FAÇO PARA QUE QUANDO EU DESLIGUE O ARDUINO ELE MATENHA A CONTAGEM E NÃO ZERE O CONTADOR ?
Oi André,
Grave esses dados na memória EEPROM do Arduino. Tenho um post sobre isso: http://www.arduinoecia.com.br/2015/03/gravar-dados-memoria-eeprom-arduino.html
Abraço!
Ola, quero fazer este projeto.
Pretendo aprender um pouco sobre o Arduíno.
Pode me informar o nome ou modelo?
Indica alguem confiavel para que eu compre?
Obrigado
Sou Robson… email [email protected]
Ola!
Sou iniciante no assunto, mas quero praticar para apreender.
Quero comprar o Arduino, mas não sei qual o modelo.
Podem me ajudar?
Boa noite Robson,
Eu começaria com um Arduino Uno, é a placa mais usada da linha Arduino, e possui muita documentação. Aqui no blog, por exemplo, eu uso o Uno como base para a maioria dos posts.
Depois que você adquirir conhecimento, pode partir para um Mega, um Leonardo ou até mesmo o novo Genuino 101.
Abraço!
Ola! Fiz a montagem com o LCD.
Usei o mesmo código, não fiz alteração alguma.
Mas não esta contando.
O contador fica sempre em ZERO.
Tem alguma ideia do que pode ter acontecido?
Oi Robson,
Tentou alterar o valor do resistor ligado ao sensor óptico ?
Abraço!
Fiz algumas mudanças no codigo.
Acredito que estava com algum erro de sintaxe.
Tirei o ++ e troquei por +1 ele começou a contar.
Sei que é a mesma coisa, mas funcionou!
algum projeto galera de boabinadeira para alto falantes
Cara queria saber como eu faço pra colocar um botao de opiçao pra contar dois pulsos=1 ou um pulso=1 asim progressivamente dois 4 pulsos=2 etc etc…
Como altero pra que funcione como contador de uma bobina feira… A cada giro um contato é feito e acrescentasse um número… Pode ajudar?
Boa tarde!
Gostava de saber se em vez do sensor optico dá para dois botões, um para iniciar a contagem e outro para parar com o botão de reset
Oi João,
Dá sim, vamos ver se consigo montar um post sobre isso em breve. 🙂
Abraço!
Adilson
Ok Arduino e Cia!
Agradecia muito pois é o que preciso para fazer uma PAP(prova de aptidão profissional)
Nota:o contador conta sozinho sé tem mesmo de ter botões para para iniciar o tempo, parar para registar e o boato de reset.
Abraço!
Boa noite!
Montei conforme conforme está no desenho com lCD e no display só aparece Contador:0 e não faz a contagem, o que pode está acontecendo será que o código esta com erro?. Me ajudem.
Não mudei nada no código copiei e colei. Meu e-mail: [email protected]
Velho altera a linha que tem:
contador = contador++;
para
contador = ++contador;
e ve a magica acontecer..
Muito bom esse projeto
Eu preciso de um projeto de bobinadeira para transformador que desliga os motores se possível ja agradeço muito ja tenho tudo falta só o código
Socorro !! Tentei montar este projeto usando um push bottom como fala o post acima, mas não deu. Funciona tudo, só não faz a contagem. Pra fazer a contagem o pino A5 tem que ser aterrado ou ligar ao 5v?
Boa noite,
Tente fazer a ligação com o pino A5 ligado ao push button, junto com um resistor conectado ao Vcc, como na imagem.
abraço!
Adilson
o meu esta apresentando este erro.
expected initializer before 'leitura'
Oi Iaslan,
Testei os dois programas e estão compilando normalmente. Não falta nada no código? por exemplo um "int" na frente da variável?
Abraço!
Adilson
eu nao coloquei o resistor de 10k acredito que seja isto
Adilson obrigado consegui resolver o problema
agora estou com outro problema
eu utilizei estes codigo que voce nos explicou e coloquei mais 3
sensores totalizando 4
no entanto quando eles sao ativados enves de contar no seu respectivo local marcado
a contagem fica variando de um local para outro
de uma olhada no codigo que eu estou utilizando
//Programa: Contador com sensor indutivo e capasitivo
#include
#include
// Inicializa o display no endereco 0x27
LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
//variaveis para ligar.
//contagem total
int pino_total = 6;
int valortotal = 1; //Variavel leitura sensor indutivo
int contadortotal = 0;
// variáveis sensor indutivo.
int pino_metal = 7;
int valormetal = 1; //Variavel leitura sensor indutivo
int contadormetal = 0;
// variaveis sensor capacitivo
int pino_vidro = 8;
int valorvidro = 1; //Variavel leitura sensor capacitivo
int contadorvidro = 0;
//variaveis sensor infra 2 plastico
int pino_plastico = 9;
int valorplastico = 1; //Variavel leitura sensor infra 3
int contadorplastico = 0;
void setup()
{
//Define o pino do sensor indutivo como entrada
pinMode(pino_metal, INPUT);
//Define o pino do sensor capacitivo como entrada
pinMode(pino_vidro, INPUT);
//pino total como entrada
pinMode(pino_total, INPUT);
//pino plastico como entrada
pinMode(pino_plastico, INPUT);
//Inicializa o display LCD 20×4 I2C
lcd.begin (20, 4);
lcd.setCursor(5,1);
lcd.print("Bem vindo");
delay (3000);
lcd.clear();
//display lcd total
lcd.setCursor(0,3);
lcd.print("total");
lcd.setCursor(9,3);
lcd.print(contadortotal);
//display lcd plastico
lcd.setCursor(0,2);
lcd.print("plastico");
lcd.setCursor(9,2);
lcd.print(contadorplastico);
//display lcd metal
lcd.setCursor(0,0);
lcd.print("metal");
lcd.setCursor(9,0);
lcd.print(contadormetal);
// display lcd vidro
lcd.setCursor(0,1);
lcd.print("vidro");
lcd.setCursor(9,1);
lcd.print(contadorvidro);
}
void loop(){
//logico sensor total
//Le o pino do sensor infra 1 total
valortotal = digitalRead(pino_total);
//Verifica se algum objeto foi detectado (valor0 = 0)
if (valortotal == 0)
{
//Incrementa o contador0 total
contadortotal++;
//Mostra o valor do contador1 no display
lcd.setCursor(9, 3);
lcd.print(contadortotal);
//Loop caso o objeto fique parado em frente ao sensor
while (digitalRead(pino_total) == 0)
{
delay(100);
}
}
//logico sensor plastico
{
//Le o pino do sensor infra 2
valorplastico = digitalRead(pino_plastico);
//Verifica se algum objeto foi detectado (valor3 = 0)
if (valorplastico == 0)
{
//Incrementa o contador3 total
contadorplastico++;
//Mostra o valor do contador1 no display
lcd.setCursor(9, 2);
lcd.print(contadorplastico);
//Loop caso o objeto fique parado em frente ao sensor
while (digitalRead(pino_plastico) == 0)
{
delay(100);
}
}
}
{
//logica sensor indutivo
//Le o pino do sensor indutivo
valormetal = digitalRead(pino_metal);
//Verifica se algum objeto foi detectado (valor1 = 0)
if (valormetal == 0)
{
//Incrementa o contador1 meetal
contadormetal++;
//Mostra o valor do contador1 no display
lcd.setCursor(9,0);
lcd.print(contadormetal);
//Loop caso o objeto fique parado em frente ao sensor
while (digitalRead(pino_metal) == 0)
{
delay(100);
}
}
}
{
//logica sensor capacitivo
//Le o pino do sensor capacitivo
valorvidro = digitalRead(pino_vidro);
//Verifica se algum objeto foi detectado (valor1 = 0)
if (valorvidro == 0)
{
//Incrementa o contador1
contadorvidro++;
//Mostra o valor do contador1 no display
lcd.setCursor(9, 1);
lcd.print(contadorvidro);
//Loop caso o objeto fique parado em frente ao sensor
while (digitalRead(pino_vidro) == 0)
{
delay(100);
}
}
}
}
agradeço deis de já se puder ajudar.
Ola, preciso de uma ajuda, é a mesma coisa, só que com um encoder rotary, ja fiz o contador tudo,mas nao consigo fazer o zeramento, poderia me ajudar?
Adicionei um push button mas ele ta com interferência pula vários dígitos por vez devido a velocidade de clock, como corrijo por software?
oi tudo bem? teria como utilizar o sensor infravermelho sharp 3 pinos
Oi Fernando,
Nunca usei o sensor sharp, mas creio que com algumas mudanças no programa seria possível sim.
Abraço!
Adilson
Olá, boa tarde, vi em uns comentários acima que da pra mudar o sensor por um botao, a minha dúvida é: como que fica o código?
Sou novo com Arduino.
Meu projeto vai ser, cada vez que eu apertar o botão, contar +1, ex: se estiver marcando 32 no display 7 segmento, e eu apertar o botão, ai muda para 33, apertei d novo 34, etc…
Grato desde já.
Olá, boa tarde
Vi em uns comentarcom acima que da para trocar o sensor por um botão, minha duvidd é: como que fica o código?
Sou novo no mundo do arduíno.
Meu projeto vai ser um contador, ou seja, cada vez que eu apertar o botão, vai somar +1. Tipo, se no display de 7 segmento estiver o número 32, e eu apertar o botão, vai somar +1 e ficar 33, apertei d novo e muda para 34, etc…
Grato desde ja
Olá, fiz o projeto exatamente como o do site, só que na hora de compliar da o erro:
Erro compilando para a placa Arduino/Genuino Uno
o que sera que pode ser?
Boa noite ! Arduino e Cia, se eu fosse usar esse mesmo projeto em um display de 7 segmentos de 02 digito catodo comum, o que mudaria ? fico no aguardo, obrigado.
No uso do Arduino MEGA pinagem continuaria a mesma ?
Boa noite,
Mesma coisa. Abraço!
Adilson
teria como usar sensor ultrassonico no lugar ?
Oi Vinicius,
Com algumas alterações no programa, poderia usar sim, tranquilamente.
Abraço!
Adilson
holaaa una ayuda porfavor, el codigo que as dado no lo compila el arduino me sale "" ERROR COMPILANDO PARA LA TARJETA ARDUINO/FENUINO UNO.
ESTE Q ES EL CODIGO Y NO LO Compila
>>>>>>>>>>>>>>:
// Programa: Contador utilizando Display de 7 segmentos y TCRT5000
// Los cambios y adaptaciones: Arduino y Co
//
// Con base en el ejemplo de la biblioteca SevSeg, Decano de lectura
// [email protected]
# include "SevSeg.h" // Cargar la biblioteca SevSeg
SevSeg sevseg;
// Crea variables globales
int contador = 0 ;
// conectado a la clavija "colector" del sensor óptico – a puerto A5 Arduino
int pinosensor = 19 ;
int lectura; // Almacena el valor leído por el sensor
void setup ()
{
// pantalla utilizando pin ánodo común de dígitos 10 al 13
// segmentos PIN: 2 a 9
sevseg.Begin ( 1 , 13 , 10 , 11 , 12 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 );
// controles de brillo – 0 a 100
sevseg.Brightness ( 20 );
// Define el pasador del sensor optico como entrada
pinMode (pines, INPUT);
}
void loop ()
{
// Produce una salida en la pantalla
sevseg.PrintOutput ();
sevseg.NewNum (contador (byte) 2 );
// Lea la información del perno del sensor
lectura = digitalRead (pincel);
si (leer! = 1 ) // Comprobar si se ha detectado el objeto
{
contador = contador ++; // Incrementa el valor del contador
// Loop si el objeto se detiene en el sensor
, mientras que (digitalRead (pinosensor)! = 1 )
{
sevseg.PrintOutput ();
sevseg.NewNum (contador (byte) 2 );
}
}
}
Olá estou começando a mexer agora com arduino e não sei programação,gostaria de ajuda pra um projeto,estou precisando de um codigo de arduino que ao pressionar um botão tipo pulsador começa a contar um tempo de 10 minutos,mesmo pressionando novamente se matem contando o tempo,logo depois de passado o tempo gostaria de que desligasse e pra poder ligar de novo gostaria de que tivesse um outro botão tipo pulsador tmb pra poder rearmar o tempo,se não for pressionado o 2 botão o 1 não arma o tempo novamente.
detalhe para acionamente de um rele de 5V ligado ao arduino.
Se alguem puder me enviar o codigo meu email:[email protected]
Agradeço se alguem puder ajudar.
Olá!
Obrigado por compartilhar esse projeto.
Como faço pra alterar o programa, fazendo que cada pulso conte de 2 em 2?
Queria usar esse projeto em um placar eletrônico de basquete.
Estou iniciando no Arduino.
Desde já, muito obrigado!
Boa noite, estou com um problema, quando a contagem passa de 3 dígitos, ou seja, acima de 999, o 4 digito não reseta quando aperto o botão, exemplo, o número 1003, quando aperto o reset, aparece "0 3". Como posso resolver?
Boa noite,
Você está usando a versão com display LCD? Se for isso, na linha 41, aumente um espaço em branco, ele vai apagar o último caracter. Fica assim:
lcd.print(" ");
Abraço!
Adilson
Boa tarde.
Gostei da solução, mas ela não está rodando em meu Arduino.
Gostaria de um contato para auxílio se for possível.
Oi Artur!
Tudo bem? O que acontece? qual a versão do seu Arduino?
Abraço!
Adilson
Boa tarde!
Vi o artigo do contador e talvez com algumas alterações eu consiga executar uma ideia.
Eu não sei muito de programação mas gosto muito do assunto e do arduino.
Eu gostaria de fazer um contador que fosse capaz de contar quantas vezes um motor é ligado por dia. Pensei em usar o arduino associado à um relé ou não. Mas ele teria que considerar o tempo ligado do motor como uma unica contagem ficando ele ligado por 1 minuto ou 2 horas por exemplo. Se ele ligar e ficar 1 minuto e desligar faz uma contagem. Se no mesmo dia ele ligar e ficar ligado por duas horas outra contagem e assim por diante
Alguem poderia me mostrar um caminho?
Desde já o meu muito obrigado!