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 }
Tags:
Aparentemente sua postem está incompleta, Euder.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por