Crea una función diferencia tal que barra tu vector desde 0 a N y se quede con la menor diferencia entre tu número y el valor del vector en valor absoluto
algo asi
int valor = 12;
int array[] = {3, 5, 6, 13, 23};
byte ubicacion(int vector[], int num) {
byte tmp = 0;
int dif = 12-array[0];
for (byte i = 0; i<num; i++) {
if (abs(valor-array[i]) < dif) {
tmp = i; // me quedo con esa ubiacion
}
}
return tmp;
}
void setup() {
Serial.begin(9600);
Serial.println("Ubicacion : " + String(ubicacion(array, sizeof(array)/sizeof(int))));
}
void loop() {
}
Podría mejorarse pero la parte que luce como muy complicada
ubicacion(array, sizeof(array)/sizeof(int))
es la que le dice el tamaño de tu vecor. Si hubieras puesto algo como
#define N 5 // tamaño del vector
todo sería mas facil mira pq lo digo
#define N 5
int valor = 12;
int array[N] = {3, 5, 6, 13, 23};
byte ubicacion(int vector[]) {
byte tmp = 0;
int dif = 12-array[0];
for (byte i = 0; i<N; i++) {
if (abs(valor-array[i]) < dif) {
tmp = i; // me quedo con esa ubiacion
}
}
return tmp;
}
void setup() {
Serial.begin(9600);
byte pos = ubicacion(array);
Serial.println("Ubicacion : " + String(pos));
Serial.println("Valor : " + String(array[pos]));
}
void loop() {
}