Subido por Saul Marcos Lovera Gutierrez

ARDUINO PROGRACION

Anuncio
~~
~
ARDUINO COMO
PARTE DE LA
. ··POTENCIALIDAD
TECNOLÓGICA E
~.;--NUESTRO PAÍS
1.
La electrónica como analogía
en el suministro de agua
2.
Processing en el entorno de la
programación creativa
3.
Arduino como solución a las
necesidades de nuestro entorno
Desarrollamos nuestra potencialidad productiva en el
diario vivir,
mediante el estudio de la programación en Arduino
dentro de nuestro contexto,
practicando diferentes actividades aplicadas a
nuestra sociedad,
~
J
J
220 [Q] + 5%
-
~
--..
\
1 er Dígito
2do Dígito
Naranja
Amarillo
Verde
3
3
Violeta
Gris
Blanco
7
8
9
7
-----=:
_
-----------
.
J
-- -~-----
Multiplicador
Tolerancia
103
---
8
9
xl08
0,1%
_0,05%
xl 09
Plateado
xO,O 1
:!: 1
0%
Calculemos el valor de las siguientes resistencias:
X
[Q] +
[Q] +
[
+_]
X
[Q]
X
[Q] +
LA ELECTRÓNICA COMO ANALOGÍA EN EL
SUMINISTRO DE ACUA
El consumo de agua es vital en nuestra vida diaria, pero
la forma de utilizarla puede ayudarnos a comprender
cuál es el principio de funcionamiento de la electrónica.
Imaginemos que nos dirigimos a uno de los grifos o
llaves de paso de nuestra casa para recibir agua en un
recipiente; si abrimos suavemente el grifo notaremos que
la presión del agua aumenta conforme vamos abriendo.
Entonces, podremos notar que la presión del grifo viene
acompañada de una fuerza con la que el agua sale
expulsada. A esa acción la llamaremos "Voltaje", luego
a la acción del flujo de agua una vez abierto el grifo lo
denominaremos "Corriente". Por último, a la acción de
dejar o no fluir el agua por parte del grifo lo llamaremos
"Resistencia" (o también la oposición al paso del agua).
La electrónica funciona de la misma manera, donde un
circuito puede ser similar a una red de suministro de
agua que da servicio a nuestros hogares.
J
1
?¡.
'
{
!
ELECTRÓNICA
Es una de las ramas de la física que estudia el comportamiento, los cambios y el flujo de los
electrones.
Circuito eléctrico
Es el conjunto de componentes eléctricos conectados entre sí, los cuales permiten generar,
transportar y utilizar la energía eléctrica con la finalidad de transformarla en otro tipo de
energía como energía calorífica (estufa), energía lumínica (bombilla), energía mecánica
(motor), etc.
Voltaje
También denominada tensión, fuerza electromotriz (FEM) o diferencial de potencial. Es
la fuerza que impulsa a los electrones a moverse a través de un conductor, su unidad de
medida es el Voltio (V).
Voltaje
;~º:007:00
~v _ :::
~-o
Electrones
-º)
:=ü:=o :=o
-o _ ::-o ::O :::0
- :::so :::so ::O :::
_ :::
:=o
Conductor
Intensidad de corriente
Es el movimiento de electrones en un conductor a través de un circuito eléctrico, que por
convención van del polo positivo al polo negativo de la fuente de tensión, su unidad de
medida es el Amperio (A).
Resistencia
Es la oposición al flujo o movimiento
unidad de medida es el Ohmio (Q).
de electrones a lo largo de un circuito eléctrico, su
LEY DE OHM
Establece que la intensidad de la corriente eléctrica que circula por un conductor eléctrico es
directamente proporcional a la diferencia de potencial aplicada e inversamente proporcional
a la resistencia del mismo, es decir:
Intensidad de corriente(!)=
Voltaje (V)
Resistencia (R)
Directamente proporcional
Inversamente proporcional
Quiere decir que, si nuestro voltaje aumenta,
de la misma forma lo hará nuestra corriente.
Esto se traduce a que habrá mayor cantidad
y movimiento de electrones.
Quiere decir que, si nuestra resistencia
aumenta, la corriente disminuye. Esto se
traduce a que habrá menor cantidad y
movimiento de electrones.
j J- V j
- -R
o=o-so::o =o_=o=o-::o -=o::o-=ososo::oso::o::o-=o=o=o)
-::o
LI=
V
Rj
o::o=o ::o =o=o-
so
so so
=o )
so ::o
>
DIODO LEO (Emisor de luz)
Un diodo led o diodo emisor de luz es un dispositivo semiconductor (cuyos terminales
tienen por nombre ánodo y cátodo) que emite luz cuando por el mismo circula una corriente
eléctrica.
SIMBOLOGÍA
Una de las formas para analizar el comportamiento de un circuito es a través de un diagrama
circuital, en el cual cada elemento que conforma el mismo es representado por su respectiva
simbología, por ejemplo, una resistencia y una fuente de alimentación tienen la siguiente
forma:
Resistencia
Diodo led (Emisor de luz)
Fuente de alimentación
+
1
+
T- T-
Ánodo
(pata larga)
Cátodo
(pata corta)
l. Resolvemoslos siguientes ejercicios aplicando la ley de Ohm:
1. Si: Vfte = 1.5Vy R = 100.Q. ¿Cuánto es la intensidad de corriente que circula por el circuito?
Solución:
Vfte =1.5V
R
=
R
100.Q
DIAGRAMA CIRCUITAL
= 100.Q
DIAGRAMA FÍSICO
Siendo "Vfie" el voltaje de la fuente de tensión y "R" la resistencia, reemplazamos los datos en
nuestra formula:
J = Vfie ::::} J = I.5V
R
100.Q
::::} I = 15mA
Rpta. La intensidad de corriente que circula por el circuito es 15mA.
Este resultado nos indica que si tenemos un voltaje de 1.5 voltios en nuestra fuente de
alimentación a la cual se le conecta una resistencia de 100 ohmios, en el circuito circulará
una corriente de 15 miliamperios.
Notemos que las flechas circulares de color naranja nos indican el sentido de la corriente en
nuestro circuito, los electrones se mueven del polo positivo al polo negativo de nuestra fuente.
2. ¿Qué valor de resistencia necesitamos para que nuestro diodo led emita luz, sabiendo que
para encender el mismo necesita una intensidad de corriente entre 5mA a 25mA? Nuestra
fuente de alimentación es de 5V.
Solución:
R
R
V¡¡e = 5V
D
,,,
/.
D
DIAGRAMA CIRCUITAL
DIAGRAMA FÍSICO
Para este ejercicio no usaremos más que la fórmula conocida que establece la ley de Ohm,
ya que el diodo led sólo esperará que haya la corriente suficiente para poder emitir luz,
entonces tenemos:
1 = V¡¡e
R
Despejando "R" nos da:
R=~
1
Ahora, para resolver este problema podemos utilizar cualquier valor de corriente que se
encuentre entre 5mA y 25mA. Para nuestro caso haremos uso de un valor intermedio de
16mA, entonces:
5V
R=16mA
=> R = 312.5Q
Rpta. Para que nuestro diodo emita luz necesitamos una resistencia de 312.5Q.
l. Resolvamos
los siguientesproblemashaciendo uso de la ley de Ohm:
l. Hallemos el valor de la intensidad de
corriente.
2. ¿Cuál es el valor de la fuente si en elcircuito
hay un flujo de corriente de lOmA?
+
Vfie = 5V
R=
R = 180Q
+
12on
3. ¿Cuál es el valor de la resistencia en el
circuito si V¡;e = 9V e 1=23mA?
4. ¿Podrá emitir luz el diodo led si necesita
una corriente de 30mA?
R =220Q
R
+
V¡;e = 9V
5. ¿Qué valor de resistencia necesitamos
para que nuestro diodo led emita luz,
sabiendo que para encender el mismo
necesita una corriente entre llrnA a
2lmA? Nuestra fuente de alimentación
es de 3.3V.
R
D
+
+
V¡;e = 3.3V
D
6. ¿Qué valor de resistencia necesitamos
para que nuestro diodo led emita luz,
sabiendo que para encender el mismo
necesita una corriente entre 15mA a
25rnA? Nuestra fuente de alimentación
es de 5V.
R
V¡;e = 3.3V
Vfle = 5V
¡+
-:
D
11. Respondamos las siguientes preguntas:
1. Si la resistencia de nuestra ducha es de 8Q y el voltaje de alimentación es de 220V, ¿cuánto
es la intensidad de corriente que fluye por la misma?
2. Si por una licuadora fluye una intensidad de corriente de 3.2A a llOV, ¿cuál es el valor de
la resistencia?
3. La resistencia de una plancha es de aproximadamente
llOQ, el cual comienza a disipar
cuando por el circuito fluye una intensidad de corriente de lOA. ¿Cuánto es el voltaje de
alimentación?
111. Investiguemos y respondamos las siguientes preguntas:
1. ¿Qué es un cortocircuito y un circuito abierto?
2. ¿Qué es la corriente continua y la corriente alterna?
3. ¿En qué tipo de circuitos se aplica la corriente continua?
4. ¿Qué es una placa de prueba o protoboard, y cómo funciona?
PROCESSINC EN EL ENTORNO DE LA
PROGRAMACIÓN CREATIVA
A lo largo de los años la programación se fue
desarrollando de forma tan versátil al punto de llegar
a ser independiente, es decir, para programar no
necesariamente uno debe estar ligado a las ciencias
de la computación. Processing, como lenguaje de
programación está abierto a todos los ámbitos y da
la posibilidad de que cualquier persona que tenga la
iniciativa de crear o diseñar pueda hacerlo sin tener la
menor complejidad.
PROCESSING
Es un lenguaje de programación basado en Java y de código abierto, el cual sigue las mismas
estructuras de los demás lenguajes de programación; su entorno de desarrollo nos permite
escribir, editar, compilar y ejecutar nuestros programas.
¿Cómo conseguir el software de Processing?
En la página web www.processing.org podemos acceder al enlace de descarga de la siguiente
manera:
ª """""""'9
~
C
F
AplKaciann •
1 fs S09WO
m'J>S
WWW.p<OCOS5<ng.O<g
PorWo.i.o.e..tJy.h.•
oftt'O'l'l~~aducwUNp:
¡'T••• ....'Mfl)
l . Accedemos a
la página oficial.
'
Processing
~
Donate
usas 1rnrmbH cl:he
Pnnss.in¡.Foundmon. Wt 1*d JCW.
ht,'pP
~ja!:'l
2. Damos Clic
en la opción
"Download". _)
~ Exhibition
"'*""''·~··
-rqiabs!ho_ftcvm.,,~
rJ-.rrna nim
°" • \llrnro,,..
mm.'iom ...
e
3. Seleccionamos la
opción que esté acorde
a las características de
nuestro ordenador y lo
descargamos.
-
.,,
o
Introducción a Processing
Para comenzar a programar e interactuar con el software de Processing debemos tomar
en cuenta los siguientes tipos de declaraciones: funciones, operaciones de asignación y
estructuras de control.
Función
Es una estructura que en un momento dado del programa es solicitada para ser ejecutada,
por ejemplo:
FUNCIÓN
EXPLICACIÓN DE LA FUNCIÓN
void setup(){ .. .}
Establece las condiciones de partida para el programa.
void drawO{ .. .}
Ejecuta todas las acciones y procedimientos en nuestro
programa.
size(ancho, alto);
Especifica las dimensiones de nuestra ventana en
pixeles (Un pixel es la unidad más pequeña y diminuta
de una imagen digital).
fullScreen();
Pone la ventana de reproducción al tamaño de nuestra
pantalla.
-
-
-
-
background(Red,
Green, Blue);
Define.el color de fondo en la ventana.
-
-
fill(Red, Green, Blue);
Define el color de relleno a las formas.
noFill();
Quita el color de relleno a las formas.
l
-
'
stroke(Red, Green, Blue);
Define el color de relleno en los bordes de las formas.
-
point(x, y);
Dibuja un punto; "x" y"y" son sus coordenadas.
los 4 parámetros
line(x1, y1, x2, y2);
Dibuja una línea;
localizaciones.
strokeWeight();
Define el grosor a una línea.
triangle(x1,y1,
x2, y2, x3' y);
Dibuja un triángulo;
localizaciones.
~
2~
indican
-
los 6 parámetros
indican
3
-
rect(x,y, ancho, alto);
ellipse(x,y, ancho, alto);
Dibuja un rectángulo; "x" y"y" son sus coordenadas.
Dibuja un elipse; "x" y"y" son sus coordenadas.
-
quad(x"y1, x2,y2, x3,y3, x4,y);
Dibuja un polígono de 4 lados; los 8 parámetros indican
4 localizaciones.
l. Realizamos los siguientes programas en Processing haciendo uso de las funciones:
1. Diseñamos una ventana con un fondo de color.
Solución:
Paso 1
Abrimos nuestro bloque de código con la función "void setup(){ ... }" para definir las
condiciones iniciales de nuestro programa.
Paso2
Dentro de las llaves (mismas que identifican al bloque de código) escribimos las siguientes
funciones: size (600,600); ~Definirá el tamaño de nuestra pantalla a 600 x 600 pixeles.
background(255,0,0); ~Como Green y Blue están fuera de función por tener valor O, al ser
el primer parámetro 255, el color que se pondrá en nuestra pantalla será el rojo.
Paso 3
Damos clic al botón Play
G sketch, 171114b
1
[!J
para ejecutar nuestro programa.
D
Proces:sing 3.3.6
Archivo ,Editar ~ketch Qepuración !:::!erramientas
vc+d setup() {
size(6G0,60G)¡
background(25S,0,G)¡
}
X
A~1.1da
//Escribimos nues~ra lra función como un bloque de código
//Damos un ~amaño de 600 x 600 pixeles a nues~ra ven~ana
//Damos un fondo de color rojo a nuestra ven~ana
//Cerramos nues~ro bloque de código
Si pusiéramos una lupa en la ventana
que creamos podemos notar que el
pixel, como unidad más pequeña de
la imagen, ocupa un diminuto cuadro
del color asignado en el código de
nuestro programa.
Nota. Debemos tomar en cuenta los siguientes puntos:
En nuestra ventana de códigos, cuando hacemos uso de la doble barra inclinada
(//)después de describir nuestra función con sus parámetros, sólo se especifica la
explicación o se da énfasis al proceso que se está realizando como comentario, por lo
tanto, este procedimiento no tiene ningún efecto en nuestra programación.
Cuando especificamos las coordenadas para nuestra ventana pasa lo siguiente:
(O, O)
Coordenadas en "x"
...- ~
..J..1111
Coordenadas en
"y"
(300,300)
~
(600,600)
Notemos que nuestro origen de coordenadas (x, y) se sitúa en los puntos (O, O) de la parte
superior izquierda de nuestra ventana, y de ahí para abajo, siguiendo una ruta diagonal
llegamos al otro extremo de la parte inferior derecha, para posicionarnos en el valor que
asignamos en nuestra línea de códigos como (600,600). Es así como se crea nuestra ventana
donde se ejecutará nuestro programa.
2. Diseñamos una forma rectangular con relleno de color y grosor de línea a 5 pixeles.
Solución:
Paso 1
Abrimos nuestro bloque de código con la función void setup(){ ... }, y dentro de la misma
definimos tamaño de ventana y color de fondo, los mismos serán nuestras condiciones iniciales.
size (400,400); e!> Definimos el tamaño de nuestra ventana a 400 x 400 pixeles.
background (127,200,59); e!> Damos un fondo de color verde a nuestra ventana.
Paso2
Abrimos nuestro segundo bloque de código con la función void draw(){ ... } y dentro de la
misma escribiremos los procedimientos y acciones que hará nuestro programa, como:
fill(l00,59,180);
~Definimos
primeramente el color de relleno para nuestra forma.
strokeWeight(5); ~Posteriormente
definimos un grosor de línea de 5 pixeles.
rect(l00,100,50,100); ~Finalmente, lo más importante, definimos nuestro rectángulo dándole
en los primeros dos parámetros las coordenadas (x, y) y en los últimos dos parámetros el
ancho y alto.
Paso 3
Damos clic al botón Play ~
para ejecutar nuestro programa.
G sketch_171115a 1Processing3.3.ó
Archivo &ditar ~ketch Qepuración
void
J:!erramientas
D
X
A~da
seb.lp() {
size (400 ,400);
background(l27,200,59);
}
void draw() {
fi1l(lG0,59,180);
strokeWeigh~(S)¡
rect(l00,l0G,SG,100)¡
~
X
coordenadas (100, 100)
Grosor de línea de 5 pixeles
Tomando como coordenadas de inicio (100, 100),
el ancho del rectángulo será (100 + 50, 100) y el
alto será (100, 100 + 100).
Nota. Para tener más precisión en la definición de
colores damos clic en la opción "Herramientas"
y elegimos la opción "Selector de colores ...". Ahí
nos da la gama de colores con su respectivo
número.
l. Realicemos los siguientesprogramas en el software de Processing:
1. Diseñemos una ventana con un fondo de color blanco.
2. Diseñemos una ventana con un fondo de color negro.
3. Diseñemos una ventana con un fondo de color celeste.
4. Diseñemos una forma rectangular con relleno de color azul y grosor de línea de 3 pixeles.
S. Diseñemos una forma triangular con relleno de color verde oscuro y grosor de línea de 3
pixeles.
6. Diseñemos una forma elíptica con relleno de color naranja y grosor de línea de 2 pixeles.
7. Diseñemos una forma poligonal con relleno de color amarillo y grosor de línea de 4 pixeles.
Operacionesde asignación
Son operaciones asignadas a una variable (también a una variable se le puede asignar un
valor para una condición inicial) para ser ejecutadas en bloques de código, como void setup
o void draw, o bucles como while o for, y también en bloques de condición verdadero o falso.
Nuestras variables pueden declararse según el tipo de dato que se emplee, como:
~
)
TIPO
TAMAÑO (en bits)
REPRESENTACIÓN Y RANGO
boolean
1
Verdadero (true) o falso (false) ~O o 1
char
16
Caracteres, es decir, símbolos o letras (a, b, e, ... ,_,'':'',
etc.)
byte
8
Un número pequeño ~ - 128 a 127
short
16
Un número grande ~ - 32768 a 32767
int
32
Un número bastante grande ~ - 2147483648 a
2147483647
long
64
Un número extremadamente grande ~ - 92233 ... a
92233 ...
float
32
double
64
-
-
i
-
Un número decimal como 4.7631
Un número con bastantes decimales 5.86213 ...
No olvidemos que una variable siempre debe tener un tipo de datos, para decirle al
ordenador cuánta memoria debe asignarse. Además, después de especificar el tipo de datos,
posteriormente debemos escribir un nombre funcional a nuestra variable, por ejemplo:
int Nrolib =O;
Declaramos nuestro tipo de datos como inty le damos el nombre Nrolib, el
cual hace referencia a lo que desarrollaremos que será el Número de libros.
l. Realizamos los siguientesprogramas en Processing haciendo uso de las operaciones
de asignación:
I
1. Diseñemos una figura con fondo de color verde y relleno de color azul que se desplace
horizontalmente en nuestra ventana.
Paso 1
Primeramente, declaramos el tipo de dato y el nombre de la variable fuera de los bloques de
código de la siguiente manera:
int movhor =O; e;> El tipo de dato será "int"y el nombre "movhor" hará referencia al movimiento
horizontal inicializado en O.
Paso2
Abrimos nuestro bloque de código con la función void setup(){ .•. }, y dentro de la misma
definimos tamaño de ventana y color de fondo, los mismos serán nuestras condiciones iniciales.
size (700, 700);
e;> Definimos
el tamaño de nuestra ventana a 700 x 700 pixeles.
Paso 3
Abrimos nuestro segundo bloque de código con la función void draw(){ .. .} y dentro de la
misma escribiremos los procedimientos y acciones que hará nuestro programa, como:
background(183, 255, 48);
fill(81, 124, 250);
e;> Damos un fondo
e;> Definimos
de color verde a nuestra ventana.
primeramente el color de relleno para nuestra forma.
ellipse(movhor, 350,100,150); e;> Finalmente, lo más importante, definimos nuestra elipse
dándole en los primeros dos parámetros las coordenadas (x,y) y en los últimos dos parámetros
el ancho y alto. La variable "movhortendrá diferentes valores dentro de este bloque de código.
movhor = movhor + 1; e;> Como inicialmente movhor está en O, su valor aumentará en uno y
la operación de la suma se almacenará en la misma variable. Esto hará que haya movimiento
en la ventana.
Paso4
Damos clic al botón Play
"'d •-olil
B
para ejecutar nuestro programa.
b<t<;lqnamd(l83, 255, 48);
fill(81, 124, 259);
e\Hp~(lllOYhor, 358, 198, 158);
novhor - mvhor + 1;
}
------~-""""'-'X
....
·----17111_•
X
0-.,.1n111o
X '
,0doldl.1'7nlit
'
'
'
Nota. Todo lo que esté dentro del bloque de código void draw, se va a ejecutar repetidamente
hasta que nosotros detengamos el programa. Por esa razón, se genera movimiento en nuestro
programa .
•
l. Realicemos los siguientesprogramas en el software de Processing:
1. Diseñemos una figura rectangular con fondo de color verde agua y relleno de color celeste,
que se desplace horizontalmente en nuestra ventana y tenga una coordenada en "y" a 50
pixel es.
2. Diseñemos una figura triangular con fondo de color amarillo crema y relleno de color
naranja que se desplace horizontalmente en nuestra ventana y tenga una coordenada en "y"
a 180.6 pixeles. (Sugerencia, utilizar tipo de dato float).
3. Diseñemos una figura poligonal con fondo de color amarillo purpura y relleno de color azul
que se desplace verticalmente en nuestra ventana y tenga una coordenada en "x" a 90 pixel es.
Estructurasrepetitivas
Son bucles que permiten ejecutar líneas de código varias veces. En Processing hay dos
estructuras de repetición:
for(){ .. .}
while(){... }
.'
Ejecuta una accion
condición se cumpla.
while(condición){
la
En el bucle for tenemos una inicialización de una
condición, su test y una actualización. El bucle se
ejecuta mientras el resultado del test sea verdadero:
for(inicio; test; actualización){
Instrucciones
)
mientras
Instrucciones
}
}
-
El uso de estas dos estructuras de repetición o bucles necesitarán que tomemos en cuenta a
los operadores relacionales para poder trabajar con las mismas. Entonces, para Processing,
los operadores relacionales validos son los siguientes:
OPERADOR
SINTAXIS
-
INTERPRETACIÓN
<
Menor que
a<b
<=
Menor o igual que
a< =b
a menorb igual que b
Igual que
a=b
a igual que b
a>b
a mayor que b
=
-
a menor que b
>
Mayor que
>=
Mayor o igual que
a>= b
a mayor o igual que b
¡=
Diferente de
al= b
a diferente que b
)
-
l. Realizamos los siguientes programas en Processing haciendo uso de las estructuras
r
1
.,.
Diseñamos una secuencia de líneas diagonales utilizando el bucle while.
Paso 1
int x = 50; ~ Escribimos el tipo de dato "int" seguido de la declaración de la variable "x"
inicializando a 50 pixeles.
Paso2
size(500, 500); ~Definimos
background(255);
una pantalla a 500 x 500 pixeles.
~Damos un fondo color blanco a nuestra ventana.
Paso 3
Abrimos un bloque de código con el bucle while para escribir dentro del mismo las siguientes
instrucciones:
while(x<=400){ ~Mientras
hacer lo siguiente:
"x" sea menor o igual a 400 pixeles (iniciamos abriendo la llave),
line(x, 50, x + 50, 450); ~El l er parámetro comenzará a 50 pixeles.
El 2do parámetro
será una constante de 50 pixeles en la coordenada
Tanto el l er como 2do parámetro definirán
'y".
la primera localización de la línea.
El 3er parámetro
iniciará a 50 pixeles y al mismo tiempo se le sumará 50 pixeles.
El 4to parámetro
será una constante de 450 pixeles en la coordenada "y".
Tanto el 3er como 4to parámetro definirán la segunda localización de la línea.
x
= x + 25;
~Al valor inicial de "x" nos desplazamos 25 pixeles hacia la derecha.
} ~Finalizamos
nuestro bloque de código, cerrando la llave, luego damos clic en el botón
PLAY para ejecutar nuestro programa.
·-1!_1111\!ol'"'' ..... 91.J.t
il'I
X•
ffl
tiu('"
, IMH
tt.ci..1ro1.1nd(Jll)1
.,¡,<te(""'")~
\foe(x, tt, x•H, •H)I
11 • 11 •
»1
-
CJ
X
O slcetch_171115a
Primera localización
X
para la línea l.
(x1 = 50,y1 = 50)
Para las líneas, las localizaciones se darán
de la siguiente manera:
Localización 1
Localización 2
x1
Y1
x2
Y2
50+ 25
50
50+ 50
450
75 +25
50
100+ 50
450
150 + 50
450
100+ 25
50
~
Segunda localización para la línea l
(x2 = 50 + 50,y2 = 450) .
., Diseñamos una secuencia de circunferencias sobre un origen común, utilizando el bucle
for, cada forma no debe tener un color de relleno.
Paso 1
size(500, 500); ~Definimos las dimensiones de nuestra ventana.
background(156, 23, 63); ~Damos color al fondo de nuestra pantalla.
Paso2
noFill(); ~Quitamos el color de relleno a nuestra circunferencia (le da un fondo transparente).
Paso 3
Abrimos un bloque de código con el bucle for para escribir dentro de la misma las siguientes
instrucciones:
for(int x = 10; x<= 450; x = x + 20){ ~En el parámetro de inicio declaramos directamente la
variable x en l O; en el parámetro de prueba o test ponemos una condición x <= 450; ya en el
parámetro de actualización ponemos el incremento o conteo de 20 en 20 a partir de 10 con:
x = x + 20. Iniciamos el bloque de código, abriendo una llave.
ellipse(250, 250, x, x); ~Damos un valor constante a los parámetros 1 y 2.
Los parámetros 3 y 4 tomarán valores de "x" hasta finalizar el bucle.
} ~Finalizamos nuestro bloque de código, cerrando la llave, y damos clic en el botón PLAY
para ejecutar nuestro programa.
• ( ·rr• x•ll¡ x<-'S8; JC•.IC•21}{
•tl:<lpu(258, 251, x, x);
La función elíptica genera circunferencias con
un origen común en (250, 250) cuyo ancho y alto
varía en función al incremento que se da en "x".
Nota. Tanto el bucle while como el bucle for
pueden llegar a generar las mismas secuencias
y procesos, todo depende de cómo manejemos
las condiciones y las variables. Además, los
valores que le demos a los parámetros pueden
ser arbitrarios o dependiendo qué necesitamos
en nuestro programa.
l. Realicemos los siguientes programas en Processing, haciendo uso de las estructuras
repetitivas:
1. Diseñemos una secuencia de líneas diagonales utilizando el bucle while. Nuestra ventana
debe dimensionarse a 300 x 300 pixeles.
2. Diseñemos una secuencia de puntos de forma horizontal, utilizando el bucle while. Nuestra
ventana debe dimensionarse a 400 x 300 pixeles.
3. Diseñemos una secuencia de puntos de forma vertical, utilizando el bucle for. Nuestra
ventana debe dimensionarse a 680 x 600 pixeles.
4. Diseñemos una secuencia de cuadrados, utilizando el bucle for. Nuestra ventana debe
dimensionarse a 700 x 700 pixeles.
S. Diseñemos una secuencia de triángulos, utilizando el bucle while. Nuestra ventana debe
dimensionarse a 500 x 500 pixeles y cada forma deberá tener un color de relleno diferente.
6. Diseñemos una secuencia de líneas diagonales, utilizando el bucle for. Nuestra ventana
debe dimensionarse a 700 x 700 pixeles y cada línea deberá tener un color diferente.
ARDUINO COMO SOLUCIÓN A LAS
NECESIDADES DE NUESTRO ENTORNO
Hoy en día, el avance de la tecnología hace que
nuestras actividades se desarrollen de la manera
más fácil posible en todos los ámbitos, prueba de
ello son nuestros smartphones. La tecnología tuvo
un desarrollo importante en cuanto a su aporte en
la medicina, en los sistemas de seguridad (hogares
y entidades públicas), los sistemas automatizados
(industrias), entre otros. Por tanto, la plataforma
Arduino es una de las herramientas fundamentales
para lograr todo eso, gracias a su facilidad y
versatilidad en su forma de programar e interactuar
con dispositivos y sensores electrónicos.
ARDUINO
Es una plataforma de prototipos electrónicos de código abierto (Open source), basada en
hardware y software flexibles y fáciles de usar. El lenguaje de programación tiene su base
en Processing, el cual hace que su entorno pueda abrirse a una serie de proyectos fáciles
de desarrollar.
Una vez instalado el software de Arduino en nuestra PC o laptop, veremos que es muy similar
al IDE (Entorno de Desarrollo Integrado) de Processing, porque está basado en el mismo.
Sólo cambia el botón Play, que sirve para ejecutar el entorno creado con el programa y el
botón Stop, que sirve para detenerlo.
O sk.d:ch_nov09a
._____
.__
O
Arduíno 1.8.S
X
(Subir o compilar código)
(
Verificar código
J
-
...._
~------.
O
X
(
Detener código
)
(
Ejecutar código
)
¿Cómo conseguir el softwarede Arduino?
Escribamos la página web //www.arduino.cc/en/Main/Donate para descargarlo de la
siguiente manera:
..
r
-
.
••
,..____
l. Accedemos a Contribute to the Ardumo Software
la página oficial.
·i'º"
,,..,,_.
s3
SS
s10
S25
.. . ..,..,.,.,,~,,,.,. ,.,,.. ......,.
sse
OTHER
2. Damos Clic en la opción ==~~~:);¡;¡;¡;:.
"JUST DOWNLOAD".
í
.,,,__.,
Arduino Mega 2560
A medida que se avanza en el dominio de la programación y la electrónica, los requerimientos
de procesamiento aumentan debido al enfoque que le damos a nuestros proyectos. Hoy
en día, los modelos más utilizados son Arduino Nano, Arduino Uno, Arduino Leonardo y
Arduino Mega, este último será el que tomaremos en cuenta por el mismo hecho de que
nos provee una mayor cantidad de pines de entrada y salida, además de su capacidad de
procesamiento en relación a los demás.
Hardware del Arduino Mega 2560
Arduino Mega se desarrolla en un entorno de hardware flexible y versátil donde la cantidad
de puertos disponibles hacen que podamos desarrollar nuestros proyectos en una misma
placa. Ahora conozcamos las partes que componen a este modelo de Arduino.
Comunicación
USB
PWM
(Modulación por
ancho de pulso)
Comunicación
serial
Puerto de
configuración
Pines
Dlgltales
Fusible de
protección
de USB
Regulador de
5V
Alimentación
externa
Regulador de
3.3V
Suministro de
energla
Pines Analógicos
Botón Reset
Características del Arduino Mega 2560
1
Microcontrolador
ATmega2560
Voltaje de funcionamiento
5V
Pines 1 (entrada)/ O (salida) digitales
54 (donde 12 proveen salida PWM)
Pines de entradas análogas
16
Corriente OC por cada pin 1/0
40rnA
Corriente OC en el pin de 3.3V
50rnA
Memoria Flash
256kbytes
~
SRAM (Memoria estática de acceso aleatorio)
~
~
-
~
8kbytes
~
~
EEPROM (Memoria de solo lectura programable 4kbytes
}
' Velocidad de reloj
16Mhz
~
Las memorias son encargadas de almacenar instrucciones y datos en Arduino, es decir:
•
La memoria Flash es donde se almacena el programa que elaboramos.
•
SRAM es el espacio donde los programas almacenan y manipulan
ejecutarse.
•
EEPROM es utilizado por los programadores para almacenar información a largo plazo.
las variables al
La velocidad del reloj determina la rapidez en la que se procesan los datos.
Conexión y reconodmiento de Arduino
Una vez descargado el software y posteriormente conocido el entorno del hardware como
también las características de nuestro Arduino podemos pasar a reconocer el mismo en
nuestro ordenador con los siguientes pasos:
l. Identificamos el
extremo del cable que
tiene el conector tipo By
lo conectamos a la placa
de Arduino.
2. El otro extremo
del cable que tiene el
conector tipo USB lo
conectamos a nuestro
ordenador.
Ya realizados los primeros pasos nos dirigimos al software para realizar el reconocimiento
de nuestro Arduino a través del puerto serie de la siguiente manera:
D
X
Ctrl•T
ArchWode programa.
3. Vamos a la opción
"Herramientas".
Repararcodificación & Reucgar.
Monitor Serie
. ' "PI aca...."
opc1on
Plaa:: ~Ardu1no Uno"'
Pu..to: "COM4 (Arduino Mogo or Mega 2560)"
ArduinoVún
Progromador. "AVRISP,mldl"
Qum"iar Bootloader
Arduino Ouemilanow ct Oiecimifa
ArduinoNtno
S. Elegimos la opción ---~
"Arduino Mega or
Mega2560".
Arduino Mego Of Mcg• 2560
Arduino M<g• ADIC
Arduino Leonordo
Atduino Micro
Ardurno Espiara
Arduino Mini
Atduino Ethernet
Arduino Fio
Arduíno BT
~-
·..i.:
'::
·,,...~-...
•
-
•
ulyP•d Arduino US8
~·
Lilyl'ad Arduino
ArduinoPro or Pro Mini
.. _,
'
1
ArduinoNG or ofder
::~::::;oto• -- .
Arduino Robot
Coriirol
Si observamos la opción que está debajo de '.'Placa: Arduino Uno", el reconocimiento del
puerto se realiza automáticamente con la opción "COM4(Arduino Mega or Mega2560)", esto
significa que la conexión que realizamos en los pasos 1y2 no presenta ningún problema.
Funciones en Arduino
'
FUNCIÓN
void setup(){ .. .}
void loop(){ .. .}
-
'
-
EXPLICACIÓN DE LA FUNCIÓN
-
Establecelas condiciones de partida para el programa.
Ejecuta repetidas veceslo que está dentro de su bloque
de código.
pinMode(pin, estado);
Configura un pin especificado como entrada o salida.
-
Pone en 5V (1) o OV (O) un pin de salida.
digitalWrite(pin, estado);
digitalRead(pin);
Lee el valor de un pin configurado como entrada.
analogRead(pin);
Lee el valor de voltaje en el pin analógico.
-
delay(tiempo en milisegundos);
Es el tiempo que se le da a la ejecución de un programa.
-
ESTRUCTURA
if (condición){ .. .}
if (condición verdadera){ ... }
else (condición falsa){ .. .}
EXPLICACIÓN
DE LA ESTRUCTURA
Comprueba si cierta condición se cumple.
Permite agrupar múltiples comprobaciones, es decir:
Si la condición (if) ejecuta un bloque de código, si no
(else) ejecuta el otro bloque de condición.
·.
while (condición){ .. .}
Se ejecuta un bloque de código hasta que la condición
deje de cumplirse.
-
for (inicio; test; actualización){ .. .}
Repite un bloque de código hasta que se cumpla una
condición.
Se puede observar, las funciones y estructuras son similares a los de Processing y la forma de
programar tampoco se aleja de lo anteriormente desarrollado. Existen muchas más funciones
y estructuras que podemos aplicar, y las que mencionamos son las más importantes.
Programaciónde Arduino
Teniendo las bases de programación en Processing y habiendo hecho la conexión y
reconocimiento de nuestroArduino Mega 2560, podemos pasar a programarlo e interactuar
con cada uno de los pines o puertos de entrada/ salida.
l. Realizamos la programaciónde los siguientesejemplos:
. Programamos el parpadeo de un diodo led por el pin número 13.
Solución:
Una característica de Arduino es que tiene un led de prueba acoplada al pin número 13,
entonces con ese conocimiento comencemos a programar:
0
o
encendido_de_un_LED Arduino 1.6.S
X
Archivo tditar Programa Herramientas Ayuda
oomaa
m
...
encendido_de_un_LED §
v~1d setup()
{
;¡:inMode(13, :)U'!PUI):
~
//declaramos
el pin l3 como salida
}
vcad loop { ) {
di~ita1Write(l3,3I~?.);
delay(lOOO);
digüalWti te {13, t::·i ;
:iel.ay(lOOO):
//Ponemos el led en
//lo encendemos por
//Ponemos el led en
//lo apagamos por l
estado alto
l segundo
estado baJo
s~do
fHIGR}
{LOW)
Una vez realizado nuestro programa procedemos a compilar dando clic en
11 .
Si escribimos correctamente la línea de códigos nos aparecerá la siguiente respuesta en
nuestra ventana:
Luego observamos que evidentemente nuestro led parpadea cada segundo.
-
Completa
~
•JP
1'~
A-;;equi
(,g d" -.\rn•
lj•-i"hllH.o d~ ~·J
2 Programamos un juego de luces con 3 leds en los pines 5, 6 y 7.
Solución:
Primero realizamos el armado de nuestro circuito a partir de los pines designados, entonces
tendremos lo siguiente:
.....
a b e d e
1
• • 2 •••••
•• 3 •••••
•
'
1
•
1
.•••
••
.....
f g h
•••••
• ••••
i l
1
2
•••••
J
1
1
••
••
5 •••••
16 .....
7
8
9
10
•••••
•••••
•••••
•••••
Los cables azul,
bla neo y rojo se
conectan
a
los
orificios de la línea
celeste.
11 •••••
.• .•
••
1 1
•
1
1
1
1 1
1 •
1 1
1 •
t8
19
20
21
•••••
•••••
•••••
•••••
•
•
22 •••••
23 •••••
2' ••.•••
25 ......
l) •••••
o b e d e
1
1
1
1
•
1
••
26 •••••
27 • ••••
28 •••••
29 •••••
El cable de color
amarillo se conecta al
pin de GND (también
denominado tierra
o polo negativo
de la fuente de
alientación)
•••••
• ••••
f g h i í
29
JI
•
1
1
•
1
1
El ánodo del led se
conecta al extremo
del resistor, y el
cátodo a uno de los
cables de color.
Un extremo
del
resistor
al
pin
designado
del
Arduino y el otro al
ánodo del led.
Los pines 5, 6 y 7 serán los que
entregarán un voltaje de 5V,
comportándose como una fuente
de alimentación. Si observamos
el conjunto del pin de salida, el
resistor y el led harán un circuito
independiente como el caso visto
en el capítulo de electrónica.
Una vez realizada nuestra programación y luego de haber posicionado correctamente
nuestros componentes electrónicos, procedemos a compilar nuestro programa, teniendo
como resultado lo siguiente:
S
Recordemos siempre que las
condiciones iniciales se establecen
dentro del bloque de código de
void setupí).
Herramientas Ayuda
vc d sei;up () {
pil:lHode (5,00IFUT);
í
p illMode ( 6 , OOTFOT) ;
pin..'fode
(7,00IPUT);
0
Nosotros podemos darle un
enfoque distinto en cuanto al orden
de nuestros pines, esto influirá en
el hecho de qué led se encienda
primero o el tiempo en que puede
parpadear.
X
D
slcetch_n.ov17a Arduin.o 1.8.5
Archivo _Editar Programa
vcac loop()
digitalWrite(S,HIGR);
delay(SOO);
diqita1Wrice(6,HIGR);
delay(SOO);
diqital~r1te(7,HIGR);
delay(SOO);
digital~rite(S,L~K);
delay{SOO);
digital~rite(6,LOli);
delay(SOO);
digital~rite(7,LOK);
delay(SOO);
//Declaramos el pin 5 como salida
//Declaramos el pin 6 como salida
//Declaramos el pin 7 como salida
//Ponemos el pin 5 en estado alto
//Se enciende por medio segundo
//Ponemos el pin 6 en estado alto
//Se apaga por medio segundo
//Ponemos el pin 7 en estado alto
//Se enciende por medio segundo
//Ponemos el pin 5 en estado baJO
//Se apaga por medio segundo
//Ponemos el pin 6 en estado baJo
//Se enciende por medio segundo
//Ponemos el pin 7 en estado baJO
//Se apaga por medio segundo
(HIGH)
(HIGH)
(HIGH)
(LOW)
(LCW)
(LCW)
>
<
Compilado
r1·--=
,-~ ~~- ~~;~=::_:.!:~_-::.:: _...::.::;.- ~t.:.:::-.: '_-t
E: :iP:~t ~~~ _-:4
:_~3 -;~::::: ... r::.:,_-,?
20
~~ ~--~~=~~7.-::-::
.:1":::
_:;.
--:::-"":.::.::...::;.
J~
;::
J_ .._::.:.:-_:::.::. j
Ardumo/Genumo Uno en COM1
Debemos tomar en cuenta
que todo parte de cómo
realizamos las conexiones,
es importante ser precisos
porque la mayoría de los
problemas
se presentan
por detalles que se puedan
presentar a nivel de hardware.
Sensores y módulos
Un sensor es un objeto capaz de detectar
magnitudes físicas o químicas, llamadas variables
de instrumentación y transformarlas en variables
eléctricas. Un módulo es el sistema integrado que
se utiliza para controlar las funciones del sistema
eléctrico.
La plataforma Arduino tiene la capacidad de controlar
y programar sensores como también módulos, ya que
a través de las librerías con las que viene incorporado
su software hace que la manipulación de los mismos
se lo haga de una manera flexible.
l. Analicemos las siguienteslíneas de código y marquemosla opción correcta:
1. ¿Qué palabra hace falta para completar
nuestra función y se ejecute nuestro
programa?
2. ¿Qué led se encenderá primero?
vaili 3ecup() {
pi.nMode (9, OUIPO!) ;
u
Write
Read
)
)
)
)
delay(SOO);
digitallirit~(9,BIGB);
delay (500);
digitallirite(B,:UG~);
)
)
)
)
)
delay(SOO);
)
)
u
Analog
3. ¿Qué hará nuestro código, st
conectamos un terminal de un motor
de 5V al pin número 12 y el otro terminal
aGND?
}
VOiá loop(} {
l-J
Led amarillo
)
l-J
Led verde
Ninguno
4. ¿Cuál es el error en el código?
vcrd setup() {
~~od~(S,.BIGH};
pir~V.odet6,INPUI');
vaid loop() {
digitalWrite(S,O!J!PO!);
delay(2000);
diqiui.1Write(6,lUGa);
delay(SOO);
digit.aUi'rite (12,filG!!.);
delay(2000);
diqitalKrite(12,LOW);
delay(SOO);
}
UGira motor
U No hace
nada
:
)
l
wid se"tup O {
pill.l!ode(12,tUIPO!);
>
)
digit.alliritt:(8,m:);
digital ••• (7,~:G!!);
1elay (500} ;
digital. •• (7, L!X);
delay{SOO);
)
)
void loop(){
v~id loop() {
u
- //Pin e como 3al11ia para led verde
//Fin 9 comosalida para led amarillo
l
l
}
)
pin_~ode(B,OUI1'UI);
void 3etup() {
pinMode (7, OUIFUI') ;
l
)
UMarca error LJ Variable
LJ
Designación
U No tiene
error
11. Escribamos un comentario sobre cada función en nuestro programa.
void 3e~up() {
p1ru1ode ( 2, IUPUI) :
pinMnde{13,01JIPTJI);
//
//
.
II
.
//
.
//
.
//
//
.
.
}
void loop(~{
i:nc ecane
=
:iigita lRead (2) :
if. ~ s ta t e=O ) {
di_.:..Lal -rite {13, H!tH);
}
el.se{
digit:al íri~e (13, LOl1)
;
.
}
}
111. Realicemos las siguientes programaciones:
1. Programemos un juego de luces con 2 leds en los pines 6 y 7.
2. Programemos un juego de luces con 4 leds en los pines 6, 7, 8 y 9.
3. Programemos un juego de luces con 3 leds en los pines 7, 8 y 9.
4. Programemos el giro de dos motores de 5V a través de los pines 10 y 11.
S. Programemos el giro de tres motores de 5V a través de los pines 8, 9 y 10.
6. Programemos un juego de luces con 5 leds en los pines 7, 8, 9, 10 y 11.
Sugerencia. Poner un extremo del motor al pin designado y el otro extremo en el GND,
podemos hacer uso de un protoboard.
IV. Investiguemos y respondamos las siguientes preguntas:
1. ¿Cómo funciona un sensor de humo?
2. ¿Qué características tiene un termistor?
3. ¿Qué es un servomotor?
4. ¿Qué es un módulo RFID y para qué sirve?
S. ¿Qué es un sensor de ultrasonido y para qué sirve?
6. ¿En qué se diferencian el Arduino Uno y el Arduino Leonardo?
7. ¿Qué diferencia hay entre módulo y sensor?
8. ¿Qué es un LDR?
9. ¿Cómo se podría programar el control de luces en Arduino utilizando un LDR?
Descargar