Bom Dia Pessoal!
Estou com 2 dúvidas a respeito de um programa que estou desenvolvendo, pesquisei em diversos lugares e não achei a solução, creio que seja algo simples.
Descrição do funcionamento do programa:
É uma especie de elevador, o funcionamento é:
Subir: 4 segundos (led verde)
Aguardar: 2 segundos (em cima)
Descer: 3 segundos (led vermelho)
Aguardar: 1 segundo (em baixo) (led amarelo)
REPETIR O LAÇO (5000 vezes)
Adicionei um display de 16 x 2 para exibir o numero de vezes que o "elevador" subiu.
1º Problema:
O LCD, no campo em que aparece a contagem de ciclos, (segunda linha do display), toda vez que o programa roda 1 vez, ele apaga toda a linha para exibir o numero de ciclos, (ele conta e exibe certo, porem apagar cada vez que o laço repete uma vez).
2º Problema:
Necessito inserir um botão (Push BUtton sem retenção) de Start do programa e um botão de Stop do programa, porém já tentei com comando While e comando For e não tive sucesso.
Segue programa abaixo:
//Programa: Teste de Display LCD 16 x 2
//Autor: FILIPEFLOP
//Carrega a biblioteca LiquidCrystal
#include <LiquidCrystal.h>
//Define os pinos que serão utilizados para ligação ao display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
//Define o número de colunas e linhas do LCD
lcd.begin(16, 2);
pinMode(8, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
}
void loop()
{
int SOBE;
int DESCE;
int Intervalo;
int i=0;
SOBE= 4000;
DESCE= 3000;
Intervalo= 2000;
for (i=0; i<5000;i++){
digitalWrite(8,HIGH);
digitalWrite(10,LOW);
digitalWrite(9,LOW);
delay(SOBE);
digitalWrite(10,LOW);
digitalWrite(9,LOW);
digitalWrite(8,LOW);
delay(Intervalo);
digitalWrite(10,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(DESCE);
digitalWrite(10,LOW);
digitalWrite(9,LOW);
digitalWrite(8,LOW);
delay(Intervalo);
digitalWrite(10,LOW);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
delay(1000);
//Limpa a tela
lcd.clear();
//Posiciona o cursor na coluna 3, linha 0;
lcd.setCursor(0, 0);
//Envia o texto entre aspas para o LCD
lcd.print("ENSAIO DINAMICO");
delay(5000);
lcd.setCursor(0, 2);
lcd.print("N. CICLOS:");
delay(5000);
lcd.setCursor (11,2);
lcd.print (i);
delay(5000);
}
}