# Ajuda com projeto de pai e filho (LCD + variável)

**URL:** <https://forum.fazedores.com/t/ajuda-com-projeto-de-pai-e-filho-lcd-variavel/4809>\
**Category:** Arduino\
**Created:** [Setembro 27, 2017, 4:30pm UTC](https://forum.fazedores.com/t/ajuda-com-projeto-de-pai-e-filho-lcd-variavel/4809 "2017-09-27T16:30:57Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![vcircelli](https://avatars.discourse-cdn.com/v4/letter/v/e9c0ed/32.png) [@vcircelli](https://forum.fazedores.com/u/vcircelli)\
**Post date:** [Setembro 27, 2017, 4:30pm UTC](https://forum.fazedores.com/t/ajuda-com-projeto-de-pai-e-filho-lcd-variavel/4809/1 "2017-09-27T16:30:57Z")

</div>

Boa tarde pessoal  
Meu pai possui um Motorhome e com o razoável conhecimento que ele tem de elétrica/eletrônica ele criou uma caixinha com vários leds, onde cada led acende caso algo esteja errado, por exemplo: toldo aberto, escada aberta, carro ligado e farol desligado, carro desligado e lanterna ligada, válvula de água ligada, gerador ligado etc etc.  
Cada vez ele coloca mais leds nessa caixinha e está ficando complicado de lembrar o que é cada coisa, então dei a sugestão pra ele de colocar um LCD com as informações, os alarmes (por exemplo: “Toldo aberto, farol desligado”) substituindo a caixinha com leds. Ele acabou me dando a missão de pesquisar como faria.

Minha formação é Sistemas de Informação mas trabalho com redes, então do curso eu aproveitei apenas o básico de lógica de programação.

Antes de comprar um Arduino para fazer os testes, baixei o Proteus (e depois achei um site chamado Tinkercad) e comecei a fazer os labs básicos acendendo led e depois comecei a criar o código do que pretendo usar.

O esboço inicial está pronto, mas gostaria da ajuda de vocês para ver se cometi alguma falha grave (gambiarra propriamente dita) e também orientações quanto ao print no LCD, não estou satisfeito com a solução que encontrei.

Do jeito que consegui fazer, com os ifs dentro do while, o sistema precisa exibir toda a mensagem no LCD para depois repetir a verificação. Com dois ou três itens em desacordo, igual o código, OK. Mas e quando eu tiver, por exemplo, 10 itens em desacordo? Vamos supor que levaria sei lá, 30 segundos passando os itens no LCD. Se eu resolver um item nos três primeiros segundos (ligar o farol) demoraria mais 27 segundos até que o print do LCD terminasse e o while e consequentemente if se repetisse para aí sim ver que o farol foi apagado.

Não sei se existe alguma solução mais prática para isso. Obrigado!!

edit: não sei porque não consegui colocar o código todo no \< code \>, ficou apenas metade.  
Para não poluir o tópico, segue o código: [https://pastebin.com/pULnCQ50](https://pastebin.com/pULnCQ50)

---

<div class="post-metadata">

**Author:** ![evandroluiz](https://avatars.discourse-cdn.com/v4/letter/e/c4cdca/32.png) [@evandroluiz](https://forum.fazedores.com/u/evandroluiz)\
**Post date:** [Setembro 27, 2017, 5:26pm UTC](https://forum.fazedores.com/t/ajuda-com-projeto-de-pai-e-filho-lcd-variavel/4809/2 "2017-09-27T17:26:22Z")

</div>

```
  int contador = 0; // Fixa contador em 0 para while repetir pra sempre (gambiarra??)
  lcd.setCursor(0,0); // Posiciona cursor do lcd no início

  // Realiza verificação do estado do pin de cada acessório em loop infinito
  while (contador < 1) {

```

o loop() do arduido já é um while infinito, pq vc não coloca o lcd.setCursor(0,0); no setup() e tira essa “adaptação técnica” de contador?

no mais o código está muito bonito, parabéns!

---

<div class="post-metadata">

**Author:** ![vcircelli](https://avatars.discourse-cdn.com/v4/letter/v/e9c0ed/32.png) [@vcircelli](https://forum.fazedores.com/u/vcircelli)\
**Post date:** [Setembro 27, 2017, 5:31pm UTC](https://forum.fazedores.com/t/ajuda-com-projeto-de-pai-e-filho-lcd-variavel/4809/3 "2017-09-27T17:31:40Z")

</div>

Hummm interessante. Então eu não preciso ficar constantemente verificando se pin X está HIGH ou LOW porque desde que ele esteja no loop() já vai rodar em loop? Legal, obrigado. Vi tantos lugares dizendo que no loop() é onde entraria o código que acabei não relacionando o nome à função de loop propriamente dita.

Obrigado pelo elogio do código! Eu sinceramente não estou muito feliz, mas já é algo muito bom pra quem até semana passada nem sabia o que era Arduino

---

<div class="post-metadata">

**Author:** ![evandroluiz](https://avatars.discourse-cdn.com/v4/letter/e/c4cdca/32.png) [@evandroluiz](https://forum.fazedores.com/u/evandroluiz)\
**Post date:** [Setembro 27, 2017, 5:41pm UTC](https://forum.fazedores.com/t/ajuda-com-projeto-de-pai-e-filho-lcd-variavel/4809/4 "2017-09-27T17:41:13Z")

</div>

Isso, exato!

Setup() roda só na inicialização da placa e  
loop() roda em loop para sempre!

outra coisa:

```
 if (digitalRead(pinToldo) == HIGH) {
  estToldo = "Toldo ";
 } else if (digitalRead(pinToldo) == LOW) {
  estToldo = " ";
 }

```

vc concorda que se o pino não está HIGH então ele está em LOW?  
Não daria para simplificar esse pedaço do código então?

---

<div class="post-metadata">

**Author:** ![vcircelli](https://avatars.discourse-cdn.com/v4/letter/v/e9c0ed/32.png) [@vcircelli](https://forum.fazedores.com/u/vcircelli)\
**Post date:** [Setembro 27, 2017, 5:46pm UTC](https://forum.fazedores.com/t/ajuda-com-projeto-de-pai-e-filho-lcd-variavel/4809/5 "2017-09-27T17:46:01Z")

</div>

Concordo e daria, mas eu fiz isso para poder escrever " " na variável caso esteja LOW, assim caso esse item esteja ok (toldo fechado) o nome do toldo não apareceria no LCD quando eu fizer print de todas as variáveis estXXXX  
Não sei se tem algum outro jeito…  
Talvez definir as variáveis estXXX dentro do loop() e incializá-las como " "? Assim sempre que o loop voltar ao início a váriável seria zerada; se estiver HIGH ela é escrita e se estiver LOW continua zerada.  
Funciona declarar as variáveis no loop()? Elas serão zeradas igual imaginei?

---

<div class="post-metadata">

**Author:** ![evandroluiz](https://avatars.discourse-cdn.com/v4/letter/e/c4cdca/32.png) [@evandroluiz](https://forum.fazedores.com/u/evandroluiz)\
**Post date:** [Setembro 27, 2017, 5:56pm UTC](https://forum.fazedores.com/t/ajuda-com-projeto-de-pai-e-filho-lcd-variavel/4809/6 "2017-09-27T17:56:23Z")

</div>

ou só simplificar para algo assim:

```
if (digitalRead(pinToldo)) {
  estToldo = "Toldo ";
 } else {
  estToldo = " ";
 }
```
