Tutorial 08: analogRead() y Comunicaciones de Puerto Serie

analogRead () y Comunicaciones de Puerto Serie

Saber si algo está encendido o apagado puede ser extremadamente útil, pero a menudo querrá saber más. ¿Qué tan brillante es la luz?

¿A qué velocidad se mueve el satélite? Este tipo de respuestas a menudo son analógicas: cubren una amplia gama de valores, no solo activados o desactivados.

El Arduino maneja entradas analógicas con 6 pines dedicados, etiquetados de A0 a A5. Estos pines tienen acceso a un convertidor analógico a digital, que toma el rango de valores de entrada y crea una versión digital cortando el rango en trozos pequeños. Todo esto se maneja entre bastidores: todo lo que tiene que hacer es usar algunas funciones muy simples y obtendrá lo que necesita.

Necesitará

  1. Potenciómetro (cualquier rango de resistencia funcionará)
  2. Cables de puente – al menos 3
  3. Neumático de bicicleta

Instrucciones paso a paso

  1. Ejecute un cable de puente desde el pin de 5 voltios del Arduino hasta uno de los pines exteriores de su potenciómetro.
  2. Ejecute otro cable de puente desde uno de los pines de tierra de su Arduino (con la etiqueta GND) hasta el otro pin exterior del potenciómetro.
  3. Ejecute el cable de puente final desde el pasador A0 de su Arduino hasta el pasador central del potenciómetro.
  4. Conecte el Arduino a su computadora.
  5. Abra el IDE Arduino.
  6. Abra el boceto de esta sección.
  7. Haga clic en el botón Verificar en la parte superior izquierda de la pantalla. Se volverá naranja y luego volverá a azul una vez que haya terminado.
  8. Haga clic en el botón Cargar (junto al botón Verificar). Se volverá naranja y luego volverá a azul una vez que haya terminado.
  9. En la barra de menús, vaya a Herramientas > Serial Monitor, esto abrirá la ventana Serial Monitor, debería ver los números rodando por esta pantalla.
  10. Ahora ajuste la perilla del potenciómetro y observe la ventana del monitor en serie. Los números deben ajustarse entre 0 y 1023.

Usando la función Arduino analogread y map con un potenciómetro en el pin A0

Esta imagen compuesta con Fritzing.

El código Arduino

/* AnalogReadSerial Reads an analog input on pin 0, prints the result to the serial monitor. Graphical representation is available using serial plotter (Tools > Serial Plotter menu) Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain.*/// the setup routine runs once when you press reset:void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600);}// the loop routine runs over and over again forever:void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // print out the value you read: Serial.println(sensorValue); delay(1); // delay in between reads for stability}

Discuta el Boceto

Este boceto comienza con un comentario de varias líneas que describe el boceto y el circuito. Probablemente notará que el primer bloque de código es la función setup () – no declaramos ni inicializamos ninguna variable al principio de este croquis-en su lugar lo haremos dentro de la función loop (), como en el último ejemplo. Dentro de las llaves de setup() volvemos a visitar la biblioteca Serial y usamos la función Serial.comenzar().

void setup() {// initialize serial communication at 9600 bits per second:Serial.begin(9600);}

Si recuerda de la última lección, Serie.begin () toma la velocidad en baudios como argumento (esto casi siempre será 9600). Esta función le permite configurar un canal de comunicación entre el ordenador y Arduino. Como ya sabrás, setup() solo se ejecuta una vez, y luego pasamos al siguiente bloque de código.

Pero espera! ¿No tenemos que establecer el modo del pin que usaremos? Gran punto!

Lo que hace Arduino, de forma predeterminada, es establecer todos los pines de la placa como entradas a menos que le indique lo contrario. Por lo tanto, en muchos casos, no es necesario establecer explícitamente un pin como entrada mediante la función pinMode (). Dicho esto, de todos modos me acostumbro a hacer esto, porque me deja las cosas claras, y eso vale la pena en espacio y esfuerzo.

Así que te reto, establece el modo del pin usando la función pinMode(A0, INPUT) dentro de las llaves de setup()– no te arrepentirás.

Pasando a la función loop (), comenzamos con una declaración de variable e inicialización.

int sensorValue = analogRead(A0);

declaramos una variable llamada sensorValue y la inicializamos a la salida de una nueva función. Esta nueva función es la glamurosa analogRead(). Así que adivina lo que hace esta nueva función analogRead (). Lee el valor en el pin analógico que ha elegido, en este caso, es el pin analógico A0, donde tenemos conectado el pin central del potenciómetro. El voltaje en el pin A0 se asignará a un número entre 0 y 1023, y este valor se asignará a la variable sensorValue.

Si recuerda de arriba, el voltaje real en el pin A0 estará entre 0 y 5 voltios, dependiendo de dónde se ajuste su potenciómetro; este valor se asigna al rango 0 – 1023 con la ayuda del convertidor analógico a digital. Así que tenemos una variable que ha registrado el valor en nuestro potenciómetro – ¿qué sigue? Bueno, veamos el valor. Para hacer eso, necesitamos imprimirlo desde el Arduino a nuestro ordenador – y lo adivinó, usaremos la función de biblioteca en serie println () para hacer precisamente eso…

Serial.println(sensorValue);

No hay grandes sorpresas aquí-enviamos como argumento la variable sensorValue a la función Serial.println () y nuestra ventana serial monitor mostrarán los valores resultantes.

Para terminar el croquis, invocamos la función delay () durante un milisegundo para asegurarnos de que nuestra siguiente lectura sea estable y comenzamos de nuevo en la parte superior del bucle (). Grabamos un nuevo valor usando analogRead (), lo guardamos en la variable sensorValue y luego lo imprimimos en el ordenador.

Todo esto es bueno y bueno, puede que estés pensando, pero ¿qué tiene que ver un potenciómetro con los sensores? ¡Un potenciómetro no detecta nada! Tiene razón – pero, curiosamente, muchos sensores funcionan aplicando el mismo principio que un potenciómetro: ajustar la resistencia. Tome un fotorresistente, por ejemplo, que se puede usar para detectar la luz, porque la resistencia cambia en función del brillo de la luz a la que está expuesta, este cambio en la resistencia ajustará la cantidad de voltaje que recibirá un pasador en el extremo receptor. Así que ahora la pelota está en tu cancha – ¿para qué puedes usar analogRead ()?

Pruebe por su cuenta

  • Cambie el pin analógico a A2. Haz ajustes en el código y en el circuito.
  • Pruebe un potenciómetro diferente en el circuito, ¿afecta al rango de valores mostrados?

Leer Más

  • analogRead()
  • Pines de Entrada Analógicos
  • potenciómetro tutorial – este es bueno

Deja una respuesta

Tu dirección de correo electrónico no será publicada.