Fernando F. GallegoTwitter: http://twitter.com/ferdy182
Flickr: http://www.flickr.com/photos/ferdy182
Youtube: http://www.youtube.com/user/SeaMonkey182
Android Apps: https://market.android.com/developer?pub=forgottenprojects.com
Camisetas: http://www.camisetafriki.com
T-Shirts: http://www.camisetafriki.info
gracias por compartirlo !!
no conocía ese método, evitas usar bucles con lo que el arduino termina cada ciclo más rápido al no tener que esperar a que el bucle termine (si no me equivoco).
Buenas,
os paso el código del limpiaparabrisas, el coche fantástico y la respiración led usando la función seno (también válido para la respiración del LED y para el coche fantástico)
Os explico un poco de trigonometrÃa por encima para que sepáis como funciona:
La función seno (sin) recibe como parámetro un ángulo en radianes (90º son PI/2 radianes, 180º son PI radianes, 270º son 3*PI/2 radianes, 360º son 2*PI radianes y vuelta a empezar) pero no importa si el número es alto, ya que al ser una función sinusoidal, siempre estará entre -1 y 1 (sin(0) = 0). http://es.wikipedia.org/wiki/Seno_(trigonometr%C3%ADa)
En el caso del LED, queremos pasarle un valor entero entre 0 y 255 para simular la respiración, (no puede ser negativo), entonces tenemos que encontrar la manera de convertir los valores entre -1 y 1, a valores entre 0 y 255. Para esto, multiplicamos el seno por 125, para que nos de valores entre -125 y 125, y al resultado le sumamos 125, de modo que el resultado oscilará entre 0 y 250 y ese valor ya podemos pasárselo al pin PWM
analogWrite(9,125+sin(i)*125);
En la siguiente iteracion del loop, debemos incrementar el ángulo para obtener el siguiente valor, asà que después de probar varios valores, con la velocidad el arduino, me ha servido sumar 0.01 al valor del ángulo, por eso ponemos i=i+0.01.
Aunque el valor del ángulo puede crecer hasta valores altos, conviene resetearlo a 0 al pasar de 2*PI para que nunca nos salgamos del rango permitido de valores.
if(i>2*PI) { i=0; }
En el caso del servo hice lo siguiente:
 f = (1+sin(i))*179/2; s.write(f); i=i+0.001;
Para valores entre 0 y 179 (oscila entre 0 y 2, por 179/2 sale entre 0 y 179)
En el caso del coche fantástico (cylon.pde) lo que cambia es el led que queremos encender en cada momento y es el valor que pasamos al digitalWrite (almacenando el valor anterior para apagarlo)
Si tenéis dudas me comentais :)
Intentaré subir luego o mañana unos vÃdeos de cómo quedan aunque algunos ya lo visteis en vivo :)
Â--
Fernando F. Gallego
 Blog: http://www.forgottenprojects.comÂ
 Linkedin: http://es.linkedin.com/in/fernandofgallego
 Twitter: http://twitter.com/ferdy182
 Facebook: http://www.facebook.com/fernando.f.gallego
 Flickr: http://www.flickr.com/photos/ferdy182
 Youtube: http://www.youtube.com/user/SeaMonkey182
 Android Apps: https://market.android.com/developer?pub=forgottenprojects.com
 Camisetas: http://www.camisetafriki.com
 T-Shirts: http://www.camisetafriki.info