poderia mim ajuda com um erro no codigo para identifica os estado da lampada com sensor acs712 no atemega 2560

#define Rele1 7 // Define pino de saida para rele 1
#define Rele2 8 // Define pino de saida para rele 2
const int sensorPin = A0;
float sensorValue_aux = 0;
float sensorValue = 0;
float currentValue = 0;
float voltsporUnidade = 0.0048828125;

int st_rl = 0;
String st_lamp = 0;   apresentando erro nessa estring

void setup(){
pinMode(Rele1,OUTPUT);
pinMode(Rele2,OUTPUT);
Serial.begin(9600);
}

void loop(){
char c = Serial.read();

for(int i=500; i>0; i--)
{
sensorValue_aux = (analogRead(sensorPin) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é vcc/2 para corrente =0
sensorValue += pow(sensorValue_aux,2); // soam os quadardos das leituras no laco
}

sensorValue = (sqrt(sensorValue/ 500)) * voltsporUnidade; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts
currentValue = (sensorValue/66)*1000; // calcula a corrente considerando a sensibilidade do sernsor (66 mV por amper)


if (currentValue < 0.10){
st_lamp = "Lampada apagada";
}
else{
st_lamp = "Lampada ligada";
}

if (c == 's'){
Serial.print ("Valor do st: ");
Serial.print (st_rl);
Serial.print (" Corrente: ");
Serial.print (currentValue);
Serial.print (" Status da lampada: ");
Serial.println (st_lamp);
}
if (c == 'a'){
if (st_rl == 0){
digitalWrite(Rele1, HIGH);
Serial.print ("Valor anterior do st: ");
Serial.print (st_rl);
Serial.print (" Status anterior da lampada: ");
Serial.print (st_lamp);
st_rl = 1;
Serial.print (" Valor do st mudado para: ");
Serial.print (st_rl);
Serial.print (" Status atual da lampada: ");
Serial.println (st_lamp);
}
else{
digitalWrite(Rele1, LOW);
Serial.print ("Valor do st: ");
Serial.print (st_rl);
st_rl = 0;
Serial.print (" Valor do st mudado para: ");
Serial.print (st_rl);
Serial.print (" Status da Lampada: ");
}
}


delay(5000);

}

Exibições: 286

Responder esta

Respostas a este tópico

Ronaldo,

String st_lamp = 0

Você está declarando uma variável do tipo String e atribuindo um valor numérico !

Retire "= 0" 

A linha ficará assim:

String st_lamp

SDS

Daltro

valeu pela  a dica ainda so iniciante 

tava aqui estudando um pouco o codigo e editei ele agora ta rodando legal

mais ainda  falta muito tenho que coloca pra fazer leitura de 8 sensores acs712 interligado  com uma shild eaysvr de comando de voz para acende e apaga as lampadas

#define Rele1 13 // Define pino de saida para rele 1
const int sensorPin = A0;
float sensorValue_aux = 0;
float sensorValue = 0;
float currentValue = 0;
float voltsporUnidade = 0.0048828125;

int st_rl; //declaraçao da string rele
String st_lamp; //declaraçao da string lampada




void setup(){
Serial.begin(9600);

pinMode(Rele1,OUTPUT);}//declaraçao do pino digital 13 como saida





void loop(){
char c = Serial.read();
for(int i=500; i>0; i--)

{
sensorValue_aux = (analogRead(sensorPin) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é vcc/2 para corrente =0
sensorValue += pow(sensorValue_aux,2); // soam os quadardos das leituras no laco
}
sensorValue = (sqrt(sensorValue/ 500)) * voltsporUnidade; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts
currentValue = (sensorValue/66)*1000; // calcula a corrente considerando a sensibilidade do sernsor (66 mV por amper)


if (currentValue < 0.10){
st_lamp = "= lampada,apagada: ";
}
else{
st_lamp = "= lampada,ligada: ";
}

if (c == 's'){    // // apertando (s) no serial monitor mostrara os  status
Serial.print (" Valor do st, ");
Serial.print (st_rl);
Serial.print ("/ Corrente, ");
Serial.print (currentValue);
Serial.print ("/ Status anterior,  ");
Serial.println (st_lamp);
Serial.print ("/ Status atual, ");
Serial.println (st_lamp);
}
if (c == 'a'){  // apertando uma vez a letra (a) no serial monitor ligara o Rele 1 apertando novamente desligara
if (st_rl == 0){
digitalWrite(Rele1, HIGH); //ligado
}
else{
st_rl = 0;
digitalWrite(Rele1, LOW);// desligado

}
}
//mostra status a cada 5 segundos
delay(5000);
Serial.print (" Valor do st, ");
Serial.print (st_rl);
Serial.print ("/ Corrente, ");
Serial.print (currentValue);
Serial.print ("/ Status atual, ");
Serial.println (st_lamp);

Ronaldo,

Aqui no laboratório você vai encontrar muitos exemplos com estes componentes... tente entender os códigos e implementa-los aos poucos... uma coisa de cada vez...

Grande abraço

Daltro 

eu  estudando o codigo e o arduino cosegui   multiplica o aciona mento  para duas lampadas

vc sabe mim fala se teria como simplifica esse processo?                                                   

por que  eu simplismenti dupliquei o codigo  teria como acresenta mais  lampadas sem ter que  fazer duplicagem

ja agradeço pelos esclarecimento estou aprendendo muito  obrigado

#define Rele1 12 // Define pino de saida para rele 1
#define Rele2 13 // Define pino de saida para rele 1
const int sensorPin1 = A0;
const int sensorPin2 = A1;
float sensorValue_aux = 0;
float sensorValue_aux2 = 0;
float sensorValue = 0;
float sensorValue2 = 0;
float currentValue = 0;
float currentValue2 = 0;
float voltsporUnidade = 0.0048828125;

int st_rl1;
int st_rl2;
String st_lamp1;
String st_lamp2;

void setup(){
Serial.begin(9600);

pinMode(Rele1,OUTPUT);
pinMode(Rele2,OUTPUT);


}

void loop(){
char c = Serial.read();

for(int i=500; i>0; i--)
{
sensorValue_aux = (analogRead(sensorPin1) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é vcc/2 para corrente =0
sensorValue += pow(sensorValue_aux,2); // soam os quadardos das leituras no laco
}

sensorValue = (sqrt(sensorValue/ 500)) * voltsporUnidade; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts
currentValue = (sensorValue/66)*1000; // calcula a corrente considerando a sensibilidade do sernsor (66 mV por amper)

{
  sensorValue_aux2 = (analogRead(sensorPin2) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é vcc/2 para corrente =0
sensorValue += pow(sensorValue_aux,2); // soam os quadardos das leituras no laco
}

sensorValue2 = (sqrt(sensorValue/ 500)) * voltsporUnidade; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts
currentValue2 = (sensorValue/66)*1000; // calcula a corrente considerando a sensibilidade do sernsor (66 mV por amper)


if (currentValue < 0.10){
st_lamp1 = "apagada ";
}
else{
st_lamp1 = "ligada ";
}
if (c == '1'){
Serial.print (" Status do rele = ");
Serial.print (st_rl1);
Serial.print ("   / Corrente = ");
Serial.print (currentValue);
Serial.print ("   / Status atual da lampada = ");
Serial.println (st_lamp1);
}

if (currentValue2 < 0.10){
st_lamp2 = "2 apagada ";
}
else{
st_lamp2 = "2 ligada ";
}


if (c == '2'){
Serial.print (" Status do rele = ");
Serial.print (st_rl2);
Serial.print ("   / Corrente = ");
Serial.print (currentValue2);
Serial.print ("   / Status atual da lampada = ");
Serial.println (st_lamp2);
}
if (c == 'a'){
if (st_rl1 == 0)
{
digitalWrite(Rele1, HIGH);
Serial.print ("Status anterior do rele =");
Serial.print (st_rl1);
st_rl1 = 1;
Serial.print ("   /Status do rele atual = ");
Serial.print (st_rl1);
st_rl1 = 1;
Serial.print ("   / Status anterior da lampada = ");
Serial.print (st_lamp1);
Serial.print ("   / Status da lampada atual = ");
Serial.println (st_lamp1);
}
else{
digitalWrite(Rele1, LOW);
Serial.print ("Status anterior do rele =");
Serial.print (st_rl1);
st_rl1 = 0;
Serial.print ("   / Status do rele atual = ");
Serial.print (st_rl1);

st_rl1 = 0;
Serial.print ("   / Status anterior da lampada= ");
Serial.print (st_lamp1);
Serial.print ("   / Status da lampada atual= ");
Serial.println (st_lamp1);
}

}
if (c == 'b'){
if (st_rl2 == 0)
{
digitalWrite(Rele2, HIGH);
Serial.print ("Status anterior do rele =");
Serial.print (st_rl2);
st_rl2 = 1;
Serial.print ("   /Status do rele atual = ");
Serial.print (st_rl2);
st_rl2 = 1;
Serial.print ("   / Status anterior da lampada = ");
Serial.print (st_lamp2);
Serial.print ("   / Status da lampada atual = ");
Serial.println (st_lamp2);
}
else{
digitalWrite(Rele2, LOW);
Serial.print ("Status anterior do rele =");
Serial.print (st_rl2);
st_rl2 = 0;
Serial.print ("   / Status do rele atual = ");
Serial.print (st_rl2);

st_rl2 = 0;
Serial.print ("   / Status anterior da lampada= ");
Serial.print (st_lamp2);
Serial.print ("   / Status da lampada atual= ");
Serial.println (st_lamp2);

}
delay(1000);
}

Serial.print ("/ Status atual da lampada, ");
Serial.println (st_lamp1);

delay(1000);


Serial.print ("/ Status atual da lampada, ");
Serial.println (st_lamp2);


}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço