# Projeto escolar - Ajuda

**URL:** <https://forum.fazedores.com/t/projeto-escolar-ajuda/761>\
**Category:** Arduino\
**Created:** [Agosto 29, 2014, 5:59pm UTC](https://forum.fazedores.com/t/projeto-escolar-ajuda/761 "2014-08-29T17:59:30Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![julioat](https://avatars.discourse-cdn.com/v4/letter/j/aca169/32.png) [@julioat](https://forum.fazedores.com/u/julioat)\
**Post date:** [Agosto 29, 2014, 5:59pm UTC](https://forum.fazedores.com/t/projeto-escolar-ajuda/761/1 "2014-08-29T17:59:30Z")

</div>

Ainda estou no 1 ano do ensino médio. E foi proposto elaborar uma ideia de economizar de forma inteligente água e energia( devido os problemas no Brasil). Como sou curioso e gosto de eletrônica e informatica pensei em fazer algo pratico, ( sei que todos os outros grupos vão fazer apenas teorias).

Minha ideia seria o seguinte…  
Como em uma residencia o chuveiro e o principal foco de consumo de energia e água pensei em algo para fazer um controle.

Queria simular esse sistema da seguinte forma :  
1 led azul para agua  
1 branco pra energia

quando o chuveiro e ligado( envio “L” na serial) ambos os leds acendem e começa uma contagem. Quando o chuveiro e desligado envio ''D" na serial) para-se a contagem.

Quando liga novamente inicia-se a contagem de onde parou e assim ate estourar o tempo estipulado.

A minha duvida e como fazer essa contagem do tempo do chuveiro( no caso led) ligado e desligado?

---

<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:** [Agosto 29, 2014, 6:47pm UTC](https://forum.fazedores.com/t/projeto-escolar-ajuda/761/2 "2014-08-29T18:47:59Z")

</div>

Referência: [http://arduino.cc/en/Reference/Millis](http://arduino.cc/en/Reference/Millis)

---

<div class="post-metadata">

**Author:** ![gnrcampos](https://avatars.discourse-cdn.com/v4/letter/g/a88e57/32.png) [@gnrcampos](https://forum.fazedores.com/u/gnrcampos)\
**Post date:** [Agosto 31, 2014, 1:18am UTC](https://forum.fazedores.com/t/projeto-escolar-ajuda/761/3 "2014-08-31T01:18:08Z")

</div>

Julio, apesar de não ter experiência com o Arduino em sí, a contagem de tempo em microcontroladores em geral é feita por meio de periféricos chamados timers. Eles básicamente são contadores de pulsos de clock (o sinal que faz o microcontrolador funcionar) e geralmente são de 8, 16 ou 32 bits. Geralmente há também nos microcontroladores uma estrutura chamada de PLL que pode ser configurada para diminuir a frequência do clock que chega ao timer, permitindo contagens de tempo maiores. Para ilustrar:  
Timer de 16 bits = 2ˆ16 = 65536 pulsos de clock antes de estourar.  
Clock do Arduino = 16Mhz = 16000000 pulsos por segundo  
Se conectado diretamente ao clock principal, o timer só vai conseguir contar até 0,004096 segundos.  
Se vc usar um divisor, por exemplo, com uma razão de 16:1, o clock que chega ao timer vai passar para 1000000Mhz, permitindo que seu timer conte até 0,065536 segundos.  
Por não ter experiência com o Arduino, não sei os limites de seu divisor, mas no baixo nível essa é a lógica. Provavelmente o que você vai ter que fazer é:  
1- Configuração:

- Escolher um timer para utilizar
- Configurar o divisor desse timer
- Montar a rotina de tratamento de interrupção para esse timer (é a função que é chamada quando o timer estourar)  
2 - Execução:
- Quando receber “L” pela serial, ligar o timer.
- Quando receber “D” pela serial, desligar o timer.
- Quando o timer estourar, incrementar uma variável que vai contar quantos estouros de timer já ocorreram. Comparar com o valor que representa o número de estouros do timer que somados são iguais ao tempo que você estipulou. Caso esse valor seja atingido, tomar a atitude que você determinar (por exemplo, acender um terceiro LED indicando que o tempo esgotou).

Provavelmente o Arduino faz tudo isso quase sozinho pra você, mas o básico á isso aí!
