Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programar en Arduino
Librerías y resolución de problemas
Síntesis
En esta unidad veremos cómo instalar librerías que nos permitirán utilizar mayor
cantidad de módulos y finalmente pondremos todo lo aprendido en acción para
resolver un problema real con Arduino.
Las librerías funcionan de la misma manera que una biblioteca tradicional. Cuando
se necesita información, se acude a un libro específico que contiene la información
que precisamos. Del libro obtenemos la información específica que necesitamos o
que nos sirve.
Nos facilita el uso de sensores y shield, nos permite abstraernos de los problemas de
cómo interactuar con los dispositivos, ya que el creador de la librería nos proporciona
comandos que nos harán la vida más simple al momento de usarlos. Los fabricantes
de sensores suelen generar librerías oficiales para el uso de sus sensores, pero hay
usuarios que generar librerías propias para facilitar aún más el uso de los sensores y
shields.
Programar en Arduino| 1
Sensor de Humedad y temperatura
Un sensor muy popular para iniciarse en el mundo Arduino es el de humedad y
temperatura.
Existen 2 modelos muy populares, el DHT11 y el DHT22, ambos funcionan de la misma
manera, pero se diferencia en la precisión al momento de medir la temperatura y la
humedad.
[https://pixy.org/5032925
/]
[https://www.flickr.com/photos/adafruit/11211295
045]
Luego de declarar las funciones principales void setup() y void loop() podemos
agregar más funciones, pero Arduino solo ejecutará repetidamente será void loop().
código;
Programar en Arduino| 2
código;
return dato;
tipoDeDato: indica que tipo de dato recibimos como parámetro para usar en la
función.
Al utilizar funciones podemos hacer más compacto nuestro código, organizándolo por
bloques y llamando a las funciones con solo utilizar su nombre. Esto nos permite que
nuestro código sea más ligero y más fácil de entender.
A continuación veremos un ejemplo donde utilizamos una función que calcula el 50%
del dato que recibe.
void setup(){
Serial.begin(9600);
void loop(){
int a;
int b;;
a = descuento(10);
b = descuento(100);
Programar en Arduino| 3
Serial.print(“el 50% de 10 es: ”);
Serial.println(a);
Serial.println(b);
int resultado;
resultaddo = valor*0.5;
return resultado;
void loop()
Resolución de problemas
Llegamos al momento en que tenemos que aplicar el conocimiento a un problema
real.
La manera de pensar el problema es tratar de “desarmarlo” en pequeños problemas
y de esta manera podemos solucionarlos y controlarlos en el caso de fallo. Veamos
el problema y analicémoslo.
Programar en Arduino| 4
¿Qué quiero medir? La temperatura del agua, por lo que voy a necesitar un sensor de
temperatura.
¿Cómo puedo enterarme de una manera amigable de la temperatura del agua? Como
estoy interesado en 3 rangos de temperatura, puedo utilizar 3 leds de distintos
colores.
¿Voy a medir la temperatura constantemente o como un termómetro (lo acerco y
realizo la medición en ese instante)? Para responder esto, necesito ver el modo de
uso o tomar una decisión de uso. En mi caso, como soy distraído, prefiero que sea
una medición constante y que pueda ir viendo el paso de la temperatura en los leds,
porque en caso contrario siempre voy a terminar midiendo el agua hervida.
Y el siguiente código:
Programar en Arduino| 5
int sondaTemperatura = 0;
int temperatura = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
temperatura = analogRead(sondaTemperatura);
Serial.println(temperatura);
delay(100);
}
60°C: 225
65°C: 237
70°C: 248
80°C: 268
90°C: 288
100°C: 309
Ya tenemos los valores de extremo de los rangos para poder verificar cuando el
sensor entregue un valor se encuentre dentro de los rangos de temperatura.
Programar en Arduino| 6
En este punto ya tenemos los rangos y vamos a armar el circuito dentro de Tinkercad
para poder empezar a programar.
void loop() {
//leemos la temperatura del sensor
temperatura = analogRead(sondaTemp);
Serial.print("temp: ");Serial.println(temperatura);
Programar en Arduino| 7
if(temperatura >= teMin && temperatura <= teMax){
digitalWrite(ledTe, HIGH);
digitalWrite(ledMate, LOW);
digitalWrite(ledHervida, LOW);
digitalWrite(fueraDeRango, LOW);
Serial.println("te");
Programar en Arduino| 8
Led “Agua para Té” encendido
Programar en Arduino| 9
Led “Agua Hervida” encendido
}
void loop() {
Programar en Arduino| 10
//leemos la temperatura del sensor
temperatura =
analogRead(sondaTemp);
Serial.print("temp: ");Serial.println(temperatura);
//Verifico que la temperatura está dentro del rango de Te
if(temperatura >= teMin && temperatura <= teMax){
rango(ledTe);
Serial.println("te");
//Verifico que la temperatura está dentro del rango de Mate
}else if(temperatura >= mateMin && temperatura <=
mateMax){ rango(ledMate);
Serial.println("mate");
//Verifico que la temperatura está dentro del rango de Hervido
}else if(temperatura >= hervidaMin && temperatura <=
hervidaMax){ rango(ledHervida);
Serial.println("Hervida");
//Cuando llega a este punto ya sé que la temperatura no está dentro
de ningún rango
}else{
rango(ledFueraDeRango);
Serial.println("fuera de
rango");
}
}
void rango(int ledAPrender){
//Apago todos los leds para solo encender el que se debe
digitalWrite(ledTe, LOW);
digitalWrite(ledMate, LOW);
digitalWrite(ledHervida, LOW);
digitalWrite(ledFueraDeRango, LOW);
//Prendo sólamente el led que corresponde
digitalWrite(ledAPrender,HIGH);
}
Ahora podemos ver que el código es más fácil de leer y si quisiéramos agregar otro
rango con agregar un if con el rango del loop y agregar la línea de que apague el led
dentro de la función rango.
Programar en Arduino| 11