Clase del 25 de agosto de 2011

12 views
Skip to first unread message

César A. Fdez.

unread,
Aug 26, 2011, 3:46:14 PM8/26/11
to Arduino en Ciball
Como parece que el último día bastante gente no vino a clase, les voy
a hacer un resumen de la clase del día 25 de agosto.

Comenzamos la clase revisando el último ejercicio; la luz del coche
fantástico controlando la velocidad mediante un potenciómetro.

Jorge nos explicó una instrucción muy útil, por ejemplo a la hora de
leer datos analógicos, la instrucción 'map' (http://arduino.cc/es/
Reference/Map).

Esta instrucción nos permite pasar de un rango de valores a otro de
una manera directa y sencilla.

En el ejercicio recogíamos valores del potenciómetro que variaban
entre 0 y 1023. el usar esos valores es complicado cuando por ejemplo
te interesaría que variasen entre 50 y 200. Con la instrucción 'map'
podemos hacer esas conversiones de forma que si ponemos la instrucción
con los siguientes parámetros (siendo 'valor' una variable int que
queremos calcular):

map(valor, 0, 1023, 50, 200);

Si le pasamos con la variable 'valor' 0, nos devuelve 50. Si le
pasamos 1023 nos devuelve 200. Si le pasamos un valor intermedio,
realiza las operaciones necesarias para darnos el valor
correspondiente.

Hay que puntualizar que map sólo da enteros, y si el resultado fuese
una fracción, nos dará el valor truncado, es decir, sin redondear.

Tras esta explicación con la que se termina el conocimiento básico de
arduino, pasamos a explicar temas avanzados empezando por los servos.

Los servos son motores que tienen algo de 'inteligencia', es decir,
que se pueden mover a una posición que nosotros les indiquemos entre,
generalmente, 0º y 180º.

Para emplear los servos en Arduino utilizamos 'Librerías'. Las
librerías (en realidad la traducción correcta sería bibliotecas) son
archivos donde se han programado una serie de procedimientos que
pueden ser usados directamente facilitándonos el trabajo.

Lo primero que tenemos que saber es que las 'librerías' tienen que ser
importadas en nuestro código por tanto, en las primeras líneas debe
aparecer una instrucción '#include' y entre los signos '<' y '>' el
nombre de la 'librería' a utilizar. En nuestro caso:

#include <Servo.h>

Lo segundo, es crearnos un 'objeto' Servo de la siguiente manera:

Servo miServo;

Al hacer esto, podemos emplear una serie de procedimientos que nos
facilitan el trabajo con los servos. Tenemos acceso a los siguientes
métodos y propiedades:

attach()
write()
writeMicroseconds()
read()
attached()
detach()

En principio usaremos 'attach()' para indicarle al Arduino el pin que
usaremos para mandar las instrucciones al servo, por ejemplo al pin 2:

miServo.attach(2);

Ahora sólo tendremos que darle valores mediante el método 'write()'.
Si queremos que se mueva a la posición 0º:

myservo.write(0);

Si queremos a 180º:

myservo.write(180);

Es necesario hacer un 'delay()' tras mandar la orden al servo para que
le dé tiempo a llegar a esa posición. Si no lo hacemos, y le mandamos
otra instrucción, el servo no cumplirá la primera y saltará a esa
última.

Respecto a las prácticas realizamos un montaje que movía el servo a la
posición 0º y a la posición 180º directamente.

La siguiente fue el controlar la posición del servo con un
potenciómetro (aquí empleamos la instrucción 'map()' para que los
valores del potenciómetro de 0 a 1023 pasasen a ser valores entre 0 y
180).

El último ejercicio consistía en mantener la funcionalidad del
potenciómetro, pero incluir un botón que al pulsarse hiciese pasar al
servo a un estado como el de un limpia parabrisas y al volverlo a
pulsar, nos devolvía el control mediante el potenciómetro.

Tenéis el esquema de montaje y el código (del segundo ejercicio) en:
http://fritzing.org/projects/curso-arduino-servos/

Bueno, espero haber explicado todo, pero si veis que falta algo (los
asistentes) o no entendéis algo (los que no asististeis), no dudéis en
publicarlo en el Grupo de Google.

Un saludo.

César A. Fdez.

Alma Orozco

unread,
Aug 26, 2011, 4:53:03 PM8/26/11
to arduino...@googlegroups.com
Genial Cesar!, te lo agradezco un montón.

Gracias ;) .
--
Alma.
Mi blog

victorelec14

unread,
Aug 28, 2011, 12:32:14 PM8/28/11
to arduino...@googlegroups.com

gracias césar !!, esta tarde me pongo a ello .

por cierto la última clase es mañana no ??

un saludo

Syvic

unread,
Aug 28, 2011, 1:38:13 PM8/28/11
to arduino...@googlegroups.com
Buenas!

Siento responder tan tarde...

El resumen que ha hecho C�sar es estupendo. Creo que no se ha dejado
nada de lo que vimos en la clase ese d�a. Esto junto con su otro correo
sobre los servos creo que os servir� perfectamente a los que no
pudisteis venir...

En cuanto a los ficheros que ha colgado en fritzing tambi�n os ser�n de
mucha ayuda y est�n genial.

Gracias por el currazo C�sar!!!

On 26/08/11 21:46, C�sar A. Fdez. wrote:
> Como parece que el �ltimo d�a bastante gente no vino a clase, les voy
> a hacer un resumen de la clase del d�a 25 de agosto.
>
> Comenzamos la clase revisando el �ltimo ejercicio; la luz del coche
> fant�stico controlando la velocidad mediante un potenci�metro.
>
> Jorge nos explic� una instrucci�n muy �til, por ejemplo a la hora de
> leer datos anal�gicos, la instrucci�n 'map' (http://arduino.cc/es/
> Reference/Map).
>
> Esta instrucci�n nos permite pasar de un rango de valores a otro de


> una manera directa y sencilla.
>

> En el ejercicio recog�amos valores del potenci�metro que variaban


> entre 0 y 1023. el usar esos valores es complicado cuando por ejemplo

> te interesar�a que variasen entre 50 y 200. Con la instrucci�n 'map'
> podemos hacer esas conversiones de forma que si ponemos la instrucci�n
> con los siguientes par�metros (siendo 'valor' una variable int que


> queremos calcular):
>
> map(valor, 0, 1023, 50, 200);
>
> Si le pasamos con la variable 'valor' 0, nos devuelve 50. Si le
> pasamos 1023 nos devuelve 200. Si le pasamos un valor intermedio,
> realiza las operaciones necesarias para darnos el valor
> correspondiente.
>

> Hay que puntualizar que map s�lo da enteros, y si el resultado fuese
> una fracci�n, nos dar� el valor truncado, es decir, sin redondear.
>
> Tras esta explicaci�n con la que se termina el conocimiento b�sico de


> arduino, pasamos a explicar temas avanzados empezando por los servos.
>
> Los servos son motores que tienen algo de 'inteligencia', es decir,

> que se pueden mover a una posici�n que nosotros les indiquemos entre,
> generalmente, 0� y 180�.
>
> Para emplear los servos en Arduino utilizamos 'Librer�as'. Las
> librer�as (en realidad la traducci�n correcta ser�a bibliotecas) son


> archivos donde se han programado una serie de procedimientos que

> pueden ser usados directamente facilit�ndonos el trabajo.
>
> Lo primero que tenemos que saber es que las 'librer�as' tienen que ser
> importadas en nuestro c�digo por tanto, en las primeras l�neas debe
> aparecer una instrucci�n '#include' y entre los signos '<' y'>' el
> nombre de la 'librer�a' a utilizar. En nuestro caso:


>
> #include<Servo.h>
>
> Lo segundo, es crearnos un 'objeto' Servo de la siguiente manera:
>
> Servo miServo;
>
> Al hacer esto, podemos emplear una serie de procedimientos que nos
> facilitan el trabajo con los servos. Tenemos acceso a los siguientes

> m�todos y propiedades:


>
> attach()
> write()
> writeMicroseconds()
> read()
> attached()
> detach()
>
> En principio usaremos 'attach()' para indicarle al Arduino el pin que
> usaremos para mandar las instrucciones al servo, por ejemplo al pin 2:
>
> miServo.attach(2);
>

> Ahora s�lo tendremos que darle valores mediante el m�todo 'write()'.
> Si queremos que se mueva a la posici�n 0�:
>
> myservo.write(0);
>
> Si queremos a 180�:


>
> myservo.write(180);
>
> Es necesario hacer un 'delay()' tras mandar la orden al servo para que

> le d� tiempo a llegar a esa posici�n. Si no lo hacemos, y le mandamos
> otra instrucci�n, el servo no cumplir� la primera y saltar� a esa
> �ltima.
>
> Respecto a las pr�cticas realizamos un montaje que mov�a el servo a la
> posici�n 0� y a la posici�n 180� directamente.
>
> La siguiente fue el controlar la posici�n del servo con un
> potenci�metro (aqu� empleamos la instrucci�n 'map()' para que los
> valores del potenci�metro de 0 a 1023 pasasen a ser valores entre 0 y
> 180).
>
> El �ltimo ejercicio consist�a en mantener la funcionalidad del
> potenci�metro, pero incluir un bot�n que al pulsarse hiciese pasar al


> servo a un estado como el de un limpia parabrisas y al volverlo a

> pulsar, nos devolv�a el control mediante el potenci�metro.
>
> Ten�is el esquema de montaje y el c�digo (del segundo ejercicio) en:


> http://fritzing.org/projects/curso-arduino-servos/
>
> Bueno, espero haber explicado todo, pero si veis que falta algo (los

> asistentes) o no entend�is algo (los que no asististeis), no dud�is en


> publicarlo en el Grupo de Google.
>
> Un saludo.
>

> C�sar A. Fdez.

Syvic

unread,
Aug 28, 2011, 1:39:53 PM8/28/11
to arduino...@googlegroups.com
Buenas Víctor!

Si, mañana es la última clase (sniff, sniff) y tenemos unas cuantas cosas interesantes por ver. Espero que esta vez no nos juegue el metro otra mala pasada como la semana pasada.

Nos vemos mañana a las 18h en Ciball
Reply all
Reply to author
Forward
0 new messages