hola , que tal , espero alguien me pueda orientar en esto , lo que pasa es que he estado haciendo el siguiente programa:
int readings[4]={115,119,117,125};
int myArray1[4]={115,116,117,118};
void setup()
{
// Configurar el puerto serial
Serial.begin(9600);
Serial.println("arreglo TOTAL:");
Serial.println("[");
Serial.println(readings[0]);
Serial.println(readings[1]);
Serial.println(readings[2]);
Serial.println(readings[3]);
Serial.println("]");
Serial.println(".-.-.-.-.-.-.-.-.-.-.-.-.-");
int d1=sqrt(pow(2,(myArray1[0]-readings[0]))+pow(2,(myArray1[1]-readings[1]))+ pow(2,(myArray1[2]-readings[2]))+pow(2,(myArray1[3]-readings[3])));
Serial.println("d1=");
Serial.println(d1);
}
void loop()
{
delay(2000);
}
como pueden ver estoy realizando varias operaciones con los vectores.
y el único resultado que me arroja es d1=1.
por que asa esto , si se supone que el resultado que me debería arrojar es : 7, ya probe transformado datos de int a char y nadamas nada, espero me puedan ayudar y de antemano gracias
ya lo solucione.
int readings[numReadings]={115,119,117,125}; // lecturas de entrada analogica
int d1;
float d1_1;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
d1=pow((115-readings[0]),2)+pow((116-readings[1]),2)+ pow((117-readings[2]),2)+pow((readings[3]-118),2);
d1_1=sqrt(d1);
Serial.print("d1=");Serial.println(d1_1);
}
void loop() {
// put your main code here, to run repeatedly:
}
Te he sugerido via privado como debes editar los post para que los códigos luzcan como debe ser!! No dejes de hacerlo por favor.
int d1=pow(2,(myArray1[0]-readings[0]))+pow(2,(myArray1[1]-readings[1]))+ pow(2,(myArray1[2]-readings[2]))+pow(2,(myArray1[3]-readings[3]));
Ahora observo que usas la potencia invertida
si tu variable resultado d1 será definida como entera ten mucho cuidado que esas postencias no generen un overflow o sea.. no superen la capacidad de un entero positivo que es de 2^15-1 = 32767.
Igualmente las diferencias que veo son pequeñas.
Podrias y solo por estetica hacer algo mas simple como
int readings[4]={115,119,117,125};
int myArray1[4]={115,116,117,118};
int d1 = 0;
for (byte i=0; i<4; i++) {
d1 += pow(reading[i]-myArray[i], 2);
}
float d1_1=sqrt(d1);
Algo mas para que sepas a futuro
mas rápido que usar pow es hacer esto
d1 += (reading[i]-myArray[i])*(reading[i]-myArray[i]);