Semana 7

Ejemplos de código

A continuación vemos la manera como podemos leer la información que genera un sensor, como reconocer sus datos, definir la escala en que se abstraen los datos y convertir esta escala a otra. Se pueden imaginar el uso del sensor como el siguiente proceso:

  1. Un fenómeno físico es capturado por el sensor. Por ejemplo, presionar un switch, nivel de temperatura, distancia al sensor, etc.
  2. Convertimos ese fenómeno en numeros, ejemplo un switch nos da 0 en apagado y 1 en prendido. Un potenciómetro nos da valores de resistencia entre 0 y 1023.
  3. A modo de alquimia digital, convertimos esos valores en salidas, por ejemplo, con un switch convertimos el 0 en LED apagado y 1 LED prendido.
  4. Completamos el ciclo al interpretar las entradas del sensor en otra cosa, ya sea en una representación digital (pintar pixels en la pantalla) o con otro componente fisico (un LED, motor, etc).

Leer sensor, entrada análoga

/*
  La estructura básica para recibir los datos generados por un sensor.
*/

// El siguiente ejemplo asume que el sensor está conectado al pin análogo 0 (A0)
// Vamos a imprimir el valor del sensor en el monitor serial Tools -> Serial Monitor
void setup() {
  Serial.begin(9600); // Configuramos la salida serial para ver los valores.
  pinMode(A0, INPUT); // Definimos que por el pin A0 va a entrar información
}

void loop() {
  int valorEntrada = analogRead(A0); // Creamos una variable donde guardamos el estado del sensor

  Serial.println(valorEntrada); // Imprimimos en el monitor el valor del sensor.

  // Por lo general necesitamos una pequeña pausa antes de reiniciar la lectura del sensor. 
  // Pueden probar diferentes tiempos para obtener una lectura limpia.
  delay(2); 
}

Convertir escalas, map() y salida análoga

/*
  Por ejemplo, si queremos convertir la resistencia de un potenciómetro en intensidad de luz de un LED
 */

// Definimos los pins de entrada y salida
int entradaAnaloga = A0;
int salidaAnaloga = 9;

// Creamos unas variables que cambiaran en cada paso del loop.
int valorEntrada = 0; // Que valor me da el sensor.
int valorSalida = 0; // Valor convertido a otra escala para salida.

void setup() {
  pinMode(entradaAnaloga, INPUT);
  pinMode(salidaAnaloga, OUTPUT);
}

void loop() {
  // Sacamos el valor del sensor y lo guardamos en la variable valorEntrada
  valorEntrada = analogRead(entradaAnaloga);

  // Usamos la función map(param1, param1, param3, param4, param5) que acepta 5 parámetros:
  // param1: el valor a convertir
  // param2: valor mínimo de la escala que ofrece el sensor.
  // param3: valor máximo de la escala que ofrece el sensor.
  // param4: valor mínimo de la escala a la que quiero convertir.
  // param5: valor máximo de la escala a la que quiero convertir.

  // La siguiente conversión de escalas hace lo siguiente:
  // Un potenciómetro que da valores entre 0 y 1023,
  // lo convertimos a la escala de intensidad del LED que va de 0 a 255. 
  valorSalida = map(valorEntrada, 0, 1023, 0, 255);

  // Prendemos el LED ya no con la función que utilizabamos antes digitalWrite().
  // Con analogWrite usamos un número como segundo parámetro.
  analogWrite(salidaAnaloga, valorSalida);

  // Esperamos 2 milisegundos antes de hacer una nueva lectura del sensor.
  delay(2);
}

results matching ""

    No results matching ""