Go Down

Topic: utilizando Millis no display 16,02 (Read 502 times) previous topic - next topic

EdsonSantini

pessoal estou utilizando a funcion  Delay para mudar de tela  mas está atrapalhando outras funcion.
como posso utilizar a funcio Millis?
alguem poderia me ajudar?   
Grato
seque o Sketch  :

//  CONTROLE DE TEMPO COM BOTAO DE START

//  LCD I2C FUNCIONANDO

//  temp e humidade com LCD FUNCIONANDO
//  sensor DHT 22 FUNCIONANDO
//  FUNCIONANDO IF AND ELSE
//  EDSON SANTINI
//   29-08-2018
//  led vermelho funciona pelo botao de impulso
//  led amarelo pelo contador
//  temp e humidade com LCD FUNCIONANDO
//  sensor DHT 22 FUNCIONANDO
//  FUNCIONANDO IF AND ELSE

//                   LIGACOES
// LCD 2 LINHAS 16 COLUNAS
// PINOS LCD //    PINOS RDUINO
//  1 VSS - GND
//  2 VDD  + 5V
//  3 VO  POT 10K - CENTRO
//  4 RS - DIGITAL 9
//  5 RW - DIGITTAL - GND
//  6 E  -  D8
//  7  DO -  N/U
//  8  D1  - N/U
//  9  D2  -  N/U
//  10 D3  -  N/U
//  11  - D4 -  DIGITAL 5
//  12  - D5 -  DIGITAL 4
//  13  - D6 -  DIGITAL 3
//  14  - D7 -  DIGITAL 2 
//  15  - A (ANODO) - CENTRO DO POT (2) (RECEBE +)
//  15  - k  (KATODO) -   GND 

//  PINOS 24 E 26  SAIDA PARA RELE -  TEMPERATURA
// LED VERMELHO FUNCIONA PELO BOTAO DE IMPULO
// LED AMARELO PELO TIMER

//      TIMER ---- PARA CHOCADEIRA    LIGAÇÕES

//  BOTAO LIGA LED VERMELHO


//               BIBLIOTECAS

#include <TimerOne.h>
#include <Arduino.h>
#include <Wire.h>
#include "DHT.h" //Biblioteca do DHT
#include <LiquidCrystal.h> //Biblioteca do LCD
//LiquidCrystal lcd(9, 8, 5, 4, 3, 2); // configurações do LCD sem I2C
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x3F for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);




 #define PINODHT A1     //Pino para comunicação com DHT
#define TIPODHT DHT22 //DHT22(AM2302/ AM2321)
 
DHT dht(PINODHT, TIPODHT);    //Configuraçãoes do DHT

              // DECLARANDO PINOS DE SAIDA TEMPO



int Botao = 33 ;   //   LIGA CONTROLE DO TEMPO

int  LedVerde  =   36;  // LED 1  // SAIDA CONTROLE RELE MOTOR GIRO
int  LedVermelho =   38;  // LED 2 // LIGA QUANDO BOTAO DE  TEMPO DE GIRO LIGAR
                           
boolean estadoBotao = true;
boolean estAntBotao = true;
boolean estadoPisca = false;
unsigned long tempo1 = 0;
unsigned long tempo2 = 0;


               // DECLARANDO PINOS DE SAIDA TEMPERATURA
               
int azul      =  22; //  SAIDA SENSOR TEMPERATURA
int amarelo   =  24; //  SAIDA SENSOR TEMPERATURA LIGA RELE TEMPERATURA
int vermelho  =  26; //  SAIDA SENSOR TEMPERATURA

int tempPin = A1;    //  ENTRADA SENSOR DE TEMPERATURA
int valorSensorTemp = 0;     
int valorTemp;
float temperatura; // armazena temperatura



void setup() {  //.............  TEMPO SETUP
   
pinMode       (Botao, INPUT_PULLUP); // ENTRADA  33 liga led verm direto
pinMode       (LedVerde,  OUTPUT);   // saida para rele  38
pinMode       (LedVermelho, OUTPUT);   //  SAIDA 38 INDICA TEMPO LIGADO 
digitalWrite  (LedVerde,    HIGH);
digitalWrite  (LedVermelho,   HIGH);



             //  TEMPERATURA
{

  lcd.begin();
 lcd.backlight();
  Serial.begin(9600);  //tempo de leitura


  lcd.setCursor(0, 0);
  lcd.print("Testando o sen-"); //  ESCREVE  TESTANDO
  lcd.setCursor(0, 1);
  lcd.print("sor de tempera-");  //  SENSOR DE TEMPERATURA

//colocar tempo para leitura ??????????????
 {
  lcd.clear();                  //  LIMPA
  lcd.setCursor(0, 0);
  lcd.print("tura e umidade");   //  ESCREVE HUMIDADE
  lcd.setCursor(0,1);
  lcd.print("DHT22!");
 
//colocar tempo para leitura ??????????????
  {
  lcd.clear();
  dht.begin(); //Inicializa o DHT

  }
   pinMode (azul,     OUTPUT);   // PINO 22
   pinMode (amarelo,  OUTPUT);   // PINO 24
   pinMode (vermelho, OUTPUT);   // PINO 26


pinMode       (LedVerde,   OUTPUT);
pinMode       (LedVermelho,  OUTPUT);
digitalWrite  (LedVerde,     HIGH);
digitalWrite  (LedVermelho,     LOW);}


}}



void loop()  //  LOOP CONTROE DO TEMPO
 {

         estadoBotao = digitalRead(Botao);
         if(!estadoBotao && estAntBotao)
        {estadoPisca = !estadoPisca;
  }
          estAntBotao = estadoBotao;

if (estadoPisca) {
    digitalWrite (LedVermelho, HIGH );  //  se estiver contando tempo led ligado
}
      else {
      digitalWrite (LedVermelho, LOW); //  se não estiver contando tempo led  apagado
    }

if (estadoPisca) {
 
   if((millis() - tempo1) >=7500){        //  TEMPO  GIRO DO MOTOR CONTANDO DESLIGADO CONTANDO 2HS
    digitalWrite (LedVerde, LOW);         // LED LIGADO (VALOR NEGADO)
     
  }
  if ((millis() - tempo1) <=2500) {        //  TEMPO DO GIRO DO MOTOR LIGADO
  digitalWrite (LedVerde, HIGH);          //  LED DESLIGADO

  }
 if((millis() - tempo1) >= 10000)       // IMPORTANTE SOMAR OS TEMPOS DESLIGADO
     tempo1 = millis();                 //  +  LIGADO PARA ZERAR O CONTADOR
 
}else{ digitalWrite(LedVerde, HIGH);}
 delay (1);

                                 //  LOOP TEMPERATURA
                      //Ler a temperatura ou humidade leva cerca de 250 milisegundos!
 
  {
    float h = dht.readHumidity();              //Lê a temperatura em Celsius (padrão)
  float t = dht.readTemperature();           // Checando se qualquer leitura falhou.
  if (isnan(h) || isnan(t)) {
    lcd.setCursor(0, 1);
    lcd.print("Falha ao ler");
    return;
    float temperature, lim;
    lim = 37;  //  coloque a temp desejada ???
  }
  lcd.setCursor(0,0);
  lcd.print("Umid:  ");
  lcd.setCursor(6,0);
  lcd.print(h);
  lcd.setCursor(12,0);
  lcd.print("%U ");
  lcd.setCursor(0,1);
  lcd.print("Temp:  ");
  lcd.setCursor(6,1);
  lcd.print(t );
  lcd.setCursor(12, 1);
  lcd.print("*C ");
 
//delay (2000);


//  lcd.clear();
// lcd.setCursor (1,0);
 //  lcd.print(" teste");
 //   lcd.setCursor (0,1);
 

  lcd.setCursor (4,0);
  lcd.print ("do cursor ");
  delay(1000);
  lcd.setCursor (5,1);
  lcd.print (" segunda " );
  delay(1000);
  lcd.clear();
  lcd.setCursor (1,0);
  lcd.print (" linha ");
  lcd.setCursor (0,1);
  lcd.print  (" teste 2 ");
  delay (3000);
   lcd.setCursor (1,0);
   lcd.print(" ver como ");
   lcd.setCursor (2,1);
   lcd.print ("funciona ");
  delay (1000);


//  declaracao do time apos voide loop

 
     if (t <37.5) //  MINIMA  TEMPERATURA DESEJADA
  {
      digitalWrite (vermelho, LOW);  //  LIGAR RELE  ON
      digitalWrite (amarelo,  LOW);  //  SAIDA RESERVA
  }
     else if (t > 37.9)  //  MAXIMA TEMPERATURA DESEJADA
  {
      digitalWrite (vermelho, HIGH);   //  RELE OFF
      digitalWrite (amarelo,  HIGH);   //  SAIDA RESERVA OFF
  }      }} : smiley-confuse:  : smiley-confuse:  : smiley-confuse:

odometer

When posting code, please use code tags.


bubulindo

O teu código tem millis() já lá dentro... não funciona?
This... is a hobby.

Go Up