CENTRAL DE ATENDIMENTO
De segunda à sexta das 9:00 às 18:30
(11) 3522-7626 / vendas@robocore.net
Retornar
ao topo

Classifique este tópicoPéssimoRuimMedianoBomÓtimo
Autor
Mensagem
3
euderac

Level 0
0 xp

Registrado em:
08/09/2019





Mensagens:
1
3
euderac

Responder com citações
Mensagem Dom Set 08, 2019 9:07 am
Lógica de Programação
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 . - [b]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 16x2 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
    
    

}
Mostrar mensagens desde a última:




Ir para:  
Todos os horários são GMT - 3 HorasVocê não tem permissão para escrever novas mensagens
v não tem permissão para responder às mensagens
Você não tem permissão para editar suas mensagens
Você não tem permissão para deletar suas mensagens
Você não tem permissão para classificar tópicos
Você não tem permissão para classificar mensagens
Você não tem permissão para votar em enquetes
Anexar downloads : Proibido
Fazer Download de Arquivos: Proibido
Powered by phpBB © 2001 phpBB Group