|   FOROS      |         |     KIO4 |      
   Inicio B4A (Basic4Android) App inventor 2 WAMP - PHP - MySQL
   Elastix - VoIP Cosas de Windows Webs interesantes Arduino
  Estación meteorológica Visual Basic Script (VBS) Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando

-- Tutorial de iniciación a Arduino --

Volver al índice del tutorial

___________________________

5B.- Mapear. Introducir datos por el Monitor Serie. Ajustar sensor de temperatura.

- Suponemos que tenemos un sensor de temperatura y que está desajustado.

- El sensor marca 2º y debería marcar 6º.
- El sensor marca 38º y debería marcar 42º

- Está desajustado. Fíjate que marca 4º de menos. Simplemente lo podemos correguir de esta manera.

float tempSensor;
float tempCorrecta;

tempCorrecta = tempSensor + 4;

- O bien más sencillo manteniendo una variable, no hace falta el tempCorrecta.

tempSensor = tempSensor + 4;

_______________________________________________________
- Map

- En vez de hacerlo así, vamos a utilizar la función map (mapear) de Arduino.

tempSensor = map(tempSensor, 2, 38, 6, 42);

- Es decir, cuando la temperatura que marca en Sensor sea 2, la convertirá en 6. Y cuando la temperatura que marca el Sensor sea 38, la convertirá en 42.

- Los valores entre uno y otro seguirá una linealidad.

- ¿Qué pasa si el Sensor obtiene una temperatura de 1 o bien una temperatura de 57?

- Se mantiene la linealidad, es decir no importa que el Sensor lea valores que estén fuera del margen que hemos puesto en el map (2, 38), puede leer cualquier valor y nos dará su valor correspondiente (En este ejemplo siempre dará un valor 4 superior).

______________________________________________
- Ecuación de la recta.

- ¿Recuerdas cuando estabas en clase de matemáticas y el profesor explicaba la ecuación de la recta, despejar valores,... y tu no entendías ni papa y decías que eso no valía para nada?

- Aquí vamos a utilizar la ecuación de la recta, vamos a recordarla.

- Continuamos con el ejemplo anterior del Sensor de temperatura. Debemos ajustarlo.

Esto es lo que marca el Sensor
Esto es lo que debería dar
2
6
38
42

- La conversión es muy fácil, solamente le debemos añadir 4, pero vamos a verlo con la ecuación de la recta.

- Ecuación de la recta.

 

- Despejamos la y

- Con valores.

- Es decir.

y = x + 4

 

- Esto es lo que hace realmente la función map de Arduino. Le suministramos 4 valores y el valor que queremos convertir. Obtendremos el valor convertido.

temperatura = map(temperatura, 2, 38, 6, 42)

- Como escribí anteriormente, tanto en la ecuación de la recta como a la función map, a la temperatura podemos suministrarle valores mayores que los indicados como mínimo y máximo, es decir superiores o inferiores a 2 y 38.

- (Ver más información de la ecuación de la recta).

_____________________________________________________

- Prueba con Arduino.

- Cambia el valor de tempC y consulta el Serial Monitor.

Ajuste.ino
float tempC;
void setup() {
Serial.begin(9600);
}
// tempC = tempC - 4;
void loop() {
tempC = 14;
tempC = map(tempC, 2, 38, 6, 42);
Serial.println(tempC);
}

 

_____________________________________________________

- Introducir datos desde el Serial Monitor.

- En el ejemplo anterior para ver distintos valores, debemos cambiar tempC = 14; poner otros valores y volver a cargar el programa en Arduino.

- Vamos a introducir los valores desde el Serial Monitor.

- Para ello vamos a seguir este interesante tutorial:

https://startingelectronics.org/software/arduino/learn-to-program-course/19-serial-input/

- De todos los ejemplos de ese tutorial vamos a ver el de introducir varios números. Getting number.

- Lo adapto a nuestro ejemplo de estudio del map.

- Abrimos el Serial Monitor e introducimos un valor. Obtendremos su conversión según map.

- El Serial Monitor debe estar en 9600 y "Ambos NL & CR".

Ajuste2.ino

// Adaptado por Juan A. Villalpando
// kio4.com

 

void setup() {
Serial.begin(9600);
Serial.println("Introduce el valor de la temperatura.");
}

char rx_byte = 0;
String rx_str = "";
int result;

void loop() {
if (Serial.available() > 0) { // ¿Hay algún caracter?
rx_byte = Serial.read(); // Toma el caracter
rx_str += rx_byte;

if (rx_byte == '\n') {
result = map(rx_str.toInt(), 2, 38, 6, 42);
// Escribe
Serial.print("Valor inicial = ");
Serial.print(rx_str);
Serial.print("Valor convertido = ");
Serial.print(result);
Serial.println("");
Serial.println("Introduce el valor de la temperatura.");
rx_str = "";
}
}
}

 

________________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información