Problema con Función map();

Hola a todos, estoy intentando un código que haga la lectura análoga de uno de los pines análogos y convertir esa lectura en valores en un rango de 0 a 255 con la función map. Todo funciona bien pero me queda una pequeña duda. Resulta que estaba leyendo los valores de la lectura original (Sin ser convertida por map) y me di cuenta que el valor máximo que obtengo no es de 1023, sino de 1000 exactos. No sé a qué se deba esto, simplemente tengo conectado un potenciómetro a un pin análogo y la alimentación a mi protoboard. El código es el siguiente:

// Creamos variables y les asignamos valores

int lec, converL;

// Se inicializa el monitor serial.

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

void loop(){
  lec = analogRead(0);                                // Lectura análoga almacenada en una variable.
  converL = map(lec, 0, 1023, 0, 255);                // Se hace la conversion de la lectura obtenida.
  Serial.println("lec = " +String(lec));              // Se imprimen los valores en el monitor serial.
  Serial.println("converL = " +String(converL));
  delay(1000);                                        // Espera un segundo para volver a imprimir un nuevo valor.
}
    uint16_t knobValue = analogRead(KNOB);
    uint8_t intensity = map(knobValue, 0, 1023, 0, 255);
    analogWrite(LED, intensity);

Qué es "uint16_t"? Soy nuevo en Arduino y no conozco a profundidad

uint16_t = unsigned int = 16 bit without minus -> 0-65535

1 Like

@red0214 casi con seguridad no llegas al tope de la medición por una falla del potenciómetro.
Prueba poner directamente el pin analógico a 5V y seguramente obtendrás un valor 1023.

Saludos

lec = analogRead(A0);

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.