Programacion de Perifericos Arduino
Programacion de Perifericos Arduino
Materiales
1 1
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
ASÍ
HD
VISITA LA OPCIÓN DE
62
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— ¿Qué hace está 3— Completa R
de esta resistencia? función? E
G
digitalRead()
U
_______________ ?
I = ___ N
_____Ω
_______________ R T
_____KΩ
A
63
C /*
Ó -----------------------------------
D Hola Mundo
I -----------------------------------
G Enciende un LED por un segundo y lo apaga por el mismo tiempo
0 */
//------------------------------------
D
//Función principal
E
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
P
pinMode(13,OUTPUT); // Inicializa el pin 13 como una salida
R
}
O
G
R
//------------------------------------
A
//Función cíclica
M
//------------------------------------
A
void loop() // Esta función se mantiene ejecutando
C
{ // cuando este energizado el Arduino
I
digitalWrite(13,HIGH); // Enciende el LED
Ó
delay(1000); // Temporiza un segundo (1s = 1000ms)
N
digitalWrite(13,LOW); // Apaga el LED
delay(1000); // Temporiza un segundo (1s = 1000ms)
}
2– Las señales digitales (Encendido o apagado) están muy presentes en todos los
sistemas, y muchos sensores trabajan sobre este principio, te invitamos a conocer
algunos:
64
EJERCICIOS
1
A partir del código de programación explicado anteriormente, queremos que
un LED prenda de manera intermitente de la siguiente manera:
Tip: 1s = 1000ms
3
Un Strober es un bombillo que prende y apaga muy rápido,
muy usado en las fiestas, tu misión es realizar tu strober
casero con un LED, con el mismo esquema montado en este
tutorial.
MI CUADERNO DE APUNTES
65
T2 Encender un LED con un pulsador
Materiales
1
1
1
LED Amarillo
Arduino UNO 1
Protoboard
Pulsador
1
1 4
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T10AB
ASÍ
HD
VISITA LA OPCIÓN DE
66
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— ¿Qué hace está 3— Un ejemplo de R
de esta resistencia? función? un lenguaje de alto E
nivel G
digitalWrite()
U
_______________ _______________ N
_____Ω
_____KΩ _______________ T
A
67
C /*
-----------------------------------
Ó Encender LED con un pulsador
-----------------------------------
D
Oprimir un pulsador y mientras este se mantenga accionado
I un LED se enciende
G Cosas de Mecatrónica y Tienda de Robótica
0
*/
//------------------------------------
D //Declara puertos de entradas y salidas
//------------------------------------
E int pulsador=2; //Pin donde se encuentra el pulsador, entrada
int led=13; //Pin donde se encuentra el LED, salida
//------------------------------------
P //Funcion principal
//------------------------------------
R void setup() // Se ejecuta cada vez que el Arduino se inicia
{
O pinMode(pulsador, INPUT); //Configurar el pulsador como una entrada
G pinMode(led,OUTPUT); //Configurar el LED como una salida
}
R
A //------------------------------------
//Funcion ciclicla
M //------------------------------------
A void loop() // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
C
//Condicional para saber estado del pulsador
I if (digitalRead(pulsador)==HIGH)
{
Ó //Pulsador oprimido
N digitalWrite(led,HIGH); //Enciende el LED
}
else
{
//Pulsador NO oprimido
digitalWrite(led,LOW); //Apaga el LED
}
}
//Fin programa
68
EJERCICIOS
1
La multinacional francesa Flante experta en ma-
quinaria industrial te ha contratado para que auto-
matices una máquina cortadora de papel. La condi-
ción principal es que el operario de la máquina
cuando vaya a realizar el corte siempre mantenga
las dos manos ocupadas, esta es una regla de segu-
ridad industrial para evitar accidentes. El operario debe oprimir los dos pulsa-
dores uno con cada mano y la cuchilla cortadora debe bajar y hacer el corte. El
siguiente montaje simula el control de la máquina, los dos pulsadores (S1 y S2)
y el LED rojo simula la cuchilla cortadora.
S1 S2
MI CUADERNO DE APUNTES
69
T3 Lectura serial de una entrada digital
Materiales
1
1
Arduino UNO
Pulsador Protoboard
1
1
4
Resistencia 1K
Cable USB Tipo AB
Conectores MM
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T11AB
ASÍ
HD
VISITA LA OPCIÓN DE
70
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— ¿Qué hace está 3— Este símbolo a R
de esta resistencia? función? que corresponde E
G
Serial.println()
U
_______________ N
_____Ω
_____KΩ _______________ _______________ T
A
71
/*
C --------------------------------------
Lectura serial de una entrada digital
Ó --------------------------------------
D Leer una entrada digital y mostrar por la pantalla del
computador (consola serial) el estado del pulsador
I cuando es oprimido
G Cosas de Mecatrónica y Tienda de Robótica
0 */
//------------------------------------
//Declara puertos de entradas y salidas
D //------------------------------------
int boton=2; //Pin donde se encuentra el pulsador, entrada
E
//------------------------------------
//Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
P //Configuración
pinMode(boton,INPUT); //Configurar el boton como una entrada
R Serial.begin(9600); //Inicia comunicación serial
}
O
G //------------------------------------
//Funcion ciclicla
R //------------------------------------
void loop() // Esta funcion se mantiene ejecutando
A { // cuando este energizado el Arduino
M //Guardar en una variable entera el valor del boton 0 ó 1
int estado = digitalRead(boton);
A
//Condicional para saber estado del pulsador
C if (estado==1)
{
I // Pulsado
Serial.println("Pulsado"); //Imprime en la consola serial
Ó } // "Pulsado"
else
N {
// No esta pulsado
Serial.println("NO Pulsado"); //Imprime en la consola serial
} // "NO Pulsado"
delay(100); //Retardo para la visualización de datos en la consola
}
//Fin programa
4 100
2– Para recordar
5 101
6 110
7 111
- Para leer una señal digital usa: digitalRead(numeroPin);
72
EJERCICIOS
1
Una empresa de gaseosas tiene un sistema con dos
sensores, uno de ellos indica si la botella se ha llena-
do con el líquido y el otro sensor indica si la botella
ya tiene la tapa. Para este caso simularemos los dos
sensores por medio de dos pulsadores (S1 y S2).
MI CUADERNO DE APUNTES
73
T4 Lectura serial de una entrada análoga
Materiales
1
1
1
Arduino UNO
Protoboard
1
Potenciómetro 10K
3
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T12AB
ASÍ
HD
VISITA LA OPCIÓN DE
74
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— ¿Qué hace está 3— Este símbolo a R
de esta resistencia? función? que corresponde E
G
analogRead()
U
_______________ N
_____Ω _______________
_____KΩ _______________ T
A
75
C /*
--------------------------------------
Ó Lectura serial de entrada análoga
D --------------------------------------
*/
D
//------------------------------------
E //Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
P Serial.begin(9600); //Inicia comunicación serial
}
R
O //------------------------------------
//Funcion ciclicla
G //------------------------------------
R void loop() // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
A
M //Guardar en una variable entera el valor del potenciómetro 0 a 1024
int valor= analogRead(A0);
A
C //Imprime en la consola serial el valor de la variable
Serial.println(valor);
I
Ó //Retardo para la visualización de datos en la consola
delay(100);
N
}
//Fin programa
2– Para recordar
76
EJERCICIOS
MI CUADERNO DE APUNTES
77
T5 Escritura serial
Polaridad de un LED
Materiales
1 1
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T13AB
ASÍ
HD
VISITA LA OPCIÓN DE
78
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— ¿Qué hace está 3— Nombra 4 tipos R
de esta resistencia? función? de variables E
G
Serial.read() a._______
U
_______________ b._______ N
_____Ω
_______________ c._______ T
_____KΩ
d._______ A
79
/*
C --------------------------------------
Escritura serial
Ó --------------------------------------
D Consiste en escribir por la pantalla del computador (consola serial)
una letra predeterminada, la primera vez que se escriba está
I un LED se enciende, si se vuelve a escribir por segunda vez
el LED se apaga.
G
Cosas de Mecatrónica y Tienda de Robótica
0
*/
//--------------------------------------------------
D //Declara puertos de entradas y salidas y variables
//--------------------------------------------------
E int led = 13; //Pin donde se encuentra el LED, salida
char leer; //Variable donde se almacena la letra
boolean prendido=false; //Estado LED la primera vez, apagado
//------------------------------------
P //Funcion principal
//------------------------------------
R void setup() // Se ejecuta cada vez que el Arduino se inicia
{
O Serial.begin(9600); //Inicia comunicación serial
pinMode(led, OUTPUT); //Configurar el LED como una salida
G }
R
//------------------------------------
A //Funcion ciclicla
//------------------------------------
M void loop() // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
A
//Guardar en una variable el valor de la consola serial
C leer=Serial.read();
I // Si es la letra 'a' y además el LED está apagado
if ( (leer=='a') && (prendido==false) )
Ó {
digitalWrite(led,HIGH); // Enciende el LED
N prendido=true; // Actualiza el estado del LED
}
// Si es la letra 'a' y además el LED está encendido
else if ( (leer=='a') && (prendido==true) )
{
digitalWrite(led,LOW); // Apaga el LED
prendido=false; // Actualiza el estado del LED
}
}
//Fin programa
T 1– Las tablas booleanas son muy útiles para entender la lógica de los programas,
I ¿sabes cuál es la tabla booleana de AND(&&), OR(||) y NOT(!) ?
P
S
80
EJERCICIOS
Si tu abuelito escribe 000 : Todos los aspersores de agua deben estar apagados
Si tu abuelito escribe 101 : El aspersor 1 y 3 se prenden pero el dos debe estar apagado
Si tu abuelito escribe 001 : El aspersor 1 y 2 se apagan pero el tres debe estar prendido
MI CUADERNO DE APUNTES
81
T6 Encender un LED por PWM
Materiales
1
1
1
LED Amarillo
Arduino UNO
Protoboard
1
1
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T14AB
ASÍ
HD
VISITA LA OPCIÓN DE
82
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— ¿Qué hace está 3— A que corres- R
de esta resistencia? función? ponden estos ope- E
radores G
analogWrite()
&&_______ U
_______________ N
_____Ω ||_______
_____KΩ _______________ T
==_______
A
!=_______
83
/*
C ---------------------------------------------
Enciende/Apaga un LED de forma proporcional
Ó ---------------------------------------------
D Programa que enciende proporcionalmente un LED cuando
llega a su máximo punto de brillo comienza a apagarse
I proporcionalmente.
G Cosas de Mecatrónica y Tienda de Robótica
0 */
//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
D //--------------------------------------------------
int brillo = 0; //Variable de brillo inicia en 0
E int variacion = 5; //Variable de incremento configurada de 5 en 5
int led = 9; //Pin donde se encuentra el LED, salida
//------------------------------------
//Funcion principal
P //------------------------------------
void setup () // Se ejecuta cada vez que el Arduino se inicia
R {
pinMode(led, OUTPUT); //Configurar el LED como una salida
O }
G
//------------------------------------
R //Funcion ciclicla
//------------------------------------
A void loop () // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
M
// Escritura analoga (PWM) en el LED escribo el valor de brillo
A analogWrite(led, brillo);
C // Incremento la variable brillo de 5 en 5
brillo = brillo + variacion;
I
// Nota: PWM ----> 0 - 255
Ó
// Si el brillo es 0 o 255
N if (brillo == 0 || brillo == 255)
variacion = -variacion; //La variación se vuelve negativa
delay (30); //Tiempo de incremento en el brillo
}
//Fin programa
PWM
LED Servomotor
Variar la intensidad de Variar la posición en
luz grados
84
EJERCICIOS
MI CUADERNO DE APUNTES
85
T7 Control ON/OFF con potenciómetro
Materiales
1
LED Verde 1
1
Arduino UNO
Protoboard
1
Potenciómetro 10K
1
3
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T15AB
ASÍ
HD
VISITA LA OPCIÓN DE
86
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— ¿Para que sirve 3— Este símbolo a R
de esta resistencia? el operador? que corresponde E
G
++ U
_______________ N
_____Ω
_____KΩ _______________ _______________ T
A
87
C /*
---------------------------------------------
Ó Control ON/OFF con potenciómetro
---------------------------------------------
D
Programa que enciende un LED cuando el valor de la entrada
I análoga comandada por el potenciómetro esta en cierto valor,
G cuando este valor cambia el LED se apaga, es un sistema con
control ON/OFF
0
Cosas de Mecatrónica y Tienda de Robótica
*/
D //------------------------------------
//Funcion principal
E //------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia comunicación serial
pinMode(13,OUTPUT); //Configurar el pin 13 como una salida
P }
R //------------------------------------
O //Funcion ciclicla
//------------------------------------
G void loop() // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
R
//Guardar en una variable el valor de la lectura análoga
A int valor = analogRead(A0);
M Serial.println(valor); //Imprime el valor por la consola
A
//Si el valor es mayor o igual a 500
C if (valor >= 500)
{
I digitalWrite(13,HIGH); //Enciende el LED en el pin 13
}
Ó //Si el valor es menor a 500
N else
{
digitalWrite(13,LOW); //Apaga el LED en el pin 13
}
delay(100); //Retardo de 100ms para ver los datos de la consola
}
//Fin programa
T
I
1– Debes tener mucha precaución al
P
momento en que tu placa Arduino este
S
energizada, si miras la palca por la
parte inferior esta tiene todos sus pun-
tos de soldadura al aire, si tienes la
placa alimentada y la colocas encima
de una superficie metálica, por ejem-
plo una mesa, es posible que la placa
se dañe ya que queda en corto. Si vas a
trabajar la placa Arduino te recomen-
damos trabajar sobre superficies de
materiales aislantes como los son los
sintéticos, madera o vidrio. Este es un
consejo para que cuides tu placa.
88
EJERCICIOS
89
T8 Control de un LED con una fotocelda
Materiales
1 1
1
LED Verde
Arduino UNO
1 1 Protoboard
Fotocelda
Cable USB Tipo AB
1 5
1
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T16AB
ASÍ
HD
VISITA LA OPCIÓN DE
90
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— La letra A se 3— Este símbolo a R
de esta resistencia? guarda en una va- que corresponde E
riable de tipo: G
U
_______________ N
_____Ω
_____KΩ
T
A
_______________
91
/*
C ---------------------------------------------
Control de intensidad de un LED
Ó ---------------------------------------------
D Programa que enciende un LED de manera proporcional de
acuerdo a la cantidad de luz que incida en una
I fotocelda.
G Cosas de Mecatrónica y Tienda de Robótica
0 */
//------------------------------------
//Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
D {
Serial.begin(9600); //Inicia comunicación serial
E pinMode(9,OUTPUT); //Configurar el pin 9 como una salida de PWM
}
//------------------------------------
//Funcion ciclicla
//------------------------------------
P void loop() // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
R
//Guardar en una variable el valor de la lectura análoga de la
O // fotocelda
int foto = analogRead(A0);
G
//Verifica el valor máximo y realizar una conversión
R int conversion = 780 - foto;
A //Condicional para establecer un valor absoluto
if ( conversion < 0)
M conversion = conversion * -1; //Multiplicar por -1 porque es negativo
A //Imprimir datos del valor de la lectura análoga de la fotocelda
Serial.print("Foto : ");
C Serial.print(foto);
Serial.println("");
I
//Imprimir datos del valor de la conversión
Ó Serial.print("Conv : ");
Serial.print(conversion);
N Serial.println("");
//Escritura análoga de PWM en el LED de acuerdo a la conversión
analogWrite(9, conversion);
delay(100); //Retardo para datos en la consola
}
//Fin programa
T 1– Piensa por un momento en dónde puedes encontrar una fotocelda, éstos son
I algunos ejemplos:
P
S
Calculadora Cámara digital
Cargar batería y apaga- Verifica si hay necesi-
do automático dad de foto con flash
92
EJERCICIOS
Te proponemos que crees un sensor para medir la luz que irradia un cuerpo
1
luminoso. Vamos a tener dos equipos el A y el B. En el equipo A va estar un
LED que varia su brillo de acuerdo a la posición de un potenciómetro (Ver
T6) y en el equipo B va estar comandado por una fotocelda. La idea es que
dobles el LED y la fotocelda a 90°, los coloques lo más junto posible y los
enfrentes, como si los dos se fueran a mirar de frente. Por consola serial debes ir mostran-
do la lectura de luz de la fotocelda, esta lectura debe ser en porcentaje de 0% a 100%. Un
ejemplo de la salida por consola: Concentración de luz 57%
LED 1
LED 2
Sensor luz
S1 S2
93
T9 Contador de pulsos
Materiales
1
1
1
LED Amarillo
Arduino UNO 1
Protoboard
Pulsador
1
1 4
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T17AB
ASÍ
HD
VISITA LA OPCIÓN DE
94
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— ¿Cuáles son los 3— Este símbolo a R
de esta resistencia? estados de una que corresponde E
variable booleana? G
U
a._____________ N
_____Ω _________
_____KΩ b._____________ T
A
95
/*
C ---------------------------------------------
Contador de pulsos
Ó ---------------------------------------------
D Programa que muestra por pantalla (consola serial) el número
de veces que el pulsador ha sido presionado, se realiza un
I proceso que de acuerdo al número de pulsaciones se enciende
un LED,
G
Cosas de Mecatrónica y Tienda de Robótica
0
*/
//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
D //--------------------------------------------------
int conta = 0; //Variable para guardar el conteo de los pulsos
E
//------------------------------------
//Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
P Serial.begin(9600); //Inicia comunicación serial
pinMode(2,INPUT); //Configura el pin 2 como una entrada, pulsador
R pinMode(13,OUTPUT); //Configura el pin 13 como una salida, LED
}
O
//------------------------------------
G //Funcion ciclicla
//------------------------------------
R void loop() // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
A
// Si el pulsador esta oprimido
M if ( digitalRead(2) == HIGH )
{
A // Si el pulsador no esta oprimido, flanco de bajada
if ( digitalRead(2) == LOW )
C {
conta++; //Incrementa el contador
I Serial.println(conta); //Imprime el valor por consola
delay (100); // Retardo
Ó }
}
N
// Si el valor del contador es 5
if (conta==5)
{
digitalWrite(13,HIGH); //Enciende el LED
}
// Si el valor del contador es 8
if (conta==8)
{
digitalWrite(13,LOW); // Apaga el LED
}
}
//Fin programa
T 1– Arduino tiene una gran comunidad de aprendizaje y para compartir diversas pre-
I guntas, en el foro oficial puedes encontrar diversos temas con gran cantidad de
P respuestas:
S
arduino.cc/forum
96
EJERCICIOS
B1 B2
Botón
97
T10 Interruptor magnético para una alarma visual
Materiales
1
1
1
LED Verde
Arduino UNO 1
Protoboard
Reed switch
1
1 4
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T18AB
ASÍ
HD
VISITA LA OPCIÓN DE
98
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— ¿Qué recibe la 3— Este símbolo a R
de esta resistencia? función delay()? que corresponde E
G
U
_______________ N
_____Ω
_____KΩ ____________ T
A
99
/*
C ---------------------------------------------
Interruptor magnético - Ladrón en casa
Ó ---------------------------------------------
D Programa que genera una alarma visual con un LED
a partir de un campo magnético generado a un
I reed switch.
G Cosas de Mecatrónica y Tienda de Robótica
0 */
//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------
D
int contacto = 2; //Pin asignado al reed switch
E int led= 13; //Pin asignado al LED
//------------------------------------
//Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
P {
pinMode(contacto,INPUT); //El reed switch como una entrada
R pinMode(led, OUTPUT); //El LED como una salida
O }
G //------------------------------------
//Funcion ciclicla
R //------------------------------------
void loop() // Esta funcion se mantiene ejecutando
A { // cuando este energizado el Arduino
M // Si el iman se acerca al reed switch
if (digitalRead(contacto)==LOW){
A
//Ciclo for que va de 0 a 50, el contador esta
C // en la variable a, se repite mientras a sea
// menor a 50
I for(int a=0; a<50; a++){
Ó digitalWrite(led,HIGH); //Prende el LED
delay(50); //Tiempo
N digitalWrite(led,LOW); //Apaga el LED
delay(50); //Tiempo
}
// Si el iman esta lejos del reed switch
}else{
digitalWrite(led,LOW); //Mantiene apagado el LED
} //Fin del if
}
//Fin del programa
100
EJERCICIOS
A– Por consola serial se recibe un número entero de 4 dígitos, si este número es igual al
guardado por el sistema el sistema de alarma se activa, para ello se debe mostrar por
consola ―Alarma activada‖
B– Si el Reed switch presencia algún campo magnético, la consola serial debe mostrar
―Presencia de extraño, sistema disparado‖
C– Como la alarma se disparo se debe encender el buzzer para generar soni-
do (se maneja como una salida digital) y además el LED amarillo y el rojo se
debe alternar encendido/apagado y emular los movimientos de una sirena de
bomberos a intervalos de 1s.
D– Si la alarma se quiere desactivar se debe ingresar un código numérico
entero de 4 dígitos de ser correcto mostrar por consola serial ―Alarma desactivada‖ de lo
contrario el paso C se debe repetir mientras no se ingrese el código correcto.
Sirena
Buzzer
Reed
MI CUADERNO DE APUNTES
101
T11 LED RGB apoyado de tabla de colores
Materiales
1 1 1
Arduino UNO
LED RGB Protoboard
1 3 5
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T19AB
ASÍ
HD
VISITA LA OPCIÓN DE
102
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— La palabra ―pulso‖ 3— Este símbolo a R
de esta resistencia? se debe guarda en que corresponde E
una variable de tipo : G
U
_____Ω _______________ ____________ N
_____KΩ
T
A
103
/*
C ---------------------------------------------
LED RGB - Tabla de Colores
Ó ---------------------------------------------
D Programa que hace uso de una función llamada
color para generar diversas tonalidades en
I un LED RGB
G Cosas de Mecatrónica y Tienda de Robótica
0 */
//--------------------------------------------------
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------
D int ledRojo = 9; //Declara Pin LED Rojo
int ledVerde=10; //Declara Pin LED Verde
E int ledAzul=11; //Declara Pin LED Azul
//------------------------------------
//Funcion principal
//------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
P {
pinMode(ledRojo,OUTPUT); //El LED Rojo como una salida
R pinMode(ledVerde,OUTPUT); //El LED Verde como una salida
pinMode(ledAzul,OUTPUT); //El LED Azul como una salida
O }
G //------------------------------------
//Funcion ciclicla
R //------------------------------------
void loop() // Esta funcion se mantiene ejecutando
A { // cuando este energizado el Arduino
M // Llamado a la función Color que recibe
// 1er posicion: Intensidad Rojo
A // 2da posición: Intensidad Verde
// 3ra posición: Intensidad Azul
C
color(255,0,0); //Rojo
I delay(1000);
Ó color(0,255,0); //Verde
delay(1000);
N
color(0,0,255); //Azul
delay(1000);
color(255,255,255); //Blanco
delay(1000);
color(255,0,255); //Magenta
delay(1000);
color(255,128,0); //Naranja
delay(1000);
}
//------------------------------------
//Funcion color
//------------------------------------
void color(int rojo, int verde, int azul){
//Escritura de PWM del color Rojo
analogWrite(ledRojo, 255-rojo);
//Escritura de PWM del color Verde
analogWrite(ledVerde, 255-verde);
//Escritura de PWM del color Azul
analogWrite(ledAzul, 255-azul);
}
//Fin programa
104
EJERCICIOS
2 El operario del punto anterior se va de vacaciones por lo cual el Sr. Martin esta muy molesto porque no
entiende muy bien como escribir el color separado por comas. Por ello al operario se le ha ocurrido una
gran idea, colocar dos pulsadores:
Pulsador 1 (S1) permite escoger un color dentro de un menú (Rojo, Verde o Azul), cada vez que se pulse
S1 el texto por Consola Serial que dice el color debe cambiar, debe tener antirebote para que por cada
pulso dado solo cambie un color. Un ejemplo del pulso dado y el valor mostrado por consola:
Pulsador 2 (S2) permite variar el color de 0 a 255 del último nombre del color que quedo asignado median-
te el Pulsador 1 (S1). Mientras se mantenga pulsado S2 a intervalos de 100ms (milisegundos) la variable de
ese color se debe ir incrementando de uno en uno. Se debe imprimir el nombre del Color (último estado
debido a S1) y a continuación el valor numérico del color, finalmente el resultado se debe ir viendo refle-
jado en el LED RGB. Por ejemplo de acuerdo al último estado del Pulso 4 y luego se pulsa S2:
Ayudas para resolverlo: Por cada color debes crear dos variables, una para guardar el nombre del color y
la otra para guardar el valor numérico que llevas de ese color.
LED RGB
S1 S2
105
T12 Control ON/OFF de un motor
Materiales
1
1
1
Transistor NPN
Arduino UNO
1
1 Protoboard
Pulsador
Cable USB Tipo AB
1 2 8
Resistencia 1K Conectores MM
Motor DC
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T20AB
ASÍ
HD
VISITA LA OPCIÓN DE
106
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— Si quiero guardar 3— Este símbolo a R
de esta resistencia? el número π que que corresponde E
tipo de variable G
debo usar? U
_____Ω N
_______________ _______________ T
_____MΩ
A
107
/*
C ---------------------------------------------
Control ON/OFF de un motor
Ó ---------------------------------------------
D Programa que hace uso de un motor y un pulsador,
mientras se mantenga pulsado, el motor debe
I estar encendido (ON) de lo contrario debe estar
apagado (OFF)
G
Cosas de Mecatrónica y Tienda de Robótica
0
*/
D //--------------------------------------------------
//Declara puertos de entradas y salidas y variables
E //--------------------------------------------------
int pulsador =7; //Declara Pin del pusaldor
int motor=3; //Declara Pin del motor
P //------------------------------------
//Funcion principal
R //------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
O {
pinMode(pulsador,INPUT); //El pulsador como una entrada
G pinMode(motor,OUTPUT); //El motor como una salida
}
R
A
//------------------------------------
M //Funcion ciclicla
//------------------------------------
A void loop() // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
C
I // Si el pulsador se encuentra oprimido
if(digitalRead(pulsador) == HIGH){
Ó
digitalWrite(motor,HIGH); //Enciende el motor
N
}else{ //si el pulsador no esta oprimido
digitalWrite(motor,LOW); //Apaga el motor
}
}
// Fin programa
108
EJERCICIOS
MI CUADERNO DE APUNTES
109
T13 Control por PWM de un motor
Materiales
1
1
1
Transistor NPN
Arduino UNO 1
Protoboard
Motor DC
1
1 5
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T21AB
ASÍ
HD
VISITA LA OPCIÓN DE
110
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— ¿Cómo se escri- 3— Este símbolo a R
de esta resistencia? ben los siguientes que corresponde E
números en binario? G
U
7=______ N
_____Ω
_____KΩ 5=______ _______________ T
2=______
A
111
/*
C ---------------------------------------------
Control por PWM de un motor
Ó ---------------------------------------------
D Programa que hace uso de un motor y la Consola
serial de Arduino, tiene la posiblidad de
I configurar al motor 5 velocidades distintas,
desde el teclado del PC puedes enviarle la
G velocidad deseada. Las 5 velocidades se configuran
con 5 PWM distintos.
0
Cosas de Mecatrónica y Tienda de Robótica
*/
D //--------------------------------------------------
//Declara puertos de entradas y salidas y variables
E //--------------------------------------------------
int motor=3; //Declara Pin del motor
//------------------------------------
//Funcion principal
//------------------------------------
P void setup() // Se ejecuta cada vez que el Arduino se inicia
{
R Serial.begin(9600); //Inicia la comunicacion serial Arduino-PC
}
O
//------------------------------------
G //Funcion ciclicla
//------------------------------------
R void loop() // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
A
// Si hay algun valor en la Consola Serial
M if (Serial.available()){
A //Variable donde se guarda el caracter enviado desde teclado
char a = Serial.read();
C
// Si el caracter ingresado esta entre 0 y 5
I if (a>='0' && a<='5'){
Ó //Variable para escalar el valor ingresado a rango de PWM
int velocidad = map(a,'0','5',0,255);
N //Escritura de PWM al motor
analogWrite(motor,velocidad);
//Mensaje para el usuario
Serial.print("El motor esta girando a la velocidad ");
Serial.println(a);
}else{ // Si el caracter ingresado NO esta entre 0 y 5
//Mensaje para el usuario
Serial.print("Velocidad invalida");
Serial.println(a);
}
}
}
//Fin programa
112
EJERCICIOS
Pulsador 1 (S1) permite escoger una velocidad dentro de un menú (Velocidad 0 … Velocidad 9), cada vez
que se pulse S1 el texto por Consola Serial que dice la velocidad debe cambiar, debe tener antirebote
para que por cada pulso dado solo cambie una velocidad. Un ejemplo del pulso dado y el valor mostrado
por consola:
Pulsador 2 (S2) al pulsar S2 por primera vez el motor debe comenzar a girar a la velocidad escogida me-
diante S1, si se pulsa por segunda vez S2 el motor debe parar. Por Consola serial se debe mostrar
―Licuadora girando a la velocidad x‖ o ―Licuadora detenida‖ según corresponda.
S1 S2
113
T14 Generar tonos con un buzzer
Materiales
1 1 1
1 1
ESCANEA CON TU
SMARTPHONE
BUSCA
VIDEOTUTORIAL
T22AB
ASÍ
HD
VISITA LA OPCIÓN DE
114
P
L
A
N
O
E
S
Q
U
E
M
A
P
1— ¿Cuál es el valor 2— El switch...case 3— Este símbolo a R
de esta resistencia? es un tipo de qué corresponde E
G
U
_____Ω N
_______________ _______________
_____MΩ
T
A
115
/*
C ---------------------------------------------
Generar tonos con un buzzer
Ó ---------------------------------------------
D Programa que hace uso de un buzzer (chicharra) y un
potenciómetro, la idea es generar diversos tonos
I en el buzzer a partir del estado análogo del
potenciómetro. Además se hace uso de la función
G tone que es muy útil para generar diversas melodías
0 Cosas de Mecatrónica y Tienda de Robótica
*/
//--------------------------------------------------
D //Declara puertos de entradas y salidas y variables
//--------------------------------------------------
E int buzzer = 9; //Declara Pin del buzzer
int tono = 0; //Declara Pin del potenciómetro
//------------------------------------
//Funcion principal
P //------------------------------------
void setup() // Se ejecuta cada vez que el Arduino se inicia
R {
// No se configuran parámetros inciales, pero se debe
O // colocar el encabezado de la función setup()
}
G
R //------------------------------------
//Funcion ciclicla
A //------------------------------------
void loop() // Esta funcion se mantiene ejecutando
M { // cuando este energizado el Arduino
A //Variable entera donde se almacena el valor del potenciómetro
int sensor = analogRead(tono);
C
//Variable donde se escala la frecuencia de 100 a 5000Hz
I int frecuencia = map(sensor,0,1023,100,5000);
Ó //Variable entera para guardar el tiempo deseado en ms
int duracion = 250;
N
//Funcion tone(), que recibe:
// 1ra posición: Pin del elemento sonoro
// 2da posición: Frecuencia deseada en Hz
// 3ra posición: Duración del tono
tone(buzzer, frecuencia, duracion);
//Retardo
delay(100);
}
//Fin programa
T 1– Si tienes dificultades para aprender los colores de las resistencias una ayudita
I online no te caería nada mal ;) en Wolfram Alpha puedes hacer esto:
P
S
116
EJERCICIOS
Buzzer
S1 S2
MI CUADERNO DE APUNTES
117