Avanzado - Modulo I Arduino
Avanzado - Modulo I Arduino
Arduino 12 horas
OBJETIVOS
✔ Conceptualizar el significado de bibliotecas o librerías Arduino.
✔ Conocer el concepto de Motores para Arduino.
✔ Diferenciar y reconocer los tipos de Servomotores que se pueden
conectar a una placa Arduino.
✔ Comprender el funcionamiento de un Joystick.
✔ Comprender y aplicar la forma de generar diferentes colores
usando un RGB.
✔ Interpretar y aplicar el uso de un módulo Laser.
✔ Conocer y aplicar el uso de un módulo Relé.
✔ Diferenciar y reconocer los tipos de led Display.
✔ Comprender el uso de una pantalla LCD.
1. BIBLIOTECAS O LIBRERIAS EN ARDUINO
Las librerías o Bibliotecas son más que funciones que se pueden inyectar en nuestro
código para realizar tareas de programación específicas. hechas por terceros que
usamos en nuestro sketch. Esto nos facilita mucho la programación y permite la
abstracción haciendo que nuestro programa sea más sencillo de hacer y de entender.
El entorno Arduino se puede ampliar mediante el uso de bibliotecas, al igual que la
mayoría de las plataformas de programación. Las bibliotecas brindan funcionalidad
adicional para usar en bocetos, por ejemplo, trabajar con hardware o manipular
datos. Existen varios tipos de bibliotecas por ejemplo las usadas en robótica, para
comunicación, para conectividad, para memoria, para monitor etc.
Para usar una librería o biblioteca primero debes descargarlas e instalarla, para lo cual
existen varios métodos, por ejemplo:
Esta herramienta también nos permite gestionar las librerías instaladas manualmente.
Desde C:\Users\nombre_usuario\AppData\Local\Arduino15, podemos ver en formato
el listado de librerías y placas disponibles desde el gestor de librerías y tarjetas.
https://www.arduinolibraries.info/
2.SERVOMOTORES Y ARDUINO
2.1 ¿Qué es un servomotor?
Un servomotor es un actuador rotativo o motor que permite un control preciso en
términos de posición angular, aceleración y velocidad (en revoluciones por minuto (rpm),
ya sea en sentido horario o antihorario las cuales son capacidades que un motor normal
no tiene. En definitiva, utiliza un motor normal y lo combina con un sensor para la
retroalimentación de posición.
Pero, los servomotores no son en realidad una clase específica de motor, sino una
combinación de piezas específicas, que incluyen un motor de corriente continua o
alterna. En este caso usaremos el servomotor (SG90), es un servomotor que puede
girar de 0 a 180 grados en lugar de 360 grados, y al controlar la posición de rotación,
se puede controlar el ángulo de rotación o la velocidad de rotación. Para usar el SG90,
debe manejar la señal PWM a través de Arduino. PWM (modulación por ancho o de
pulso) es un tipo de señal de voltaje utilizada para enviar información o para modificar
la cantidad de energía que se envía a una carga. Los servomotores tienen tres pines de
conexiones: alimentación (5 V, normalmente), tierra o GND y la patilla de señal, a
través de la cual el sistema de control emitirá una señal PWM
◾ Voltaje de funcionamiento
4.8 ~ 7.2V
◾1.8kg.cm de par
MATERIALES: Placa Arduino Mega, Servo SG90, 3 cables puente macho, PC.
#include <Servo.h>
void setup() {
void loop() {
angulo = 90; //primer movimiento (equivalente a angulo 90º)
miservo.write(angulo);
delay(1500);
miservo.write(angulo);
delay(1500);
miservo.write(angulo);
delay(1500);
Si lo notas hemos incluido un elemento nuevo que es una librería <Servo.h>, una
librería es una colección de funciones que incluyes de una manera muy sencilla y
explícita en tu sketch y que proporciona una cierta funcionalidad específica.
Cuando se usa en placa de Arduino uno la señal PWM de los pines digitales 9 y 10 no
se puede usar, El uso de la biblioteca desactiva el analogRead que es funcionalidad de
los PWM.
void setup() {
void loop() {
}
}
}
4. EJERCICIO 1: SERVO MOTOR CON POTENCIOMETRO
OBJETIVO: Analizar y verificar el funcionamiento de un servo motor utilizando un
potenciómetro en una placa Arduino Mega.
void setup() {
myServo.attach(9);
Serial.begin(9600);
}
void loop() {
PotVal = analogRead(PotPin);
Serial.print("PotVal:");
Serial.print(PotVal);
angle = map(PotVal, 0, 1023, 0, 179);
Serial.print ("angle= ");
Serial.println (angle);
myServo.write(angle);
delay (15);
}
5. MOTORES DE CORRIENTE CONTINUA(DC)
El motor DC, también llamado motor de corriente continua, pertenece a la clase de los
electromotores y sirve principalmente para transformar la energía eléctrica en energía
mecánica. La mayoría de las formas de construcción del motor DC de bajo voltaje se
basa en fuerzas magnéticas y dispone de mecanismos internos de tipo electrónico o
electromecánico. También característico de los motores de corriente continua
convencionales es el acumulador o la fuente de poder que se utiliza es que puede
cambiar periódicamente la dirección del flujo de corriente del motor. Una
modificación del motor DC clásico que resulta más potente en numerosos ámbitos de
aplicación es el motor DC sin escobillas, que prescinde de contactos de roce y ofrece
así, entre otras cosas, una vida útil más larga.
✔ Con escobillas
✔ Sin escobillas
El rotor se encuentra rodeado por un estator de imanes permanentes y por tanto está
bajo la influencia de su campo magnético.
La interacción entre el campo magnético del rotor y el campo magnético del estator
genera el movimiento del eje del rotor, este tiene colocada una polea en uno de sus
extremos y así podemos aprovechar su movimiento.
La corriente que puede entregar un microcontrolador en sus salidas, es solo del orden
de unos 20 mA, máximo 40 mA, y un pequeño motor DC de unos 6 voltios, ya puede
Para hacer el interfaz, y poder manejar el motor necesitamos poner una pieza intermedia,
existen varias opciones para realizar esta interfaz, la más básica es usando transistores;
también podemos usar circuitos integrados como el driver L293D o módulos
especializados como el L298N. Puede ser un transistor MOSFET(Metal-Oxide-
Semiconductor Field-Effect-Transistor) que significa Transistor de efecto de campo
semiconductor de óxido de metal, que regula la señal de salida de voltaje o también
podemos utilizar un puente H.
5.8 Motorreductor
Es un mecanismo electromecánico capaz de regular la velocidad de giro de un motor
en una máquina para que funcione con un ritmo determinado. Consta de una cadena
de engranajes que aplican diferentes velocidades a las piezas giratorias de un motor.
Los diferentes componentes de un motorreductor son los que hacen posible que
descienda o aumente la velocidad de un mecanismo sin que el motor se resienta.
Además de realizar esta limitación de giro rotatoria, este sistema se encarga de poder
ajustar su potencia mecánica.
6. EJERCICIO: USO DE MOTORREDUCTOR
OBJETIVO: Hacer funcionar un motor DC 6V (corriente directa) con Arduino y
con Gorila Cell.
MATERIALES:
✔ Motor de 6 V DC
✔ Arduino UNO o similar
✔ Protoboard
✔ Cables
✔ Resistencia de 330 Ω
✔ Diodo 1N4004
✔ Transistor 2N2222A
byte motorDC = 3;
void setup()
{
pinMode(3, OUTPUT);
void loop()
digitalWrite(motorDC, HIGH);
delay(2000);
digitalWrite(motorDC, LOW);
delay(2000);
}
7. RGB MODULO
El LED RGB consta de 3 leds de 3 colores diferentes: rojo, verde y azul. La
combinación de luz de estos 3 leds genera una luz que puede abarcar cualquier
tonalidad por brillo en la escala RGB. El LED RGB se conecta a 4 pines diferentes, 3
serán pines de datos y el cuarto pin se conecta a GND por ser este led de cátodo común.
Voltaje de funcionamiento: 3 – 5 V.
Tipo de entrada: PWM. La señal varía entre 0 y 255. En función de este valor se
conseguirá un tono de color en la luz.
PINES:
-: GND.
MATERIALES:
int ledRojo = 3;
int ledVerde = 5;
int ledAzul = 6;
void setup() {
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledAzul, OUTPUT);
void loop() {
digitalWrite(ledVerde, 0);
digitalWrite(ledAzul, 0);
delay(1500);
digitalWrite(ledRojo, 0);
digitalWrite(ledVerde, 255);
digitalWrite(ledAzul, 0);
delay(1500);
digitalWrite(ledRojo, 0);
digitalWrite(ledVerde, 0);
digitalWrite(ledAzul, 255);
delay(1500);
digitalWrite(ledRojo, 255);
digitalWrite(ledVerde, 255);
digitalWrite(ledAzul, 255);
delay(1500);
digitalWrite(ledVerde, 255);
digitalWrite(ledAzul, 0);
delay(1500);
digitalWrite(ledRojo, 255);
digitalWrite(ledVerde, 0);
digitalWrite(ledAzul, 255);
delay(1500);
digitalWrite(ledRojo, 0);
digitalWrite(ledVerde, 255);
digitalWrite(ledAzul, 255);
delay(1500);
analogWrite(ledRojo, 255);
analogWrite(ledVerde, 0);
analogWrite(ledAzul, 128);
delay(1500);
}
8. LASER
Un diodo láser es un dispositivo similar a un LED convencional, pero que en lugar de
emitir luz convencional emite un haz de láser.
A diferencia entre un haz de luz convencional y un haz de láser es que avanza en línea
recta. Si el generador láser fuera perfecto y el haz estuviera en el vacío, la luz seguiría
su camino hasta que encontrara un obstáculo. LASER significa Light Amplification
by Stimulated Emission of Radiation (En español: Amplificación de Luz por Emisión
Estimulada de Radiación). Por tanto, un láser es un dispositivo que emite luz mediante
un proceso de amplificación óptica basado en las emisiones estimuladas de radiación
electromagnética. Los diodos láser, en comparación con los LED, tienen tiempos de
respuesta mucho más rápidos y pueden enfocar su radiación a un área tan pequeña
como 1µm (micrómetro) -de diámetro.
OBJETIVO: Hacer funcionar un DIODO LASER con Arduino generando una señal
y aplicarla a un LDR para encender y apagar un LED.
MATERIALES:
✔ Un Diodo LASER
✔ Un Buzzer
✔ Un LDR
✔ 1 Resistencias 10K
✔ cables puente macho-macho, hembra-macho
✔ Arduino UNO
✔ Una Protoboard
int buzzerPin = 9;
int laserPin = 8;
int lectura;
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(laserPin, OUTPUT);
Serial.begin(9600);
digitalWrite(laserPin, HIGH);
analogWrite(buzzerPin, 0);
void loop() {
lectura = analogRead(sensor);
Serial.println(lectura);
Serial.println("Alarma");
analogWrite(buzzerPin, 255);
} else {
analogWrite(buzzerPin, 0);
}
9. RELÉ
Si activamos el relé, poniendo a 5 Volts el pin de control dejará pasar la corriente (se
cierra el circuito interruptor), mientras que si la tensión es 0 Volts se interrumpirá la
corriente. Existen relés para 12 Volts, 24V, 110V, 220V en la parte como interruptor.
OBJETIVO: Hacer funcionar dos lampara que puedan ser activadas con una señal
digital por medio de un Arduino activando un relé
MATERIALES:
✔ Arduino Mega
✔ Cable USB para programar
✔ Protoboard
✔ 2 Porta lampara
✔ 2 focos 110V
✔ Fuente 110V
✔ Jumpers (cables) hembra-macho
✔ Relé
void setup() {
pinMode(rele, OUTPUT);
void loop() {
}
10. USO DE JOYSTICK
Un joystick es un dispositivo capaz de detectar el movimiento en todas las direcciones,
incluidas las direcciones delantera, trasera, izquierda, derecha y diagonal, utilizando
un eje. El Joystick consta de dos potenciómetros y un pulsador. Los dos
potenciómetros indican en qué dirección se presionaron los potenciómetros. El
interruptor envía un valor BAJO cuando se presiona el eje del joystick.
El Joystick está conectado al Arduino por cinco pines. Tres pines son pines de entrada
a Arduino y los otros dos pines están conectados por VCC(5V) y GND.
Para controlar con el eje del joystick, debe comprender qué dirección es X y qué
dirección es Y. Además, es necesario saber si el eje del joystick se mueve en la
dirección X o en la dirección. Arduino mide la posición del eje del joystick mediante
entrada analógica. La entrada analógica proporciona un valor de rango entre 0 y 1023
como lo muestra la siguiente gráfica.
OBJETIVO: Analizar y verificar el funcionamiento de un Joystick en una placa
Arduino Mega.
MATERIALES:
void setup () {
void loop () {
Serial.print("X = ");
Serial.print("Button is ");
if (buttonVal == HIGH) {
} else {
Serial.println ("Presionado");
delay(5000);
}
La constante Xin es el pin A0 de Arduino y recibe las coordenadas X del Joystick. La
constante Yin es el pin A1 de Arduino y recibe las coordenadas Y del Joystick. La
constante KEYin es de pin 2 y recibe un botón del Joystick. Se llama a la función
analogRead para introducir el valor del pin Xin en la variable xVal y el valor del pin
Yin en la variable yVal. El valor recibido de la función analogRead está entre 0 y 1023.
Llame a la función digitalRead e introduzca el valor del pin KEYin en la variable
buttonVal. Cuando se presiona el botón (Alto), se emite la frase "El botón se presiona",
y cuando no se presiona el botón (BAJO), se emite el mensaje "El botón no se
presiona".
Se comprueba que los valores X e Y cambian moviéndose hacia arriba, hacia abajo,
hacia la izquierda y hacia la derecha con un joystick. Compruebe que el botón está
presionado al presionar el Joystick.
Una pantalla LED, o pantalla de diodos emisores de luz, es una pantalla plana que
utiliza diodos emisores de luz como pantalla de vídeo. Una pantalla LED puede ser
una pantalla pequeña o parte de una pantalla más grande. Los diodos LED se utilizan
para formar una pantalla LED. Las pantallas de LEDs también se utilizan en las
carteleras y en los carteles de las tiendas. Un panel LED consta de varios LEDs,
mientras que una pantalla LED consta de varios paneles LED. Los LEDs usados para
componer las pantallas de LEDs ofrecen varias ventajas en comparación con otras
fuentes emisoras de luz.
Un diodo emisor de luz está formado por un chip semiconductor rodeado por una
carcasa de plástico transparente. La caja de plástico permite que la luz pase a través de
ella. La emisión de diferentes colores, incluyendo la luz ultravioleta e infrarroja,
depende del material semiconductor que se utilice en el diodo.
11. LED DISPLAY
Una pantalla LED, o pantalla de diodos emisores de luz, es una pantalla plana que
utiliza diodos emisores de luz como pantalla de vídeo. Una pantalla LED puede ser
una pantalla pequeña o parte de una pantalla más grande. Los diodos LED se utilizan
para formar una pantalla LED. Las pantallas de LEDs también se utilizan en las
carteleras y en los carteles de las tiendas. Un panel LED consta de varios LEDs,
mientras que una pantalla LED consta de varios paneles LED. Los LEDs usados para
componer las pantallas de LEDs ofrecen varias ventajas en comparación con otras
fuentes emisoras de luz.
Un diodo emisor de luz está formado por un chip semiconductor rodeado por una
carcasa de plástico transparente. La caja de plástico permite que la luz pase a través de
ella. La emisión de diferentes colores, incluyendo la luz ultravioleta e infrarroja,
depende del material semiconductor que se utilice en el diodo.
Los tipos más comunes para el tipo de pantalla son barra de luz, siete segmentos y
matriz de puntos. También tenemos muchos otros tipos diferentes de pantalla. El
tamaño de dígito/matriz puede variar de 0,03 a 0,40 pulgadas, siendo los tamaños más
comunes 0,2, 0,3 y 0,4 pulgadas.
Ejemplo: Display.setBrigthness(7);
Función display.showNumberDec(number,leading_zeros,length,position)
Esta es la función que más utilizará. El primer argumento es un número que desea
mostrar en la pantalla. El resto de los argumentos son opcionales.
La función millis () permite obtener la cantidad de milisegundos que han pasado desde
que comenzó la ejecución del código, es decir, que toma el registro de pulsos
generados por el contador y los emplea para calcular el tiempo en milisegundos.
MATERIALES:
#include <TM1637Display.h>
#define CLK 2
#define DIO 3
void setup() {
void loop() {
pantalla.showNumberDec(millis() / 1000);
}
12. LCD
Una pantalla de cristal líquido o LCD (acrónimo del inglés liquid crystal display) es
una pantalla delgada y plana formada por un número de píxeles en color o monocromos
colocados delante de una fuente de luz o reflectora. Estos píxeles se ubican entre dos
capas de cristales polarizados y son iluminados por una fuente de luz fija. Las
moléculas de cristal líquido permiten el paso de mayor o menor cantidad de luz según
el estímulo eléctrico que reciben.
Puede decirse, por lo tanto, que una pantalla de LCD muestra las imágenes a partir de
esa retroiluminación que permite la combinación de los colores. Una de las desventajas
de este sistema es que no puede brindar un negro absoluto, una característica que incide
en el contraste y que atenta contra la calidad de la imagen. A menudo se utiliza en
dispositivos electrónicos de pilas, ya que utiliza cantidades muy pequeñas de energía
eléctrica.
Cada píxel de un LCD típicamente consiste de una capa de moléculas alineadas entre
dos electrodos transparentes, y dos filtros de polarización, los ejes de transmisión de
cada uno que están (en la mayoría de los casos) perpendiculares entre sí. Sin cristal
líquido entre el filtro polarizante, la luz que pasa por el primer filtro sería bloqueada
por el segundo (cruzando) polarizador.
Para el manejo de este periférico vamos a instalar en el IDE una librería lcd para
Arduino conocida como: LiquidCrystal.
12.1 TIPOS DE DISPLAY
En el mercado podemos encontrar muchos tipos de displays diferentes, estas
diferencias están marcadas fundamentalmente por el tipo de display, que va a
determinar cómo van a ser mostrados los datos y por la conexión que se usa para
mostrar los datos en el display.
12.4 DisplayI2CAdaptador
El poder utilizar displays conectados a Arduino mediante un bus I2C ha simplificado
tanto el trabajo que es muy común ver proyectos sobre esta plataforma que muestren
datos por uno de estos displays.
MATERIALES:
procederemos a escanear la pantalla lcd para saber el tipo de pantalla, esto servirá a
la hora de codificar. para esto será necesario utilizar el Arduino uno
#include <Wire.h>
void setup()
Wire.begin();
Serial.begin(9600);
Serial.println("\nI2C Scanner");
void loop()
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("0");
Serial.print(address, HEX);
Serial.println(" !");
nDevices++;
else if (error == 4) {
Serial.print("0");
Serial.println(address, HEX);
if (nDevices == 0)
else
Serial.println("done\n");
delay(5000);
MATERIALES:
#include <LiquidCrystal_I2C.h>
void setup() {
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hola Estudiantes!");
lcd.setCursor(0, 1);
lcd.print("de Robotica!");
}
void loop() {
lcd.display();
delay(500);
MATERIALES:
✔ Resistencia 330 Ω
#include <LiquidCrystal_I2C.h>
int tempPin = 0;
void setup() {
lcd.init(); // initialize the lcd
void loop() {
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp c ");
lcd.setCursor(0, 1);
lcd.print(tempC);
delay(500);
}
13. EVALUACIÓN
a) motor DC
b) motor AC
c) Servo
d) NeoPixel
2. Son trozos de código hechos por terceros que usamos en nuestro sketch. Esto
nos facilita mucho la programación y permite la abstracción haciendo que
nuestro programa sea más sencillo de hacer y de entender.
a) Librerías
b) Asistentes
c) Servo
d) Laser
a) Relé
b) Motor CC o DC
c) Servo
d) Laser
a) Display
b) Motor CC ó DC
c) Servo
d) Joystick
BIBLIOGRAFÍA:
https://www.arduinolibraries.info
https://www.tinkercad.com/
https://www.arduino.cc/