Arduino
Arduino
1. Estructura de un programa 3
2. Configurar los PINS 3
2.1 Trabajar con un pin de OUTPUT 4
2.2. Ejemplo sencillo 5
3. Manejo de variables 7
3.1. Declaración de variables 7
3.2. Tipos de datos 7
3.3 Inicialización de variables 7
3.4. Asignación de valores 7
4. Monitor Serial 9
4.1 Leer valores del monitor serial 9
5. Estructuras condicionales 11
5.1. if --> if else --> if else if 11
5.2. Switch 12
6. Bucles 14
6.1 for 14
6.2. while 14
7. Funciones 16
8. PWM 18
8.1. AnalogRead 19
8.1.1. Comando map 20
8.2. Uso del potenciómetro 21
Dani Durán 1
Fundamentos Hardware 1ASIR
9. Led RGB 23
9.1. Cómo uso el LED RGB 23
10. Buzzer 25
10.1. Zumbador activo 25
10.2. Zumbador pasivo 26
10.2.1. Generar notas musicales 27
11. Botón o push button 29
10.1. Resistencia pull-up externa 29
11.2. Resistencia pull-down externa 30
11.3. Resistencia pull-up interna 31
11.4. Usar el botón cómo un Toggle button 32
12. Fotoresistencia 34
13. Sensor y actuador 35
14. Sensores 37
14.1. Sensor de movimiento (PIR) 38
14.1.1. Cómo conecto el sensor de movimiento 38
99. Miscelánea 40
99.1. Ánodo común vs Cátodo común 40
99.2. Cómo documentar código 41
99.2.1. Documentar una función 42
Dani Durán 2
Fundamentos Hardware 1ASIR
1. Estructura de un programa
Un programa típico de Arduino consta de dos funciones principales: setup() y loop(). La
función setup() se ejecuta una vez al inicio del programa, mientras que la función loop() se
ejecuta continuamente mientras la placa de Arduino está encendida. A continuación, te
muestro la estructura básica de un programa Arduino:
La función setup() se utiliza para realizar cualquier tipo de inicialización necesaria para el
programa. Esto podría incluir la configuración de pines, la inicialización de variables o la
comunicación con otros dispositivos.
Por otro lado, la función loop() es donde se escribe el código principal del programa. Este
código se ejecuta continuamente en un ciclo infinito, a menos que se detenga el programa
de forma manual.
En este ejemplo, la función pinMode() se llama en la función setup(), que se ejecuta una vez
al inicio del programa. El pin 13 se configura como salida utilizando la constante OUTPUT.
Luego, en la función loop(), se puede escribir el código para utilizar el pin configurado.
Si en lugar de configurar un pin como salida, quieres configurarlo como entrada, puedes
usar la constante INPUT. Por ejemplo, para configurar el pin 2 como entrada, puedes usar el
siguiente código:
Dani Durán 3
Fundamentos Hardware 1ASIR
Es importante destacar que no todos los pines de Arduino son configurables como entrada o
salida. Algunos pines tienen funciones específicas, como los pines de comunicación serial o
los pines analógicos. Por eso es importante revisar la documentación de tu placa de Arduino
para saber cuáles son los pines que puedes utilizar y cómo configurarlos.
Por otro lado, si necesitas controlar un dispositivo que requiere un rango de valores entre 0
y 255, como un motor DC o un LED RGB, entonces debes utilizar la función analogWrite().
Por ejemplo, para controlar el brillo de un LED conectado al pin 9 de la placa de Arduino,
puedes utilizar la función analogWrite() de la siguiente manera:
Dani Durán 4
Fundamentos Hardware 1ASIR
En este ejemplo, la función analogWrite() se utiliza para cambiar gradualmente el brillo del
LED de 0 a 255 y viceversa, utilizando dos bucles for y la función delay() para pausar el
programa durante un breve periodo de tiempo.
Es importante tener en cuenta que no todos los pines de Arduino admiten la función
analogWrite(). Por lo general, solo los pines marcados como PWM son capaces de generar
una señal analógica.
En este ejemplo, la función setup() se utiliza para configurar el pin 13 como salida, utilizando
la función pinMode(). Luego, en la función loop(), se utiliza la función digitalWrite() para
Dani Durán 5
Fundamentos Hardware 1ASIR
cambiar el estado del pin 13 a HIGH (encendido) y LOW (apagado) con un intervalo de 1
segundo, utilizando la función delay() para pausar el programa durante ese tiempo.
Recuerda que la estructura de un programa Arduino puede variar según el proyecto
específico y las necesidades del usuario.
Dani Durán 6
Fundamentos Hardware 1ASIR
3. Manejo de variables
Dani Durán 7
Fundamentos Hardware 1ASIR
Dani Durán 8
Fundamentos Hardware 1ASIR
4. Monitor Serial
El monitor serie es una herramienta muy útil en la programación de Arduino, ya que permite
enviar y recibir información desde el microcontrolador a través del puerto serial de la placa.
Esto puede ser muy útil para depurar y verificar el comportamiento del programa, ya que se
pueden imprimir mensajes de texto, valores de variables, entre otras cosas. Y sobre todo
podemos ver qué está haciendo el programa en tiempo real.
Para el uso del monitor serial hay que seguir lo siguientes pasos:
1. Abrir el IDE de Arduino y conectar la placa Arduino a la computadora.
2. Abrir un nuevo sketch en el IDE y escribir el siguiente código:
3. Subir el código a la placa Arduino y abrir el monitor serial. Para abrir el monitor
serial, hacer clic en el botón "Serial Monitor" en la barra de herramientas del IDE de
Arduino.
4. En el monitor serial, seleccionar una velocidad de 9600 baudios en la lista
desplegable de la parte inferior derecha de la ventana.
5. Al hacer esto, el monitor serial debería mostrar el mensaje "Hola mundo!" una vez
por segundo.
Hay que tener en cuenta, cómo parte importante, que la función [Link]() inicializa el
puerto serial de la placa Arduino y que la función [Link]() envía un mensaje a la
consola serial (y genera un salto de línea posterior, si no queremos el salto de línea usamos
[Link]()).
Al enviar mensajes a la consola serial, se puede ver en tiempo real lo que está haciendo el
programa de Arduino y se puede depurar el código para encontrar errores o problemas.
Además, también se puede utilizar el monitor serial para enviar comandos a Arduino desde
el ordenador, lo que permite una mayor interacción entre el programa de Arduino y el
usuario.
Dani Durán 9
Fundamentos Hardware 1ASIR
Para leer valores desde el monitor serial en Arduino, se pueden seguir los siguientes pasos:
1. Enviar valores desde el monitor serial a Arduino. Para hacer esto, se puede utilizar la
función [Link]() o [Link]() en el código de Arduino. Por ejemplo:
Otra alternativa para recoger un valor por el monitor serial sería usando lo siguiente:
}
valor = [Link]();
2. Abrir el monitor serial en el IDE de Arduino. Para hacer esto, hacer clic en el botón
"Serial Monitor" en la barra de herramientas del IDE de Arduino.
3. Enviar valores al monitor serial. Para hacer esto, escribir un número o una cadena
de caracteres en la barra de entrada de la parte superior de la ventana del monitor
serial y presionar Enter. Por ejemplo:
Dani Durán 10
Fundamentos Hardware 1ASIR
5. Estructuras condicionales
Las estructuras condicionales son una herramienta fundamental en la programación, ya que
permiten ejecutar diferentes bloques de código según una determinada condición. En
Arduino, las estructuras condicionales se utilizan para tomar decisiones en función del
estado de un sensor, un botón o cualquier otra variable.
Por ejemplo, el siguiente código encenderá un LED si el valor leído por un sensor de luz es
mayor que 500:
Estructura if-else: Esta estructura se utiliza para ejecutar un bloque de código si se cumple
una condición, y otro bloque de código si no se cumple. La sintaxis básica del if-else es la
siguiente:
Por ejemplo, el siguiente código encenderá un LED si el valor leído por un sensor de luz es
mayor que 500, y lo apagará si no lo es:
Dani Durán 11
Fundamentos Hardware 1ASIR
5.2. Switch
Esta estructura se utiliza para evaluar una variable o expresión y ejecutar diferentes bloques
de código según su valor. La sintaxis básica del switch es la siguiente:
Por ejemplo, el siguiente código encenderá un LED si se recibe el carácter 'a' por el puerto
serial, y lo apagará si se recibe el carácter 'b':
Dani Durán 12
Fundamentos Hardware 1ASIR
Dani Durán 13
Fundamentos Hardware 1ASIR
6. Bucles
Los bucles son estructuras de control de flujo que se utilizan en programación para repetir
una secuencia de instrucciones un número determinado de veces o mientras se cumpla una
condición específica. En el contexto de Arduino, los bucles son una herramienta importante
para realizar tareas repetitivas, como leer datos de sensores, controlar actuadores o
actualizar una pantalla.
6.1 for
Este bucle se utiliza para repetir una serie de instrucciones un número determinado de
veces. La sintaxis básica del bucle for es la siguiente:
6.2. while
Bucle while: Este bucle se utiliza para repetir una serie de instrucciones mientras se cumpla
una condición específica. La sintaxis básica del bucle while es la siguiente:
El bucle while seguirá ejecutando las instrucciones dentro de las llaves mientras la
condición especificada en los paréntesis sea verdadera. Por ejemplo, el siguiente código
imprimirá los números del 1 al 10:
Dani Durán 14
Fundamentos Hardware 1ASIR
Dani Durán 15
Fundamentos Hardware 1ASIR
7. Funciones
Una función es un bloque de código que realiza una tarea específica y puede ser llamado
en cualquier momento dentro de un programa. Las funciones permiten que un programa sea
más modular, lo que lo hace más fácil de entender, depurar y modificar.
En Arduino, se pueden crear funciones de la misma manera que en cualquier otro lenguaje
de programación. Para crear una función en Arduino, debes seguir estos pasos:
1. Definir la función: Debes especificar el tipo de datos que la función devolverá (si es
que devuelve algún valor), el nombre de la función y los argumentos que recibirá.
Por ejemplo:
En este ejemplo, la función se llama "sumar", recibe dos argumentos de tipo "int" (entero) y
devuelve un valor de tipo "int".
2. Escribir el código dentro de la función: Debes escribir el código que realizará la tarea
específica dentro de la función.
En el ejemplo anterior, la función realiza la tarea de sumar dos números enteros y devuelve
el resultado.
En este ejemplo, la función "sumar" se llama dentro de la función "setup", se le pasan dos
argumentos (5 y 7) y el resultado se almacena en la variable "resultado". Luego, se imprime
el resultado en el monitor serie.
Un ejemplo sencillo de uso de una función en Arduino puede ser una función que encienda
y apague un LED. La función se llamaría "encender_led" y recibiría un argumento que
indicaría si el LED debe encenderse o apagarse.
Dani Durán 16
Fundamentos Hardware 1ASIR
Dani Durán 17
Fundamentos Hardware 1ASIR
8. PWM
En Arduino, los pines PWM y analógicas son dos tipos de pines diferentes que se utilizan
para diferentes propósitos. A continuación, se presentan algunos apuntes importantes sobre
estos tipos de bocas:
Pines analógicas:
2. Las bocas analógicas son aquellas que permiten leer señales analógicas, como por
ejemplo la tensión generada por un potenciómetro. En Arduino, estas bocas se
identifican con la letra "A" antes del número de la boca (por ejemplo, A0, A1, etc.). A
diferencia de las bocas PWM, las bocas analógicas no pueden generar señales
analógicas.
Dani Durán 18
Fundamentos Hardware 1ASIR
8.1. AnalogRead
El comando analogRead() en Arduino es utilizado para leer el valor analógico presente en
uno de los pines analógicos de la placa. Este valor se encuentra en un rango de 0 a 1023,
donde 0 representa un valor de voltaje de 0V y 1023 representa un valor de voltaje de 5V
(en una placa Arduino alimentada con 5V).
Los pines analógicos de Arduino se utilizan para leer valores de sensores analógicos, como
por ejemplo, potenciómetros, sensores de luz, termistores, entre otros.
Para utilizar analogRead(), se debe indicar la boca analógica que se desea leer. La sintaxis
es la siguiente:
Donde boca_analogica es el número de la boca analógica que se desea leer. Por ejemplo,
para leer el valor presente en la boca analógica 0, se puede utilizar el siguiente código:
Dani Durán 19
Fundamentos Hardware 1ASIR
Este código lee el valor presente en el pin analógico A0 y lo envía por la comunicación serial
cada 50 milisegundos.
Es importante recordar que para utilizar analogRead(), el pin utilizado debe ser configurado
como entrada analógica utilizando la función pinMode() con el parámetro INPUT:
Además, es importante tener en cuenta que el valor leído con analogRead() puede variar
dependiendo de la calidad del sensor utilizado, la precisión de la placa Arduino, entre otros
factores. Por lo tanto, es necesario realizar pruebas y calibraciones para obtener
mediciones precisas y confiables.
Donde:
● valor: El valor que se desea convertir.
● rango_inicial_min y rango_inicial_max: El rango en el que se encuentra el valor
original.
● rango_final_min y rango_final_max: El rango en el que se desea convertir el valor.
Por ejemplo, para convertir un valor leído por una entrada analógica (que tiene un rango de
0 a 1023) a un valor de brillo para un LED (que tiene un rango de 0 a 255), se puede utilizar
el siguiente código:
Dani Durán 20
Fundamentos Hardware 1ASIR
En este código, la función map() se utiliza para convertir el valor leído por la entrada
analógica de 0 a 1023 a un valor de brillo de 0 a 255 para el LED. Luego, se utiliza la
función analogWrite() para escribir el valor de brillo en la boca digital 9.
Es importante recordar que al utilizar la función map(), el valor convertido puede incluir
decimales, por lo que es necesario asegurarse de que la función que se utilice a
continuación (como analogWrite() en el ejemplo anterior) acepte valores decimales o
redondear el valor convertido.
Dani Durán 21
Fundamentos Hardware 1ASIR
En este código, se utiliza la función analogRead() para leer el valor de resistencia presente
en el potenciómetro conectado al pin A0. Luego, se utiliza la función map() para convertir
este valor a un valor de brillo para el LED, en un rango de 0 a 255. Finalmente, se utiliza la
función analogWrite() para escribir este valor de brillo en la boca digital 9, controlando así el
brillo del LED.
Es importante recordar que para leer valores analógicos en Arduino, se debe utilizar una
entrada analógica y la función analogRead(). Además, es importante realizar pruebas y
calibraciones para obtener mediciones precisas y confiables.
Dani Durán 22
Fundamentos Hardware 1ASIR
9. Led RGB
Un LED RGB (Red, Green, Blue) es un tipo de LED que combina tres diodos emisores de
luz (LEDs) de diferentes colores en un solo paquete. El LED RGB puede emitir luz en una
amplia gama de colores al mezclar los tres colores primarios (rojo, verde y azul) en
diferentes intensidades.
El LED RGB se utiliza comúnmente en aplicaciones de iluminación, pantallas de
visualización y dispositivos de control de color, como tiras de LED, paneles de iluminación,
pantallas de televisión y monitores de ordenador. En estos dispositivos, el LED RGB se
utiliza para crear efectos de color personalizados, iluminación de ambiente y pantallas de
visualización de alta resolución.
En Arduino, el LED RGB se puede controlar mediante la variación de la intensidad de los
tres colores primarios utilizando la técnica de modulación por ancho de pulso (PWM), lo que
permite generar una amplia variedad de colores y efectos de iluminación.
Dani Durán 23
Fundamentos Hardware 1ASIR
El valor de la función analogWrite() debe estar entre 0 y 255, siendo 0 la intensidad mínima
y 255 la máxima.
4. Puedes mezclar diferentes intensidades de los colores rojo, verde y azul para
generar diferentes colores en el LED RGB. Por ejemplo, el siguiente código
encenderá el LED RGB en color amarillo:
5. Recuerda que la conexión del LED RGB puede variar dependiendo del tipo de LED
RGB que estés utilizando. Asegúrate de consultar el datasheet del componente para
verificar la conexión correcta de los pines.
Dani Durán 24
Fundamentos Hardware 1ASIR
10. Buzzer
Un buzzer (o zumbador) es un dispositivo electromecánico que produce un sonido o una
señal acústica cuando se le aplica una corriente eléctrica. En el contexto de la programación
con Arduino, un buzzer es un componente electrónico que se puede utilizar para generar
sonidos y tonos controlados por el microcontrolador.
Los buzzers se componen generalmente de un cristal piezoeléctrico que vibra al recibir una
señal eléctrica. Al aplicar una corriente alterna (AC) a este cristal, se producen vibraciones
mecánicas que se propagan en el aire en forma de ondas sonoras, generando así el sonido.
Existen dos tipos principales de buzzers: los activos y los pasivos. Los buzzers activos
contienen un circuito integrado que les permite producir sonidos de manera autónoma, sin
necesidad de un control externo. Por otro lado, los buzzers pasivos requieren que se les
aplique una señal eléctrica externa para que produzcan sonidos.
A simple vista los puedo diferenciar porque el buzzer activo es el que trae la pegatina de
serie, y además si los miro por abajo, el buzzer activo suele estar cerrado con el “plastiquito
negro”, sin embargo, el buzzer pasivo si lo miras por abajo se ve el circuitillo interno que
tiene.
Es importante tener en cuenta que, como el buzzer activo ya tiene su propio circuito
integrado, no es posible controlar la frecuencia o la duración del sonido con precisión
utilizando este método. Para lograr una mayor precisión en la generación de tonos y
melodías, es necesario utilizar un buzzer pasivo y controlarlo mediante la variación de la
frecuencia y la duración de la señal eléctrica enviada desde el microcontrolador.
Dani Durán 25
Fundamentos Hardware 1ASIR
Además, algunos buzzers activos pueden incluir una función de control de volumen, que
permite ajustar la intensidad del sonido producido.
En el contexto de la programación con Arduino, se puede controlar un buzzer activo
simplemente conectándolo a una de las salidas digitales del microcontrolador. Para generar
el sonido correspondiente, basta con enviar una señal eléctrica a la salida correspondiente
utilizando el lenguaje de programación de Arduino. Sin embargo, como el buzzer activo ya
tiene su propio circuito integrado, no es posible controlar la frecuencia o la duración del
sonido de manera precisa como se hace con los buzzers pasivos.
Dani Durán 26
Fundamentos Hardware 1ASIR
En este ejemplo, estamos utilizando el pin digital 8 de Arduino para controlar el buzzer
pasivo. En la función setup(), configuramos el pin 8 como salida. En la función loop(),
utilizamos la función tone() de Arduino para generar una serie de tonos correspondientes a
una melodía predefinida.
La variable melody[] contiene una serie de frecuencias en hertzios que corresponden a los
tonos de la melodía. El bucle for se encarga de recorrer esta lista de frecuencias y generar
el tono correspondiente en el buzzer pasivo conectado al pin 8 utilizando la función tone().
Luego de cada tono, se espera un tiempo de 500 milisegundos utilizando la función delay()
antes de pasar al siguiente tono.
Finalmente, cuando se han generado todos los tonos de la melodía, utilizamos la función
noTone() para detener la reproducción de la melodía y apagar el buzzer.
Es importante tener en cuenta que, para controlar un buzzer pasivo con precisión, es
necesario conocer las características eléctricas del buzzer y utilizar un circuito externo de
control que permita ajustar la frecuencia y la duración de la señal eléctrica enviada al
buzzer.
En la mayoría de los casos, se utilizan frecuencias estándar para generar las diferentes
notas musicales. La tabla a continuación muestra algunas de las frecuencias más comunes
utilizadas en la generación de sonidos con un buzzer pasivo:
Dani Durán 27
Fundamentos Hardware 1ASIR
Do 262
Do# 277
Re 294
Re# 311
Mi 330
Fa 349
Fa# 370
Sol 392
Sol# 415
La 440
La# 466
Si 494
Es importante tener en cuenta que la calidad y el tono del sonido producido por un buzzer
pasivo dependen no solo de la frecuencia de la señal eléctrica aplicada, sino también de la
forma de onda de la señal y de las características acústicas del buzzer y del ambiente en el
que se encuentra. Por lo tanto, puede requerirse un ajuste fino de las frecuencias utilizadas
para obtener el sonido deseado.
Dani Durán 28
Fundamentos Hardware 1ASIR
Dani Durán 29
Fundamentos Hardware 1ASIR
● Conectar uno de los terminales del pulsador a cualquier pin digital de Arduino, en mi
caso he utilizado el pin digital 5.
● Conecte el otro terminal del pulsador a tierra de Arduino.
● Luego conecte una resistencia de valor 10 Kohms desde el pin digital que tiene
conectado el pulsador al 5v de Arduino, en mi caso he conectado la resistencia del
pin digital 5 a 5v.
El resultado: por defecto el estado del pin será alto (HIGH o 1), y cuándo presiono el botón
el valor será bajo (LOW ó 0).
● Conectar uno de los terminales del pulsador a cualquier pin digital de Arduino, en mi
caso he utilizado el pin digital 5.
Dani Durán 30
Fundamentos Hardware 1ASIR
Por defecto en este caso, el valor del estado del pin será bajo (LOW ó 0), y cuánod se
presiona el botón, el estado cambiará a alto (HIGH ó 1).
En este caso, es el más simple de conectar, simplemente tenemos que conectar el pulsador
tal y cómo se muestra en el circuito. En el ejemplo conectaremos un terminal del pulsador a
cualquier pin digital de Arduino (en este caso se usa el pin digital D5) y el otro el otro
terminal del pulsador a tierra de Arduino.
Dani Durán 31
Fundamentos Hardware 1ASIR
El resultado: por defecto el estado del pin será alto (HIGH o 1), y cuándo presiono el botón
el valor será bajo (LOW ó 0).
Para entenderlo, se muestra el siguiente código en el que el botón está conectado al pin
digital 2 y se utiliza la resistencia pull-up interna del Arduino para evitar que el pin quede en
estado flotante cuando el botón no está presionado. El botón se monitorea continuamente
en el bucle "loop", y cuando se detecta un pulso (cuando el pin se lee como "LOW"), se
cambia el estado de la variable "buttonState" usando el operador "!" para invertir su valor
actual.
Luego, se realizan acciones diferentes según el estado del botón. En el ejemplo, se usan
comentarios para indicar qué acciones se deben realizar en cada caso, pero en realidad se
puede programar cualquier acción deseada para cada estado.
Dani Durán 32
Fundamentos Hardware 1ASIR
Dani Durán 33
Fundamentos Hardware 1ASIR
12. Fotoresistencia
Una fotoresistencia, también conocida como LDR (del inglés Light Dependent Resistor), es
un tipo de resistor que varía su resistencia eléctrica en función de la cantidad de luz que
recibe. Cuando se expone a la luz, la resistencia de la fotoresistencia disminuye, mientras
que cuando está en la oscuridad, la resistencia aumenta.
En un proyecto de Arduino, se puede utilizar una fotoresistencia como un sensor de luz para
medir la cantidad de luz en un ambiente y, a partir de ahí, tomar decisiones o realizar
acciones. Para utilizar una fotoresistencia en Arduino, se debe conectar una de sus patillas
a una entrada analógica del microcontrolador y la otra patilla a tierra. A través de la lectura
del valor analógico obtenido en la entrada, se puede determinar el nivel de luz presente en
el ambiente.
A continuación se presenta un ejemplo de código en Arduino que utiliza una fotoresistencia
conectada al pin A0 para controlar el brillo de un LED conectado al pin 9:
Dani Durán 34
Fundamentos Hardware 1ASIR
Este código lee el valor analógico de la fotoresistencia en cada iteración del bucle loop(), lo
imprime en el monitor serie y utiliza la función map() para mapear el valor de la
fotoresistencia de un rango de 0 a 1023 a un rango de 0 a 255, que es el rango de brillo
aceptado por el método analogWrite(). El valor resultante se utiliza para controlar el brillo del
LED conectado al pin 9, y el bucle se repite con una pausa de 10 milisegundos entre
iteraciones.
Dani Durán 35
Fundamentos Hardware 1ASIR
Dani Durán 36
Fundamentos Hardware 1ASIR
14. Sensores
Para conectar un sensor a una placa Arduino debemos seguir los siguientes pasos:
1. Identificar los pines del sensor: En primer lugar, debes identificar los pines del
sensor. En la mayoría de los casos, el sensor tendrá al menos dos pines: uno para la
alimentación y otro para la salida de datos. Es importante saber qué pines
corresponden a qué función para poder conectarlos correctamente a la placa
Arduino.
2. Identificar la polaridad: Si el sensor requiere una fuente de alimentación, es
importante identificar la polaridad de los pines. En muchos casos, el pin positivo se
identificará con un símbolo "+", mientras que el pin negativo se identificará con un
símbolo "-".
3. Conectar el sensor a la placa Arduino: Una vez que hayas identificado los pines del
sensor, puedes conectarlos a la placa Arduino. Si el sensor requiere una fuente de
alimentación, asegúrate de conectar el pin positivo a un pin de alimentación de 5V o
3.3V en la placa Arduino. El pin negativo del sensor debe conectarse a un pin de
tierra en la placa Arduino. Si el sensor no requiere una fuente de alimentación,
simplemente conecta el pin de salida de datos del sensor a uno de los pines de
entrada analógicos o digitales en la placa Arduino.
4. Programar la placa Arduino: Finalmente, debes programar la placa Arduino para leer
los datos del sensor. La forma en que se hace esto dependerá del tipo de sensor
que estés utilizando. En general, necesitarás utilizar una función de lectura analógica
o digital en el código de Arduino para leer los datos del sensor. También puede ser
necesario calibrar el sensor o ajustar los valores de lectura para que sean precisos.
Dani Durán 37
Fundamentos Hardware 1ASIR
Dani Durán 38
Fundamentos Hardware 1ASIR
2. Conectar el LED a la placa de pruebas. El LED tiene dos patas: una es más larga
que la otra, la pata larga es el ánodo y la corta es el cátodo. Conecta el ánodo del
LED a un resistor de 220 ohmios y el otro extremo del resistor al pin digital 13 de
Arduino. Conecta el cátodo del LED al GND de Arduino.
3. Define el pin que utilizamos para el sensor de movimiento.
5. En el método loop(), lee el estado del sensor y envía el estado a la consola serie.
7. Sube el código a la placa de Arduino y observa la consola serie para ver los valores
de salida del sensor. Si se ha conectado un LED, debería encenderse cuando se
detecte movimiento.
Dani Durán 39
Fundamentos Hardware 1ASIR
El HC-SR04 tiene cuatro pines: dos para la alimentación eléctrica y dos para la
comunicación con el microcontrolador o dispositivo que se utiliza para leer la distancia
medida. A continuación, se describe cada uno de los pines:
1. VCC: Este pin se utiliza para alimentar el sensor. Se recomienda utilizar una fuente
de alimentación de 5V para el HC-SR04.
2. GND: Este pin se utiliza para conectar el sensor a tierra.
3. Trig: Este pin se utiliza para enviar la señal de activación del sensor. El
microcontrolador o dispositivo que se utiliza para leer la distancia medida envía un
pulso de al menos 10 microsegundos a este pin para activar el sensor y empezar a
medir la distancia.
4. Echo: Este pin se utiliza para recibir la señal de eco del sensor. El sensor envía una
señal de pulso al pin Echo una vez que ha detectado un objeto cercano y ha medido
la distancia. El tiempo que tarda en llegar la señal de eco al pin Echo se utiliza para
calcular la distancia al objeto.
Dani Durán 40
Fundamentos Hardware 1ASIR
3. Leer la distancia: Para leer la distancia al objeto, es necesario enviar un pulso al pin
Trig para activar el sensor y medir el tiempo que tarda en llegar el eco al pin Echo.
Utilice la función pulseIn() para medir el tiempo de la señal de eco y calcular la
distancia en centímetros:
Los valores medidos por el HC-SR04 pueden variar dependiendo de factores como la
temperatura, la humedad y la presión atmosférica, por lo que es recomendable calibrar el
sensor antes de su uso.
Dani Durán 41
Fundamentos Hardware 1ASIR
Dani Durán 42
Fundamentos Hardware 1ASIR
99. Miscelánea
En resumen, la diferencia entre un dispositivo con ánodo común y uno con cátodo común es
la forma en que se encienden los LED. En el caso de un ánodo común, se envía una señal
de bajo al cátodo correspondiente para cerrar el circuito, mientras que en un cátodo común,
se envía una señal de alto al ánodo correspondiente para cerrar el circuito. Es importante
tener en cuenta qué tipo de dispositivo se está utilizando al conectarlo a un proyecto de
Arduino para garantizar que los LED se enciendan correctamente.
Dani Durán 43
Fundamentos Hardware 1ASIR
Dani Durán 44
Fundamentos Hardware 1ASIR
Dani Durán 45
Fundamentos Hardware 1ASIR
En este ejemplo, se utilizan las etiquetas @brief, @param, @return, @note y @warning
para proporcionar información sobre la función y su uso. Esto facilita la comprensión del
propósito de la función y cómo utilizarla de manera segura y efectiva.
Dani Durán 46
Fundamentos Hardware 1ASIR
Dani Durán 47
Fundamentos Hardware 1ASIR
Dani Durán 48