# Problemas para finalizar código Contador Progressivo

**URL:** <https://forum.fazedores.com/t/problemas-para-finalizar-codigo-contador-progressivo/7670>\
**Category:** Arduino\
**Created:** [Setembro 20, 2020, 3:55am UTC](https://forum.fazedores.com/t/problemas-para-finalizar-codigo-contador-progressivo/7670 "2020-09-20T03:55:20Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![MAthaydes](https://avatars.discourse-cdn.com/v4/letter/m/3d9bf3/32.png) [@MAthaydes](https://forum.fazedores.com/u/MAthaydes)\
**Post date:** [Setembro 20, 2020, 3:55am UTC](https://forum.fazedores.com/t/problemas-para-finalizar-codigo-contador-progressivo/7670/1 "2020-09-20T03:55:20Z")

</div>

Boa noite amigos,

Quero implementar um contador progressivo, com Arduino Uno controlando dois displays sete segmentos, que quando acionado e mantido acionado um push botton o contador inicie a contagem de tempo em segundos, ao desligar o botão, o contador mantenha a informação da contagem e zere quando o botão for acionado de novo, reiniciando a contagem.

Exatamente como no vídeo abaixo, mas não encontro esse código:  
[https://www.youtube.com/watch?v=ys5W6V0ciDc](https://www.youtube.com/watch?v=ys5W6V0ciDc)

O código vai até a contagem, mas está sem o push botton , se alguém puder colaborar e me ajudar a resolver esse problema de iniciante.  
Abs

const int display\_1\_Pinout[7] = { 2, 3, 4, 5, 6, 7, 8 };  
const int display\_2\_Pinout[7] = { 9, 10, 11, 12, A0, A1, A2 };  
const byte anodeDisplay[10] =  
{  
0b1000000, //0  
0b1111001, //1  
0b0100100, //2  
0b0110000, //3  
0b0011001, //4  
0b0010010, //5  
0b0000010, //6  
0b1111000, //7  
0b0000000, //8  
0b0010000, //9  
};/_**/  
void setup()  
{  
for(int i = 0; i \< 7; i++)  
{  
pinMode(display\_1\_Pinout[i], OUTPUT);  
pinMode(display\_2\_Pinout[i], OUTPUT);  
}  
}/ **__** /  
void Display\_2\_Write(int number)  
{  
byte numberBit = anodeDisplay[number];  
for (int i = 0; i \< 7; i++)  
{  
int bit = bitRead(numberBit, i);  
digitalWrite(display\_2\_Pinout[i], bit);  
}  
}/ **_** _/  
void Display\_1\_Write(int number)  
{  
byte numberBit = anodeDisplay[number];  
for (int i = 0; i \< 7; i++)  
{  
int bit = bitRead(numberBit, i);  
digitalWrite(display\_1\_Pinout[i], bit);  
}  
}/_/  
void Display\_Show(int number)  
{  
int units = number % 10;  
int tens = number / 10;  
Display\_1\_Write(units);  
Display\_2\_Write(tens);  
}/**\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/  
void loop()  
{  
for(int cnt=0; cnt\<100; cnt++)  
{  
Display\_Show(cnt);  
delay(1000);  
}  
delay(10000);  
}

---

<div class="post-metadata">

**Author:** ![sksdutra](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/sksdutra/32/442_2.png) [@sksdutra](https://forum.fazedores.com/u/sksdutra)\
**Post date:** [Setembro 20, 2020, 2:23pm UTC](https://forum.fazedores.com/t/problemas-para-finalizar-codigo-contador-progressivo/7670/2 "2020-09-20T14:23:39Z")

</div>

Darei uma olhada assim que possível, domingo é complicado.

---

<div class="post-metadata">

**Author:** ![MAthaydes](https://avatars.discourse-cdn.com/v4/letter/m/3d9bf3/32.png) [@MAthaydes](https://forum.fazedores.com/u/MAthaydes)\
**Post date:** [Setembro 20, 2020, 2:25pm UTC](https://forum.fazedores.com/t/problemas-para-finalizar-codigo-contador-progressivo/7670/3 "2020-09-20T14:25:25Z")

</div>

Tudo bem, sei como é! Agradeço desde já. (estou tão focado nesse projeto que perco os dias da semana kkk)  
Ajuda o link no TinkerCard?

> **[Tinkercad | From mind to design in minutes](https://www.tinkercad.com/login?next=%2Fthings%2FaWdWIdcSg42-frantic-kasi-bombul%2Feditel%3Fsharecode%3DZty2Csq7GRYi8OSuF1uxkz_uvwmsx9T9OVQ9AnzzKpc)**
>
> Tinkercad is a free, easy-to-use app for 3D design, electronics, and coding.

Abração

---

<div class="post-metadata">

**Author:** ![sksdutra](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/sksdutra/32/442_2.png) [@sksdutra](https://forum.fazedores.com/u/sksdutra)\
**Post date:** [Setembro 20, 2020, 2:28pm UTC](https://forum.fazedores.com/t/problemas-para-finalizar-codigo-contador-progressivo/7670/4 "2020-09-20T14:28:02Z")

</div>

Vai ajudar bastante, pois não precisarei elaborar do zero.

---

<div class="post-metadata">

**Author:** ![MAthaydes](https://avatars.discourse-cdn.com/v4/letter/m/3d9bf3/32.png) [@MAthaydes](https://forum.fazedores.com/u/MAthaydes)\
**Post date:** [Setembro 20, 2020, 2:59pm UTC](https://forum.fazedores.com/t/problemas-para-finalizar-codigo-contador-progressivo/7670/5 "2020-09-20T14:59:02Z")

</div>

Tem o botão ligado no A3 e no GR que poderia ser o local dele para ativação (ou outro local).  
Somente coloquei um botão deslizante no alimentação dos displays, mas ao desligar e ligar o display não zera; só zera pelo botão reset da placa. Esse botão não precisa ficar aí.

A ideia vc entendeu então, botão ligado = contador crescente em segundos  
botão desligado = contador mostra último tempo  
botão pressionado novamente = contador zera e reinicia a contagem

---

<div class="post-metadata">

**Author:** ![MAthaydes](https://avatars.discourse-cdn.com/v4/letter/m/3d9bf3/32.png) [@MAthaydes](https://forum.fazedores.com/u/MAthaydes)\
**Post date:** [Setembro 21, 2020, 2:00am UTC](https://forum.fazedores.com/t/problemas-para-finalizar-codigo-contador-progressivo/7670/6 "2020-09-21T02:00:48Z")

</div>

Oi amigo. Avancei um pouco no projeto.  
O botão deslizante agora inicia a contagem, e para a contagem ao voltar ai estado LOW  
Agora, o problema é que não acho o código para resetar automático logo que o botão volta a ser acionado (ele segue a contagem).  
Está aqui no tinkercard, agradeço se der uma olhada!

> **[Tinkercad | From mind to design in minutes](https://www.tinkercad.com/login?next=%2Fthings%2FfPne5F5oEXb-copy-of-contador-0-a-99-com-dois-botoes%2Feditel%3Fsharecode%3D7aQ-9MxlGHYzZE-TWI9EqqmTYTpL0SWhctd_2aCjFNo)**
>
> Tinkercad is a free, easy-to-use app for 3D design, electronics, and coding.

---

<div class="post-metadata">

**Author:** ![MAthaydes](https://avatars.discourse-cdn.com/v4/letter/m/3d9bf3/32.png) [@MAthaydes](https://forum.fazedores.com/u/MAthaydes)\
**Post date:** [Outubro 3, 2020, 12:56am UTC](https://forum.fazedores.com/t/problemas-para-finalizar-codigo-contador-progressivo/7670/7 "2020-10-03T00:56:05Z")

</div>

O que eu consegui até agora:

1. Controlar um display de sete segmentos, dois dígitos, dez pinos. Entendi que esse display já vem multiplexado, assim sendo cátodo ficou tranquilo montar o circuito.

Usei um Sketch do [www.diarioeletronicohoy.com](http://www.diarioeletronicohoy.com) que permite contagem progressiva 0-99. Carreguei na placa e funciona.

1. Adicionei um sensor de vibração (sw-420) e coloquei ele como um botão, assim, quando HIGH ele faz o contador iniciar, e quando LOW o contador para.

2. E aqui que eu parei também; não consigo programar: ao parar o sensor: delay de 1 segundo, e em seguida zerar para começar nova contagem.

O zerar está difícil: estudei interrupção (atende pois sensor está no pino 2) para controlar isso, não consegui; botei return, também não acertei como fazer. Estou tentando entender se o MIlis faz esse controle, enquanto isso vim aqui perguntar:

O que sugeres?

Desde já agradeço!
