Este tópico contém respostas, possui 2 vozes e foi atualizado pela última vez por  Diogo Zimmermann 1 semana .

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #161048

    Felipe Santos
    Participante

    Preciso colocar um temporizador para desligar a lampada automaticamente, fiz da seguinte maneira;

    //Controle do rele1
    Serial.println(readString);
    //Liga o Rele 1
    if (readString.indexOf(“?ligar”) > 0)
    {
    digitalWrite(pino_rele1, LOW);
    Serial.println(“Rele 1 Ligado”);
    ligado = false;
    delay (120000);
    digitalWrite(pino_rele1, HIGH);
    Serial.println(“Rele 1 Desligado”);
    ligado = true;

    Porém dessa forma, utilizando delay o status da lampada não é atualizado.
    Como poderia utilizar o millis() para esse caso?

    0
    #161436

    Olá, Felipe!

    Poderia enviar o código completo?

     

    Diogo – Equipe FilipeFlop

    0
    #161552

    Felipe Santos
    Participante

    Exatamente o publicado; https://www.filipeflop.com/blog/automacao-residencial-com-arduino-acenda-lampadas-pela-internet/

    //Programa: Automacao Residencial com Arduino e Ethernet Shield
    //Autor: FILIPEFLOP

    #include <SPI.h>
    #include <Ethernet.h>
    String readString;

    int pino_rele1 = 3;
    int pino_rele2 = 4;
    boolean ligado = true;
    boolean ligado_2 = true;

    //Informacoes de endereco IP, gateway, mascara de rede
    byte mac[] = { 0xA4, 0x28, 0x72, 0xCA, 0x55, 0x2F };
    byte ip[] = { 192, 168, 0, 110 };
    byte gateway[] = { 192, 168, 0, 1 };
    byte subnet[] = { 255, 255, 255, 0 };

    EthernetServer server(80);

    void setup()
    {
    Serial.begin(9600);
    pinMode(pino_rele1, OUTPUT);
    pinMode(pino_rele2, OUTPUT);

    //Inicializa Ethernet Shield
    Ethernet.begin(mac, ip, gateway, subnet);
    server.begin();

    Serial.println(“FILIPEFLOP – Automacao Residencial”);

    //Desliga os dois reles
    digitalWrite(pino_rele1, HIGH);
    digitalWrite(pino_rele2, HIGH);
    }

    void loop()
    {
    EthernetClient client = server.available();
    if (client) {
    while (client.connected())
    {
    if (client.available())
    {
    char c = client.read();
    if (readString.length() < 100) {
    readString += c;
    }
    if (c == ‘n’)
    {
    //Controle do rele1
    Serial.println(readString);
    //Liga o Rele 1
    if (readString.indexOf(“?ligar”) > 0)
    {
    digitalWrite(pino_rele1, LOW);
    Serial.println(“Rele 1 Ligado”);
    ligado = false;
    }
    else
    {
    //Desliga o Rele 1
    if (readString.indexOf(“?desligar”) > 0)
    {
    digitalWrite(pino_rele1, HIGH);
    Serial.println(“Rele 1 Desligado”);
    ligado = true;
    }
    }

    //Controle do rele2
    Serial.println(readString);
    //Liga o Rele 2
    if (readString.indexOf(“?2_ligar”) > 0)
    {
    digitalWrite(pino_rele2, LOW);
    Serial.println(“Rele 2 Ligado”);
    ligado_2 = false;
    }
    else
    {
    //Desliga o Rele 2
    if (readString.indexOf(“?2_desligar”) > 0)
    {
    digitalWrite(pino_rele2, HIGH);
    Serial.println(“Rele 2 Desligado”);
    ligado_2 = true;
    }
    }
    readString = “”;

    client.println(“HTTP/1.1 200 OK”);
    client.println(“Content-Type: text/html”);
    client.println();
    client.println(“<html>”);
    client.println(“<head>”);
    client.println(“<title>FILIPEFLOP – Automacao Residencial</title>”);
    client.println(“<meta http-equiv=’Content-Type’ content=’text/html; charset=ISO-8859-1′>”);
    client.println(“<meta name=’viewport’ content=’width=720, initial-scale=0.5′ />”);
    client.println(“<link rel=’stylesheet’ type=’text/css’ href=’http://img.filipeflop.com/files/download/automacao/automacao_residencial.css’ />”);
    client.println(“<script type=’text/javascript’ src=’http://img.filipeflop.com/files/download/automacao/automacao_residencial.js’></script>”);
    client.println(“</head>”);
    client.println(“<body>”);
    client.println(“<div id=’wrapper’>FILIPEFLOP<br/>”);
    client.println(“<div id=’div1′>Rele 1</div>”);
    client.println(“<div id=’div2′>Rele 2</div>”);
    client.print(“<div id=’rele’></div><div id=’estado’ style=’visibility: hidden;’>”);
    client.print(ligado);
    client.println(“</div>”);
    client.println(“<div id=’botao’></div>”);
    client.println(“<div id=’botao_2′></div>”);
    client.print(“<div id=’rele_2′></div><div id=’estado_2′ style=’visibility: hidden;’>”);
    client.print(ligado_2);
    client.println(“</div>”);
    client.println(“</div>”);
    client.println(“<script>AlteraRele1()</script>”);
    client.println(“<script>AlteraRele2()</script>”);
    client.println(“</div>”);
    client.println(“</body>”);
    client.println(“</head>”);

    delay(1);
    client.stop();
    }
    }
    }
    }
    }

    0
    #162733

    Então, primeiro tente adicionar a linha em negrito no seu código:
    if (readString.indexOf(“?ligar”) > 0)
    {
    digitalWrite(pino_rele1, LOW);
    Serial.println(“Rele 1 Ligado”);
    ligado = false;
    delay (120000);
    digitalWrite(pino_rele1, HIGH);
    Serial.println(“Rele 1 Desligado”);
    ligado = true;

     

    Além disso, diminua o tempo de delay para ver se ele realmente não troca ou é só porque não chegou o tempo. Caso não resolver, tente fazer a modificação abaixo:

     

    Antes do void setup():
    unsigned long previousMillis = 0;
    long OnTime = 5000;

    No void loop():
    unsigned long currentMillis = millis();

     

    Aí você vai e altera o funcionamento dos relés como está ali em negrito:

    if (readString.indexOf(“?ligar”) > 0)
    {
    digitalWrite(pino_rele1, LOW);
    Serial.println(“Rele 1 Ligado”);
    ligado = false;
    if (pino_rele1 == LOW) && (currentMillis – previousMillis >= OnTime) {
    delay (120000);
    digitalWrite(pino_rele1, HIGH);

    Serial.println(“Rele 1 Desligado”);
    ligado = true;
    }

    Att

    Diogo – Equipe FilipeFlop

     

    0
Visualizando 4 posts - 1 até 4 (de 4 do total)

Você deve fazer login para responder a este tópico.