Está en la página 1de 34

MM6160

SISTEMAS MECATRÓNICOS INDUSTRIALES Página 1 / 12


Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

CURSO: SISTEMAS MECATRÓNICOS


INDUSTRIALES
LABORATORIO N° 04
Automatismos de Sistemas con
Arduino UNO
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 2 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

HOJA DE EVALUACIÓN

Laboratorio Nro : _____


Tema : _____________________________________________
_____________________________________________
Especialidad : _____ Semestre : ______
Sección : _____ Módulo utilizado : ______
Fecha : _______________

aceptable
Excelente

Requiere
Regular

mejora
Bueno

No
CRITERIOS DE EVALUACIÓN

Responde las preguntas del profesor sobre la parte


A 5.0 4.0 3.0 2.0 0.0
práctica
Lidera acertadamente y colaborativamente con el
B 3.0 2.0 2.0 1.0 0.0
equipo de trabajo
Realiza la simulación/ensamblado del equipo
C 5.0 4.0 3.0 1.0 0.0
asignado y también con el uso correcto del equipo.

D Presenta adecuadamente el informe del laboratorio 4.0 3.0 2.0 1.0 0.0

E Trabaja con puntualidad 2.0 0.0

F Trabaja con orden y limpieza 1.0 0.0

CRITERIOS DE EVALUACIÓN
NOMBRE DE INTEGRANTES Nota
A B C D E F
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 3 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

1. Objetivo

• Identificar las principales instrucciones de tratamiento digital y analógico en el ARDUNIO


• Diseñar e implementar circuitos ejemplo de procesos con led, potenciómetros, sensores, etc.
• Identificar las características del modo de control de entradas y salidas digitales.
• Familiarizarse con el entorno de programación.
• Aprender a declarar variables y variables tipo lista de valores.
• Aprender a declarar una función y llamarla cuando sea necesario.
• Aprender a conexionar leds a la placa.
• Familiarizarse con el entorno de programación.
• Reconocer las partes de un programa de Arduino.
• Conocer órdenes como: pinMode, digitalWrite y delay.
• Aprender a declarar variables tipo en arreglo de valores.
• Aprender a conexionar un zumbador a la placa.
• Aprender a como declarar variables.
• Conocer órdenes de control de programa como: for.

2. Seguridad en la ejecución del laboratorio

Antes de realizar el laboratorio:

Tener cuidado con el tipo y niveles de voltaje que


suministran a los equipos

Antes de utilizar los instrumentos cerciorarse si son


de entrada o de salida, para no dañar los equipos

Tener cuidado en la conexión y en la desconexión de


los equipos utilizados

• Asegúrese que usted y sus compañeros de grupo tienen los implementos necesarios de
seguridad. Recuerde que va a trabajar con elementos de aire comprimido, electricidad y fluidos de
alta presión.

3. RECURSOS
EQUIPOS, INSTRUMENTOS Y ACCESORIOS:
a. Tarjeta Arduino UNO.
b. Software Arduino.
c. Componentes eléctricos (leds, resistencias, potenciómetros, bocinas, sensores,etc).
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 4 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

II. INFORMACIÓN

Para poner a funcionar tú Arduino, es necesario que descargues primero la versión más actualizada del
software de Arduino, desde https://www.arduino.cc/en/Main/Software (software gratuito) Este software
conocido como “Arduino IDE”, te permitirá programar la tarjeta para que haga exactamente lo que tú
quieras. Es similar a un procesador de palabras, pero para escribir programas con una computadora.

• Click en el sistema operativo apropiado.


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 5 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

ABRIENDO EL IDE DE ARDUINO.

Abre el software del IDE de Arduino en tú computadora.


Viendo un poco la interfaz para ir conociendo. Luego realizar
algunos pasos para identificar la tarjeta Arduino.

GUI (Interfaz gráfica del Usuario)


1) Verificar: Compila y aprueba tú código. Encuentra errores
de sintaxis (paréntesis o signos de punto y coma faltantes).
2) Cargar: Envía tú código a la tarjeta Arduino. Cuando le
das click, deberás ver las luces en tú tarjeta parpadeando
rápidamente.
3) Nuevo: Estos botones abren otra nueva pestaña de
código.
4) Abrir: Este botón permite abrir un archivo existente.
5) Guardar: Guarda el archivo actual.
6) Monitor serial: Este abre una ventana que muestra
cualquier información serial que tú tarjeta Arduino este
transmitiendo. Es muy usado para tareas de depuración.
7) Nombre del Archivo: Muestra el nombre del archivo en el
que estás trabajando actualmente.
8) Área de código: Esta es la ventana/área donde escribes el código de tú programa.
9) Área de mensajes: Es aquí donde el IDE te dice si hay algún error en tú código.

¿Qué es un circuito eléctrico?

Un circuito es básicamente un ciclo eléctrico con un punto de inicio y un punto final – con cualquier
número de componentes entre dichos puntos. Los circuitos pueden incluir resistencias, diodos,
inductores, sensores de todas las formas y tamaños, motores, y cualquier otro tipo entre cientos de miles
de componentes. Los circuitos se dividen generalmente en tres categorías: circuitos analógicos, circuitos
digitales o circuitos de señales mixtas.

EL MUNDO FUNCIONA CON CIRCUITO


Donde sea que mires encontraras circuitos. El teléfono celular
que podamos tener, el computador que controla el sistema de
emisiones de los automóviles; la consola de video juegos –
todas estas cosas están completamente llenas de circuitos.

Si se desea iluminar un LED utilizando la placa Arduino como fuente de alimentación, hay que tener en
cuenta que los 5 V que proporciona Arduino son demasiados para una caída de tensión de unos 1,7 V
que tienen los LEDs usuales. Es necesario, por lo tanto añadir una resistencia en serie al circuito para
que el LED soporte los 5 V de suministrados. La pregunta que surge es:
¿Cómo calculo la resistencia necesaria?
En la figura debajo se muestra el circuito correspondiente, del que deseamos calcular la resistencia R.
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 6 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

Por tratarse de dos dispositivos en serie, sabemos que la caída de potencial total (5 V) será igual a la
suma de las caídas de potencial de la resistencia (V2) y del LED (V1). Por otro lado, sabemos por la ley
de Ohm que la caída de potencial de la resistencia es el producto de la intensidad de corriente (0,015 A
para el LED) y la resistencia (V2=IxR). Por tanto, 5 = 1,7 + Rx 0,015. De donde, despejando R, se obtiene
R = 220 Ω.

Siguiendo el esquema de la Figura Superior es muy fácil realizar el montaje en la placa de pruebas. Para
ello conectamos el pin digital número 13 de la placa Arduino (que debe encontrarse desconectada del
PC) con la resistencia de 220 Ω. El otro extremo de la resistencia lo unimos a la parte positiva del LED,
que es la pata más larga, como puede apreciarse en la Placa Arduino. Por su parte, la pata negativa del
LED se conecta mediante un cable a tierra (GND) en la placa Arduino. El resultado final debe ser similar
al de la Figura debajo.
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 7 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

1.) LED PARPADEANTE.


Se trata de conectar un led al pin13, haciendo que luzca durante 500 ms y que se apague durante
100 ms, este proceso se repetirá cíclicamente.

Figura A: Esquema de distribución electrónico

SOLUCION:
void setup() { //comienza la configuración
pinMode(13, OUTPUT); //Configura el pin 13 como de salida
} //termina la configuración

void loop() { //comienza el bucle principal del programa


digitalWrite(13, HIGH); //envia 5V al pin (salida) 13
delay (500); //espera 500 ms pin 13 con 5V
digitalWrite(13, LOW); //envia 0V al pin (salida) 13
delay (100); //espera 100 ms pin 13 con 0V
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 8 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

2.) SECUENCIA DE LEDS.


Se trata de encender y apagar 5 leds secuencialmente. Los leds deben estar conectados a los pines
2,3,4,5 y 6.
Se deben encender y posteriormente apagar los leds desde el pin 2 al 6, con un tiempo de duración
de encendido y apagado de 100 milisegundos.
Nota: en una segunda solución la secuencia principal del programa debe estar reproducida en una
función a la que llamará el programa principal.

Figura A: Esquema de distribución electrónico

Figura B: Circuito electrónico


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 9 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

SOLUCIÓN 1:
int tiempo=100; //declara una variable como entero y de valor 100
void setup() { //comienza la configuración
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
}

void loop() { //comienza el bucle principal del programa


digitalWrite(2,HIGH);
delay(tiempo);
digitalWrite(2,LOW);
delay(tiempo);
digitalWrite(3,HIGH);
delay(tiempo);
digitalWrite(3,LOW);
delay(tiempo);
digitalWrite(4,HIGH);
delay(tiempo);
digitalWrite(4,LOW);
delay(tiempo);
digitalWrite(5,HIGH);
delay(tiempo);
digitalWrite(5,LOW);
delay(tiempo);
digitalWrite(6,HIGH);
delay(tiempo);
digitalWrite(6,LOW);
delay(tiempo);
}

SOLUCIÓN 2:
int iTiempo=100;
int iLed;
void setup() { //comienza la configuración
for (iLed=2;iLed<7;iLed++) {
pinMode (iLed, OUTPUT);
}
}
void secuencia() {
for (iLed=2;iLed<7;iLed++) {
digitalWrite (iLed, HIGH);
delay (iTiempo);
digitalWrite (iLed, LOW);
delay (iTiempo);
}
}

void loop() {
secuencia();
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 10 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

SOLUCION 3:
int aiLeds[]={2,3,4,5,6};// Declara variables tipo lista de valores
int iTiempo=100;
int iRecorre=0;
void setup() { //comienza la configuración
for (iRecorre=0;iRecorre<5;iRecorre++) {
pinMode (aiLeds[iRecorre], OUTPUT);
}
}

void secuencia() {
for (iRecorre=0;iRecorre<5;iRecorre++) {
digitalWrite (aiLeds[iRecorre], HIGH);
delay (iTiempo);
digitalWrite (aiLeds[iRecorre], LOW);
delay (iTiempo);
}
}

void loop() {
secuencia();
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 11 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

3.) CRUCE DE SEMÁFOROS.


Se trata de un cruce de semáforos controlado por Arduino, para ello utilizaremos en el primer
semáforo los pines 2 (led rojo), 3 (led ámbar), 4 (led verde), en el segundo semáforo utilizaremos
los pines 5 (led rojo), 6 (led ámbar) y 7 (led verde). La secuencia de funcionamiento debe ser: rojo
1 – verde 2 durante 3 segundos, rojo 1 – ámbar 2 durante 500 ms, verde 1 – rojo 2 durante 3
segundos, ámbar 1 - rojo 2 durante 500 ms.

Figura A: Esquema de distribución electrónico

Figura B: Circuito electrónico


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 12 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

SOLUCION:
int aiLeds[]={2,3,4,5,6,7};
int iTiempo1=3000;
int iTiempo2=1000;
int iRecorre;

void setup() {
for (iRecorre=0;iRecorre<6;iRecorre++) {
pinMode (aiLeds[iRecorre],OUTPUT);
}
}

void loop () {
digitalWrite (aiLeds[0],HIGH); // Rojo 1
digitalWrite (aiLeds[5],HIGH); // Verde 2
delay (iTiempo1); // (3s)
digitalWrite (aiLeds[5],LOW); // Verde 1
digitalWrite (aiLeds[4],HIGH); // Ambar 2
delay (iTiempo2); // (0.5s)
digitalWrite(aiLeds[0],LOW); // Rojo 1
digitalWrite (aiLeds[4],LOW); // Ambar 2
digitalWrite (aiLeds[2],HIGH); // Verde 1
digitalWrite (aiLeds[3],HIGH); // Rojo 2
delay (iTiempo1); // (3s)
digitalWrite (aiLeds[2],LOW); // Verde 1
digitalWrite(aiLeds[1],HIGH); // Ambar 1
delay (iTiempo2);
digitalWrite(aiLeds[1],LOW); // Ambar 1
digitalWrite(aiLeds[3],LOW); // Rojo 2
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 13 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

4.) SOS CON ZUMBADOR


Se trata de un zumbador que en código morse (pitidos largos/cortos) especifica una palabra, en
nuestro caso SOS. Para el que no lo sepa, la S son tres señales acústicas de corta duración y la O
tres señales acústicas de larga duración.
El zumbador debe estar conectado al pin 13, los pitidos cortos tendrán una duración de 100 ms y
los largos 300 ms. Entre letra y letra debe pasar un tiempo de 300 ms y entre SOSs debe haber un
tiempo de 1000 ms.
Nota: Debes usar variables para guardar los tiempos que vas a usar.

Figura A: Esquema de distribución electrónico

Figura B: Circuito electrónico


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 14 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

SOLUCION 1:
int corto=100; //Declara la variable de argumento entero "corto" y la inicializa con el valor 100 (letra S)
int pausa=300;//tiempo entre letra y letra
int largo=300; //variable de argumento entero "largo" y la inicializa con el valor 300 (letra O)
int espera=1000;//variable argumento entero "espera" y la inicializa con el valor 1000 (tiempo entre SOS-SOS)
int n=0;
int zumb=13; //PIN digital al que conectamos el zumbador

void setup(){ //comienza la configuración


pinMode(zumb,OUTPUT);
}

void loop(){
for(n=0;n<3;n++){ //Iteración en la que la variable n comienza con el valor 0
digitalWrite(zumb, HIGH); // y va aumentando en 1 en cada ciclo hasta que toma el valor 2,
delay(corto); // con lo que las instrucciones comprendidas entre los corchetes
digitalWrite(zumb,LOW); // se repiten 3 veces
delay(corto);
}
delay(pausa); //Tiempo entre letras

for(n=0;n<3;n++){ //Aquí esta la O


digitalWrite(zumb, HIGH);
delay(largo);
digitalWrite(zumb,LOW);
delay(largo);
}
delay(pausa);

for(n=0;n<3;n++){
digitalWrite(zumb, HIGH);
delay(corto);
digitalWrite(zumb,LOW);
delay(corto);
}
delay(espera); //Tiempo hasta repetir SOS de nuevo
}

SOLUCION 2:
int tcorto=100;
int tlargo=300;
int pausa=300;
int espera=1000;
int n=0;

void setup(){ //comienza la configuración


pinMode(13,OUTPUT);
}

void s(){ //comienza el bucle para la letra S


for(n=0;n<3;n++) {
digitalWrite (13,HIGH);
delay (tcorto);
digitalWrite (13,LOW);
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 15 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

delay (tcorto);
}
}

void o(){ //comienza el bucle para la letra O


for(n=0;n<3;n++) {
digitalWrite (13,HIGH);
delay (tlargo);
digitalWrite (13,LOW);
delay (tlargo);
}
}

void loop(){ //se ejecuta el bucle principal en el orden siguiente


s();
delay(pausa);
o();
delay(pausa);
s();
delay(espera);
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 16 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

5.) COCHE FANTÁSTICO.


Se trata de encender y apagar 7 leds secuencialmente. Los leds deben estar conectados a los pines
5,6,7,8,9,10 y 11.
Se deben encender y apagar los leds desde el pin 5 al 11, con un tiempo de encendido y apagado
de 50 ms, más tarde se deben encender y apagar los leds desde el pin 11 al 5, con un tiempo de
encendido y apagado de 50 ms. La secuencia se debe repetir indefinidamente.
El efecto del programa es el de las luces delanteras de nuestro querido "Coche fantástico".

Figura A: Esquema de distribución electrónico

Figura B: Circuito electrónico


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 17 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

SOLUCION 1:
int leds[]={5,6,7,8,9,10,11};
int n=0;
int tiempo=50;

void setup() { //comienza la configuración


for (n=0;n<7;n++) {
pinMode(leds[n],OUTPUT);
}
}

void loop() {
for (n=0;n<7;n++) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo);
}

for (n=6;n>=0;n--) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo);
}
}

SOLUCION 2: (Sin variables de lista de valores (Array)


int n=0;
int tiempo=50;

void setup() { //comienza la configuración


for (n=5;n<12;n++) {
pinMode(n,OUTPUT);
}
}

void loop() {
for (n=5;n<12;n++) {
digitalWrite (n,HIGH);
delay(tiempo);
digitalWrite (n,LOW);
delay(tiempo);
}

for (n=11;n>=5;n--) {
digitalWrite (n,HIGH);
delay(tiempo);
digitalWrite (n,LOW);
delay(tiempo);
}
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 18 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

SOLUCIÓN 3: (Mejorando el efecto visual):


int leds[]={5,6,7,8,9,10,11};
int n=0;
int tiempo=30;

void setup() { //comienza la configuración


for (n=0;n<7;n++) {
pinMode(leds[n],OUTPUT);
}
}

void loop() {
for (n=0;n<7;n++) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n+1],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo*2);
}

for (n=6;n>=0;n--) {
digitalWrite (leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n-1],HIGH);
delay(tiempo);
digitalWrite (leds[n],LOW);
delay(tiempo*2);
}
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 19 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

6.) ENCENDER UN LED AL PRESIONAR UN PULSADOR.

La siguiente imagen muestra el anverso y el reverso de un botón. Las flechas azules indican
aquellas clavijas que se encuentran conectadas internamente, es decir, que su resistencia medida
con un multímetro es nula.

Figura A: Pulsador

Se trata de encender y apagar 1 led al accionar un pulsador. El pulsador debe estar conectado al
pin 2, y el led al pin 13.

Figura B: Esquema de distribución electrónico


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 20 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

Figura C: Circuito electrónico

Figura D: Montaje
Ponemos unir con un cable desde el PIN 5V a la pata del pulsador de la pata opuesta ponemos
otro cable tierra GMD, Para no provocar un cortocircuito insertamos por medio una resistencia
suficientemente grande por ejemplo de 1K/10K Ohm. En este circuito podemos medir la tensión
que hay entre el pulsador y la resistencia, cuando el circuito este abierto ahí habrá 0 o cinco voltios
según el orden en que hayamos puesto nuestros componentes.

Figura C: Esquema Eléctrico Pull-Up y Pull-Down


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 21 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

• Si el orden es V5 – Pulsador – Resistencia – GMD o “tierra” (montaje PULL DOWN) (bajar), entre
pulsador y resistencia habrá 0 voltios si está abierto el circuito y 5 si está cerrado
• Si el orden es V5 – Resistencia – Pulsador – GMD o “tierra” (montaje PULL UP) (levantar), entre
la resistencia y el pulsador habrá 5 voltios si está abierto el circuito y 0 si está cerrado

Adjunto los tres esquemas posibles para su mejor comprensión:

Figura D: Esquema Eléctrico Pull-Up y Pull-Down

SOLUCION 1:
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin

// variables will change:


int buttonState = 0; // variable for reading the pushbutton status

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}

void loop() {
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 22 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

7.) SECUENCIA DE LEDS CON PULSADOR.


Se trata de encender y apagar 4 leds secuencialmente al accionar un pulsador. El pulsador debe
estar
conectado al pin 4, y los leds a los pines 5,6,7 y 8.
Se deben encender y posteriormente apagar los leds desde el pin 5 al 8, con un tiempo de duración
de encendido y apagado de 200 milisegundos.
Nota: la secuencia principal del programa debe estar reproducida en una función a la que llamará
el programa principal.

Figura A: Esquema de distribución electrónico

Figura B: Circuito electrónico


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 23 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

SOLUCION 1:
int cadenaleds[]={5,6,7,8};
int pulsador=4;
int tiempo=200;
int n=0;

void setup() {
for(n=0;n<4;n++) {
pinMode (cadenaleds[n],OUTPUT);
}
pinMode (pulsador,INPUT);
}

void flash() {
for (n=0;n<4;n++) {
digitalWrite (cadenaleds[n],HIGH);
delay (tiempo);
digitalWrite (cadenaleds[n],LOW);
delay (tiempo);
}
}

void loop() {
if (digitalRead(pulsador)==HIGH) {
flash();
}
}

SOLUCION 2:
int leds[]={5,6,7,8};
int tiempo=200;
int pulsador=4;
int n=0;
int valorpulsador=0;

void setup(){
for(n=0;n<4;n++){
pinMode(leds[n],OUTPUT);
}
pinMode(pulsador,INPUT);
Serial.begin(9600);
}

void monitoriza(){
Serial.print("El valor del pulsador es ...");
Serial.println(valorpulsador);
delay(1000);
}

void secuencia(){
for(n=0;n<4;n++){
digitalWrite(leds[n],HIGH);
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 24 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

delay(tiempo);
digitalWrite(leds[n],LOW);
delay(tiempo);
}
}

void loop(){
valorpulsador=digitalRead(pulsador);
monitoriza();
if (valorpulsador==1){
secuencia();
}
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 25 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

8.) RULETA DE LA FORTUNA.


Se trata de cinco leds que se van encendiendo y apagando formando una secuencia, el jugador
debe dar al pulsador cuando el led intermedio se enciende, si acierta funciona un zumbador y la
velocidad de la secuencia aumenta.
Los leds deben estar conectados de los pines 5 a 9 (inclusive), el zumbador al pin 10, el pulsador al
pin 11.
El tiempo inicial entre encendido y encendido de leds debe ser 200 ms, si se acierta se decrementa
el tiempo en 20 ms, si el tiempo entre encendidos llegase a 10 ms, se devuelve el tiempo a 200 ms.

Figura A: Esquema de distribución electrónico

Figura B: Circuito electrónico


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 26 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

SOLUCION 1:
int leds[]={5,6,7,8,9};
int n=0;
int tiempo=200;
int zumbador=10;
int pulsador=11;

void setup (){


for(n=0;n<5;n++) {
pinMode(leds[n],OUTPUT);
}
pinMode(zumbador,OUTPUT);
pinMode(pulsador,INPUT);
}

void compruebaacierto(){
if(digitalRead(pulsador)==HIGH && n==2) {
digitalWrite(zumbador,HIGH);
delay (1000);
digitalWrite(zumbador,LOW);
tiempo=tiempo-20;
if(tiempo<10){
tiempo=200;}
}
}

void loop () {
for(n=0;n<5;n++) {
digitalWrite(leds[n],HIGH);
delay(tiempo);
compruebaacierto();
digitalWrite(leds[n],LOW);
delay(tiempo);
}
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 27 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

9.) AUMENTAR Y DISMINUIR INTENSIDAD LUMINOSA DE LED (FADING).

En este proyecto describiremos la forma de incrementar y disminuir la intensidad luminosa de un


LED, empleando el denominado PWM (Pulse Width Modulation) - (Método Dígital) o
modulación de impulsos en anchura.
Para realizar la modulación de impulsos en anchura se emplea una onda pulsada cuadrada en la
que varía la anchura del impulso, hasta conseguir modificar el valor promedio de la onda (es decir,
lo que se mediría con un multímetro). Por ejemplo, si tenemos una onda pulsada cuadrada con un
ciclo de trabajo de 0,75 (75%), y un valor máximo (HIGH) de 5 V, el valor promedio será 3,75 V. De
esta forma, aplicando ciclos de trabajo cada vez más pequeños se puede reducir la
intensidad luminosa del LED.

Únicamente debemos tener en cuenta que el pin digital 13 de la placa Arduino no es capaz de
realizar PWM, ya que, como indica la placa, no contiene el símbolo ~. Por lo tanto, en lugar del pin
13, se ha elegido el pin 11, que sí contiene el símbolo ~.

Para este proyecto se trata aumentar y disminuir la luminosidad de un led usando la capacidad de
ofrecer una tensión variable que da una salida analógica. Para ello se conecta un led al pin 11 y se
provoca que su luminosidad pase de mínima a máxima, para luego ir de máxima a mínima. Los
valores de salidas analógicas van del mínimo 0 al máximo 255.

Figura A: Esquema de distribución electrónico


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 28 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

Figura B: Circuito electrónico


SOLUCION 1:
int luminosidad = 0; // variable para asignar la luminosidad al led
int led = 11; // pin del led

void setup(){
// en el setup no hay nada que configurar
}

void loop(){
for (luminosidad = 0 ; luminosidad <= 255; luminosidad=luminosidad+3) // (desde min a un max)
{
analogWrite(led, luminosidad); // ilumina el led con el valor asignado a luminosidad (entre 0 y 255)
delay(30); // espera 30 ms para que se vea el efecto
}

for (luminosidad = 255; luminosidad >=0; luminosidad=luminosidad-3) // (desde max a un min)


{
analogWrite(led, luminosidad);
delay(30);
}
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 29 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

10.) AUMENTO Y DISMINUCIÓN DE LA INTENSIDAD DE LUZ DEL LED MEDIANTE UN


POTENCIOMÉTRO

En este caso conectaremos al circuito un potenciómetro que permitirá aumentar y disminuir


manualmente la intensidad luminosa del LED. El circuito del proyecto es como se muestra la Figura
(Esquema eléctrico). La parte del circuito correspondiente al LED y la resistencia es idéntica a la del
LED intermitente. Únicamente hay que añadir el potenciómetro, que se encuentra unido al pin de 5
V de la placa Arduino por su clavija izquierda, al pin analógico A0 con su clavija central y a tierra
(GND) con su clavija derecha.

Figura A: Potenciómetro

Figura B: Circuito electrónico


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 30 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

Figura C: Montaje
SOLUCION 1:
const int PinAnalogico =A0; // Se utiliza el pin AO para la entrada analógica
const int LedPin = 9;
int ValorEntrada = 0; // Variable que guarda el valor de entrada del potenciómetro
int ValorSalida =0; // Variable que guarda el valor de salida en escala 0 a 256.

void setup() {
// declare the LedPin as an OUTPUT:
pinMode(LedPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
// Pierde y gana intensidad según el potenciómetro
ValorEntrada = analogRead (PinAnalogico); // Lee el valor del potenciómetro
ValorSalida = map(ValorEntrada,0,1023,0,255); //convierte el valor de entrada en un número de 0 a 255
analogWrite(LedPin, ValorSalida); // Enciende el LED con intensidad del valor de salida
Serial.print("El valor del Potenciometro es ...");
Serial.println(ValorEntrada);
delay(1000);
Serial.print("El valor de la Intensidad es ...");
Serial.println(ValorSalida);
delay(1000);
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 31 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

11.) JUEGO DE COLORES CON UN LED RGB

Como se puede apreciar en los LEDs RGB estos poseen cuatro patas. La más larga es la de
conexión a tierra (GND). La aislada, a un lado de la más larga, es la relativa al color rojo R,
mientras que las dos restantes, al otro lado de la más larga, son la azul B, en un extremo, y la verde
G.

En este proyecto no sólo generaremos en un solo LED los tres colores fundamentales: rojo, verde
y azul, sino que también seremos capaces de crear colores combinados como el naranja, el amarillo,
el púrpura o el blanco.
Se han elegido los pines 9, 10 y 11 para los colores rojo, verde y azul, ya que contienen el
simbolo ~, que permite utilizar la función analogWrite(). Por otro lado, se ha definido la función color()
de tres variables enteras, que permite encender el LED RGB en el color
determinado por las tres coordenadas RGB. Por ejemplo, las tres coordenadas (255,255,255)
corresponden al blanco, mientras que (255,233,0) son las del amarillo.

Figura A: Led RGB

Figura B: Circuito electrónico


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 32 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

Figura B: Montaje

SOLUCION 1:
const int PinRojo = 9;
const int PinVerde =10;
const int PinAzul = 11;

void setup() {
pinMode[PinRojo. OUTPUT};
pinMode(PinVerde, OUTPUT);
pinMode[PinAzul. OUTPUT);
}

void loop() {
// Enciende 1 s los colores básicos: rojo, verde, azul
color(255, 0,0);
delay(1000);
color[0,255, 0);
delay[1000);
color(0, 0, 255);
delay(1000);

//Enciende 1 scolores combinados


color(230,95,0); // Naranja
delay(1000);
color(255,233,0); // Amarillo
delay(1000):
color(125,33,129); // Púrpura
delay(1000):
color(255,255,255); // Blanco
delay(1000);
}

// Define la función de tres variables enteras color()


void color (int Rojo, int Verde, int Azul){
analogWrite(PinRojo, Rojo);
analoqWrite(PinVerde, Verde);
analogWrite(PinAzul, Azul);
}
MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 33 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

12.) LUZ DE LED EN FUNCIÓN DE LA LUZ.


Se trata de un dispositivo que haga lucir un led más o menos en función de la luz externa. Para ello
conectaremos una ldr a la entrada analógica 2 y un led al pin 13.

Figura A: Esquema de distribución electrónico

Figura B: Circuito electrónico


MM6160
SISTEMAS MECATRÓNICOS INDUSTRIALES Página 34 / 12
Tema :
AUTOMATISMOS DE SISTEMAS CON ARDUINO UNO
Grupo A–B–C–D

Nota: Mantenimiento de Maquinaria de Planta Fecha: __/__/______ Lab. Nº 4

SOLUCION 1:
int sensorPin = 2; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the sensor

void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}

void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
}