Está en la página 1de 66

Tarjeta Entrenadora

"MazBasica"
100% OpenHardware
T1 Hola mundo—LED intermitente

¿Qué aprendo? Conocimientos previos

 Activar una salida digital  Señal digital


Encender un LED en ON/OFF  Función digitalWrite()
Temporizar una señal de salida  Polaridad de un LED
Sintaxis de un programa en  Conexión de la placa Ardui-
Arduino no al computador

Materiales

1 1

Arduino UNO LED Verde

Cable USB Tipo AB

23
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

24
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)
}

// Fin del programa

T 1- El // en programación se utiliza para hacer comentarios, es muy útil para que


I puedas explicar algo acerca de la sintaxis de una línea de código. Un ejemplo de su
P uso:
S
digitalWrite(13,LOW); // Apaga el LED

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:

Sensor PIR Sensor óptico SHARP


Detecta movimiento Detecta la presencia de algún
objeto en un rango de 5cm

25
C /*
Ó -----------------------------------
D Hola Mundo
I -----------------------------------
G Enciende un LED por un segundo y lo apaga por el mismo tiempo
0 */

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

26
T2 Encender un LED con un pulsador

¿Qué aprendo? Conocimientos previos

 Cablear un circuito  Señal digital


Condicional If/else  Función digitalWrite() y
digitalRead()
Estado de un pulsador
 Divisor de voltaje
Leer una entrada digital y
escribir una salida digital  Condicional y operadores de
comparación

Materiales

1
1
1
LED Amarillo

Arduino UNO 1
Protoboard

Pulsador
1

1 4

Cable USB Tipo AB


Resistencia 1K Conectores MM

27
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

28
C
/*
Ó -----------------------------------
D Encender LED con un pulsador
-----------------------------------
I
Oprimir un pulsador y mientras este se mantenga accionado
G un LED se enciende
0
*/

D //------------------------------------
E //Declara puertos de entradas y salidas
//------------------------------------
int pulsador=2; //Pin donde se encuentra el pulsador, entrada
int led=13; //Pin donde se encuentra el LED, salida

P //------------------------------------
R //Funcion principal
//------------------------------------
O void setup() // Se ejecuta cada vez que el Arduino se inicia
{
G pinMode(pulsador, INPUT); //Configurar el pulsador como una entrada
pinMode(led,OUTPUT); //Configurar el LED como una salida
R }
A
M //------------------------------------
//Funcion ciclicla
A //------------------------------------
void loop() // Esta funcion se mantiene ejecutando
C { // cuando este energizado el Arduino
I //Condicional para saber estado del pulsador
Ó if (digitalRead(pulsador)==HIGH)
{
N //Pulsador oprimido
digitalWrite(led,HIGH); //Enciende el LED
}
else
{
//Pulsador NO oprimido
digitalWrite(led,LOW); //Apaga el LED
}
}
//Fin programa

T 1– Cuando estés programando en el Software de Arduino, muchas cosas de las que


I escribes son palabras reservadas por el lenguaje, todas las palabras reservadas las
P puedes encontrar en la sección 5S, al escribirlas éstas se colocan en un color dife-
rente, este es un truco para saber que esta bien, por ejemplo:
S

2– Todas la instrucciones de programación para Arduino, se encuentran


totalmente documentadas con claros ejemplos de cómo se utilizan, te
invitamos a que visites: arduino.cc/en/Reference/HomePage

29
C
/*
Ó -----------------------------------
D Encender LED con un pulsador
-----------------------------------
I
Oprimir un pulsador y mientras este se mantenga accionado
G un LED se enciende
0
*/

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

30
T3 Lectura serial de una entrada digital

¿Qué aprendo? Conocimientos previos

 Manejar una entrada digital  Señal digital


Ver datos por la pantalla del  Función digitalRead() y Se-
computador rial.println()

Consola serial  Opción de Consola serial,


ver 6F (paso 3)
Leer una entrada digital y
escribir por consola serial

Materiales

1
1

Arduino UNO
Pulsador Protoboard

1
1

4
Resistencia 1K
Cable USB Tipo AB
Conectores MM

31
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

32
/*
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
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==0)
{
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

T 1– La codificación binaria es muy importante para transmitir datos entre 0 000


I dispositivos, son las largas cadenas de 0 y 1, por ejemplo
1 001
P 00011101010101 esto podría ser un mensaje que contiene información
referente a una clave personal para acceder a un edificio. Los números 2 010
S
en base 10 se pueden representar como valores binarios: 3 011

4 100
2– Para recordar
5 101

6 110

7 111
- Para leer una señal digital usa: digitalRead(numeroPin);

- Para escribir una señal digital usa: digitalWrite(numeroPin, valor);

- Una salida o entrada digital siempre es HIGH o LOW

33
/*
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 */
0

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

34
T4 Lectura serial de una entrada análoga

¿Qué aprendo? Conocimientos previos

 Manejar una entrada análoga  Señal análoga


Ver datos por la pantalla del  Función analogRead() y
computador Serial.println()

Múltiples estados de un poten-  Opción de Consola serial,


ciómetro ver 6F (paso 3)

Leer una entrada análoga

Materiales

1
1

1
Arduino UNO
Protoboard

1
Potenciómetro 10K
3

Cable USB Tipo AB


Conectores MM

35
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

36
C /*
--------------------------------------
Ó Lectura serial de entrada análoga
D --------------------------------------

I Leer una entrada análoga y mostrar por la pantalla del


G computador (consola serial) el valor luego de girar
el potenciómetro
0

*/
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

T 1– Te invitamos a que conozcas algunos tipos de potenciómetros


I
P
S SoftPot Trimmer Encoder RGB
Sistema touch Alta precisión Giro continuo

2– Para recordar

- Para leer una señal análoga usa: analogRead(numeroPin);


- Para escribir una señal análoga de PWM usa: analogWrite(numeroPin, valor);
- Una entrada análoga va de 0 o 1023
- Una salida análoga de PWM va de 0 o 255

37
C /*
--------------------------------------
Ó Lectura serial de entrada análoga
D --------------------------------------

I Leer una entrada análoga y mostrar por la pantalla del


G computador (consola serial) el valor luego de girar
el potenciómetro
0

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

38
T5 Escritura serial

¿Qué aprendo? Conocimientos previos

 Entrada por consola (teclado)  Señal digital


Variables booleanas  Función digitalWrite() y
Serial.read()
Estado de un LED
 Configuración de una comu-
Escritura serial digital nicación serial

 Polaridad de un LED

Materiales

1 1

Arduino UNO LED de cualquier color.

Cable USB Tipo AB

39
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

40
/*
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
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 el numero '1' y además el LED está apagado
if ( (leer=='1') && (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

41
/*
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
*/
0

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

42
T6 Encender un LED por PWM

¿Qué aprendo? Conocimientos previos

 Encender un LED de manera  PWM


proporcional
 Función analogWrite()
Apropiar el concepto de PWM
 Polaridad de un LED
Escribir una salida análoga
 Incrementar y manipular
If/else con operadores lógicos variables

Materiales

1
1
1

LED Amarillo
Arduino UNO
Protoboard

1
1

Cable USB Tipo AB Resistencia 220Ω


Conectores MM

43
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
!=_______

44
/*
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 */
0 //--------------------------------------------------
//Declara puertos de entradas y salidas y variables
//--------------------------------------------------

int led = 9; //Pin donde se encuentra el LED, salida


D
E //------------------------------------
//Funcion principal
//------------------------------------
void setup () // Se ejecuta cada vez que el Arduino se inicia
{
P }
R
//------------------------------------
O //Funcion ciclicla
//------------------------------------
G void loop () // Esta funcion se mantiene ejecutando
{ // cuando este energizado el Arduino
R
// Brillo va de minimo al maximo en incrementos de 5
A
for (int brillo = 0 ; brillo <= 255; brillo += 5) {
M // asigna el valor (rango es de 0 a 255):
A analogWrite(led, brillo);
C // espera 30 millisegundos para ver el efecto
delay(30);
I }
Ó // Brillo va del maximo al minimo en incrementos de 5
N for (int brillo = 255 ; brillo >= 0; brillo -= 5) {
// asigna el valor (rango es de 0 a 255):
analogWrite(led, brillo);
// espera 30 millisegundos para ver el efecto
}
delay(30);
}

//Fin programa

T 1– Estos elementos reciben señales de PWM y sirven para:


I
P
S
Bomba de agua Micromotor
Variar la velocidad de Variar la velocidad de
bombeo giro

PWM

LED Servomotor
Variar la intensidad de Variar la posición en
luz grados

45
/*
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
0

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

46
T7 Control ON/OFF con potenciómetro

¿Qué aprendo? Conocimientos previos

 Salida digital  If/else


Control ON/OFF  Función digitalWrite() y
analogRead()
Comparación
 Valor de una entrada análo-
Condicional a partir de un ga
valor entero de una entrada
análogo  Condicional y operadores de
comparación

Materiales

1
LED 1

1
Arduino UNO
Protoboard

1
Potenciómetro 10K

1
3

Cable USB Tipo AB

Resistencia 220Ω Conectores MM

47
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

48
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

*/
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.

49
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 */

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

50
T8 Control de un LED con una fotocelda

¿Qué aprendo? Conocimientos previos

 Escritura por PWM en un LED  Señal análoga


Leer una entrada análoga por  Función analogWrite() y
medio de una fotocelda analogRead()

Trabajar con una variable  PWM


Ajustar una entrada análoga a  Imprimir datos por consola
una salida análoga serial

Materiales

1 1

1
LED
Arduino UNO

1 1 Protoboard

Fotocelda
Cable USB Tipo AB

1 5
1

Resistencia 1K Conectores MM

51
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
_______________

52
/*
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
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

Medidor de luz Alumbrado público


Mide una cantidad de Enciende la luz cuando
luz y lo da en lux (lx) llega la oscuridad

53
/*
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
0

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

54
T9 Contador de pulsos

¿Qué aprendo? Conocimientos previos

 Incrementar una variables  Señal digital


Condicional If/else anidado  Función digitalWrite() y
digitalRead()
Anti-rebote de un pulsador
 Imprimir datos por consola
Leer una entrada digital y
escribir una salida digital a  Declarar variables enteras
determinada condición

Materiales

1
1
1
LED

Arduino UNO 1
Protoboard

Pulsador
1

1 4

Cable USB Tipo AB


Resistencia 1K Conectores MM

55
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

56
/*
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

56
/*
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
*/
0

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

58
T10 LED RGB apoyado de tabla de colores

¿Qué aprendo? Conocimientos previos

 Manejar el código de colores  Señal digital


RGB
 Función analogWrite()
Uso de una función
 LED de anodo común
PWM a tres salidas
 Estructura de un programa
Manipular una variable en Arduino

Materiales

1 1 1

Arduino UNO
LED RGB Protoboard

1 3 5

Cable USB Tipo AB


Resistencia 220 Conectores MM

59
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

60
/*
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 */
0 int ledRojo = 9 ;
int ledVerde = 5 ;
int ledAzul = 6 ;
void Rojo();
void Blanco();
D void Magenta();
void Azul();
E void
void
Verde();
Naranja();
void setup()
{
pinMode( ledRojo , OUTPUT);
pinMode( ledVerde , OUTPUT);
P }
pinMode( ledAzul , OUTPUT);

R void loop()
{
O Rojo();
delay( 1000 );
G Verde();
delay( 1000 );
Azul();
R delay( 1000 );
Blanco();
A delay( 1000 );
Magenta();
M delay( 1000
Naranja();
);
delay( 1000 );
A }
C void Verde()
{
I analogWrite(ledRojo , 255);
analogWrite(ledVerde , 0);
analogWrite(ledAzul , 255);
Ó }
N void Magenta()
{
analogWrite(ledRojo , 0);
analogWrite(ledVerde , 255);
analogWrite(ledAzul , 0);
}
void Blanco()
{
analogWrite(ledRojo , 0);
analogWrite(ledVerde , 0);
analogWrite(ledAzul , 0);
}
void Rojo()
{
analogWrite(ledRojo , 0);
analogWrite(ledVerde , 255);
analogWrite(ledAzul , 255);
}
void Azul()
{
analogWrite(ledRojo , 255);
analogWrite(ledVerde , 255);
analogWrite(ledAzul , 0);
}
void Naranja()
{
analogWrite(ledRojo , 0);
analogWrite(ledVerde , 127);
analogWrite(ledAzul , 255);
}

T 1– Estos dos dispositivos pueden generar hasta un billón de colores distintos


I
P MegaBrite ShiftBrite
S

61
/*
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 */
0

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

62
T11 Control ON/OFF de un motor

¿Qué aprendo? Conocimientos previos

 Control ON/OFF  Señal digital


Condicional If/else  Función digitalWrite() y
digitalRead()
Conectar un motor DC por
transistor  Divisor de voltaje
Condicionales a partir del  Reconocer un transistor y un
estado del pulsador motor

Materiales

1
1

1
Transistor NPN
Arduino UNO
1
1 Protoboard

Pulsador
Cable USB Tipo AB

1 2 8

Resistencia 1K Conectores MM

63
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

64
/*
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

T 1– Un Puente H es un circuito electrónico que permite a un motor


I DC girar en ambos sentidos, avance y retroceso. Son ampliamente usados
P en robótica y como convertidores de potencia.
S
Los puentes H están disponibles como circuitos
integrados, pero también pueden construirse a
partir de componentes discretos. El término
"puente H" proviene de la típica representación
gráfica del circuito. Un puente H se construye con
4 interruptores (mecánicos o mediante transisto-
res). Cuando los interruptores S1 y S4 están cerra-
dos y S2 y S3 abiertos se aplica voltaje positivo en el motor, haciéndolo girar en un
sentido. Abriendo los interruptores S1 y S4 y cerrando S2 y S3, el voltaje se invierte,
permitiendo el giro en sentido inverso del motor. Con la nomenclatura que
estamos usando, los interruptores S1 y S2 nunca podrán estar cerrados al
mismo tiempo, porque esto cortocircuitaría la fuente de tensión. Lo mismo
sucede con S3 y S4.

65
/*
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
E

P
R
O
G
R
A
M
A
C
I
Ó
N

66
T12 Control por PWM de un motor

¿Qué aprendo? Conocimientos previos

 Leer datos de la Consola Serial  Señal análoga


Manejo de la función map()  Función analogWrite() y
Serial.print()
Variar el PWM para producir 5
velocidades distintas  PWM
Etapa de potencia para un  Condicional y operadores de
motor a través de transistor comparación

Materiales

1
1
1
Transistor NPN

Arduino UNO 1
Protoboard

Motor DC
1

1 5

Cable USB Tipo AB


Resistencia 1K Conectores MM

67
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

68
/*
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

*/
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

T 1– Arduino también se puede programar en lenguajes gráficos, por ejemplo:


I
P
Modkit
S

Scratch for Arduino

69
C
Ó
D
I
G
0

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

70
T13 Generar tonos con un buzzer

¿Qué aprendo? Conocimientos previos

 Manejo de variables de tipo  Señal digital y análoga


entera
 Función map() y analogRead()
Usar funciones especiales de
Arduino  Enviar parámetros a las fun-
ciones
Generar diversos tonos
 Retardos a través de delay()
Producir salidas de frecuencia

Materiales

1 1 1

Arduino UNO Buzzer


Protoboard

1 1

Cable USB Tipo AB Potenciómetro 10K


Conectores MM

71
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

72
/*
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

//--------------------------------------------------
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


I ayudita online no te caería nada mal ;) en reflexiona.biz puedes hacer esto:
P 2— Descargar
S

73
/*
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

D
E

P
R
O
G
R
A
M
A
C
I
Ó
N

74
T14 Puente H

ARDUINO L293D(Puente H)
5 10
6 15
9 7
10 2
5V 1, 9, 16
GND 4, 5, 12, 13

El motor 1 (Derecho) se conecta a los pines 3


y 6 del Puente H El motor 2 (Izquierdo)se
conecta a los pines 11 y 14 del Puente H
La fuente de alimentacion de los Motores se
conecta a tierra y el positivo al pin 8 del
puente H.

75
T14 Puente H

Reto 1: Agrega la programacion necesaria, para que el programa


haga el siguiente ciclo siguiente:
1.- Avance por 1000Mils y Pare.
2.- Gire el Motor derecho por 1000Mils hacia adelante, Pare y luego
de reversa y Pare.
2.- Gire el Motor izquierdo por 1000Mils hacia adelante, Pare y
luego de reversa y Pare.
4.- De reversa por 1000Mils y Pare.
Reto 2: Modifique el programa para que acepte comandos por la
terminal y haga lo sigueinte:
a=Avanzar, b=Izquierda, c= Parar, d=Derecha, e=Reversa

76
T15 Control Servo Motor

Nota:
Cafe = GND
Rojo= 5V
Anaranjado = pin# PWM

77
T15 Control Servo Motor

Reto:
Modifica el programa para que:

1.- El servo motor gire de 0 a 180 grados en periodos de 45


grados de ida y vuelta.

2.- Usando el bloque


repeat between el servo gire
de 0 a 180 grados de ida y
vuelta, un grado a la vez.

78
T16 Sensor Ultasonico

Nota:
VCC = 5v
Trig = pin 3
Echo = pin 4
GND = GND

79
T16 Sensor Ultasonico

Reto:
Modifica el programa para que:
1.- Encienda un led:

Verde a los 15cm.


Amarillo a los 10cm.
Rojo a los 5cm y ademas suene el
buzzer.

80
T17 Control Sensor Bluetooth

Nota:

Sensor Arduino
Bluetooh TX RX
RX TX
VCC 5v
GND GND

Recuerde desconectar el sensor Bluetooth de los Pines


RX-TX, cada vez que desee subir un nuevo programa a la
tarjeta Arduino.

81
T17 Control Sensor Bluetooth

Reto:
Modifique el programa para que:
1.- Usando el puente H Encienda 2 motores a un velocidad de 145 de
255.

Recuerde desconectar el sensor Bluetooth de los Pines RX-TX, cada


vez que desee subir un nuevo programa a la tarjeta Arduino.

82
PI Proyecto Integrador

Proyecto integrador.

Arme el circuito del Carro Robot detector de obstaculos con


Control Remoto por Bluetooth, usando las imagenes de
ejemplo:

83
PI Proyecto Integrador

Proyecto integrador.

84
PI Proyecto Integrador

Proyecto integrador.

Una vez armado el circuito del carro robot, se debera crear el


programa
que lo haga funcionar, para lo cual se debera considerar lo
siguiente:

a) Declarar las variables necesarias para:

velocidad, estado, Motor izqA (avanzar), Motor izqB (Reversa)


Motor derA (avanzar), Motor derB (Reversa).

# estados, a(Avanzar), b(Izquierda), c(Parar), d(Derecha),


e(Reversa).
f(Encendido "Sensar espacio"), g(Apagado).

b) el estado "f", debera iniciar el sensor ultrasonico y verificar:

1.- Si la distancia es <= 15 & >=2


Enciende un Led Rojo
para los motores por 200 Milis
Da reversa por 500 Milis
Gira durante 1100 Milis
Apaga el Led
Si no hay Obstaculos
Enciende un Led Verde
Se dezplazara hacia adelante
Reto:
Modifica el programa para que:

85
5 Introducción a Ardublock

¿Qué es Ardublock?

Es una herramienta de programación visual por bloques para Arduino, funciona


como un rompecabezas de bloques funcionales de distintos colores y genera de
forma fácil y sencilla el código en el entorno de programación de Arduino (Arduino
IDE).

Ardublock es una herramienta que acerca el mundo de la programación de Arduino


a estudiantes y aficionados de una forma fácil y sencilla.

86
A Hola, queremos conocer tus
P
O opiniones referente a este ma-
R terial, son de gran ayuda con el
T ánimo de seguir mejorando los
E
S contenidos y haciendo éstos
más claros.

Estamos atentos a recibir todo


tipo de comentarios que nos
sirvan de retroalimentación y nos fortalezcan más.

Escríbenos a:

gustavo.reynaga@gmail.com

Muchas gracias por tus aportes :D

Esta manual fue adaptado de la obra "Guía Básica de Arduino",

elaborado por:

La Tienda de Robótica y el Equipo de Cosas de Mecatrónica.

http://www.tiendaderobotica.com/

http://www.cosasdemecatronica.com/

87

También podría gustarte