Este tópico contém 3 respostas, possui 2 vozes e foi atualizado pela última vez por  Diogo Zimmermann 2 meses atrás.

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

    euderac
    Participante

    Olá Amigos.

    Sou iniciante no Arduíno, estou encontrando dificuldade em saber qual melhor caminho para a se fazer logica, no qual seria:

    1º Ler a corrente, de carga – Concluído

    2º Se este valor estiver de acordo com a logica do( if) mandar um comando que neste caso é acender um led caso não . – Concluído

    3º São feita três leituras de corrente diferente, e cada processo deve passar pela 1º ,2º e 3, leitura. A leitura só seguira a seguinte se estiver de acordo, caso não se deve interromper o processo, esse processo só voltará se fazer o reset. – Não Concluído

    Segue abaixo o código ja feito.

    #include <Wire.h>
    #include <LiquidCrystal.h>

    LiquidCrystal lcd(02,03,04,05,06,07);
    // Criando um LCD de 16×2 no endereço 0x20

    #include “EmonLib.h” //INCLUSÃO DE BIBLIOTECA
    #define CURRENT_CAL 18.40 //VALOR DE CALIBRAÇÃO (DEVE SER AJUSTADO EM PARALELO COM UM MULTÍMETRO MEDINDO A CORRENTE DA CARGA)

    volatile int numInterrupt = 0;
    const int pinoSensor = A1; //PINO ANALÓGICO EM QUE O SENSOR ESTÁ CONECTADO
    float ruido = 0.14; //RUÍDO PRODUZIDO NA SAÍDA DO SENSOR (DEVE SER AJUSTADO COM A CARGA DESLIGADA APÓS CARREGAMENTO DO CÓDIGO NO ARDUINO)
    float vermelho = 10;
    float amarelo = 11;
    float verde = 12;

    EnergyMonitor emon1; //CRIA UMA INSTÂNCIA

    void setup(){

    //DECLARANDO O COMANDO
    pinMode(vermelho,OUTPUT);
    pinMode(amarelo,OUTPUT);
    pinMode(verde,OUTPUT);
    pinMode(A1,INPUT);

    //LED
    Serial.begin(9600); //INICIALIZA A SERIAL
    lcd.clear();
    lcd.begin(16,2);
    lcd.clear();
    delay(3000);

    emon1.current(pinoSensor, CURRENT_CAL); //PASSA PARA A FUNÇÃO OS PARÂMETROS (PINO ANALÓGIO / VALOR DE CALIBRAÇÃO)
    }

    void loop(){
    //Primeiro laço

    corrente:

    emon1.calcVI(20,100); //FUNÇÃO DE CÁLCULO (20 SEMICICLOS / TEMPO LIMITE PARA FAZER A MEDIÇÃO)
    double currentDraw = emon1.Irms; //VARIÁVEL RECEBE O VALOR DE CORRENTE RMS OBTIDO

    //1º Passo.
    delay(1000);

    if (currentDraw <= 2.4) {
    digitalWrite(vermelho, HIGH);
    } else {
    digitalWrite(vermelho, LOW);

    }

    //2º Passo.
    passo2:

    delay(200);
    if (currentDraw == constrain(currentDraw, 2.42, 2.55)) {
    digitalWrite(amarelo, HIGH);
    } else {
    digitalWrite(amarelo, LOW);

    }

    //3º Passo.
    passo3:
    delay(200);
    if (currentDraw >= 2.61) {
    digitalWrite(verde, HIGH);
    } else {
    digitalWrite(verde, LOW);

    }

    lcd.setCursor(4,0);
    lcd.print(“ACTION!”);;
    lcd.setCursor(0,1);
    lcd.print(“Corrente: “);
    lcd.print(currentDraw);
    lcd.print(” A “);

    Serial.print(“Corrente: “);
    Serial.print(currentDraw );
    Serial.println(” A “); //IMPRIME O TEXTO NA SERIAL

    }

    0
    #178405

    No terceiro passo ele deve ler 3 vezes a corrente, é isso?

    0
    #181479

    euderac
    Participante

    Ele irá ler Três correntes diferentes, e cada corrente diferente q será lida me dará um comando, a questão é q eu qero que seja feito passo a passo uma uma leitura por vez , começando com a primeira leitura, se tiver dentro das especificações passara para o próximo passo caso não esteja ele não passa para a próxima leitura  depois ler a segunda leitura no qual seria a segunda e assim em diante.

     

     

    0
    #181976

    Você pode usar um switch/case. Nesse caso, no if você vai, em vez de acionar os pinos e tudo mais, vai apenas acionar uma variável de controle (pro switch), e então dentro do case você vai acionar. Por exemplo (de forma bem básica):

    if (currentDraw <= 2.4) {
    controle = 1;
    }

     

    switch (controle) {

    case 1:
    digitalWrite(vermelho, HIGH);
    break;

    }

     

    Quando você utiliza o break, ele vai sair do switch. Aqui você então vai usar alguma mecânica no código pra que ele pare toda a leitura.

     

    Att

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

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

{"cart_token":"","hash":"","cart_data":""}