miércoles, 23 de mayo de 2012
¡Nos trasladamos!
domingo, 6 de mayo de 2012
Robonova: CEAbot 2012
![]() |
| Robonova y RoboSapiens se han hecho amigos. |
Robonova es un robot humanoide que vamos a presentar al concurso de robótica de la CEA, el "CEAbot".
Hoy lo he tenido para hacer unas pruebas y esto es lo que he descubierto:
Modelo y carga de batería
El modelo que tenemos es el MR-C03024 (viene en la esquina inferior izquierda) y la batería, que debería cargarse completamente en 2 horas, dura aproximadamente 20 minutos.
Software
Para descargarse el programa hay que entrar en la siguiente dirección:
http://www.robonova.de/store/home.php
Añado directamente la ruta de enlace
http://www.robonova.de/store/down/download/files/roboBASIC_v25e(20060126).zip
Este archivo instalará los tres entornos de programación por defecto:
- Robobasic
- Roboscript
- RoboRemocon
Los dos últimos son para programar el robot sin código, así que no lo trataremos.
| El robot traía un programa por defecto llamado Jaime, hecho el 16 de Enero de este año. |
Aprender a manejarlo
Para aprender todo sobre Robonova recomiendo la siguiente presentación hecha en la UPV:
http://es.scribd.com/doc/52273154/programacion-robonova
Es la mejor guía que he encontrado en la red.
"Hola, mundo"
Si hemos leído el documento anterior, ya estamos listos para entender el programa siguiente, que pongo a modo de ejemplo. El lenguaje es Basic. Para programar los movimientos utilicé la interfaz incluida en el entorno, llamada Robonova Motor Controller, donde solo hay que poner la posición a la que se quiere que vaya el robot y al darle a 'insertar' te sale como línea de código:
'Programa ejemplo:
SPEED 5
'Velocidad de los motores
MOTOR G24
MAIN:
MOVE G24, 100, 76, 145, 93, 100, , 100, 30, 80, , , , 100, 30, 80, , , , 100, 76, 145, 93, 100,
DELAY 50
MOVE G24, 100, 76, 145, 93, 100, , 105, 110, 80, , , , 100, 50, 80, , , , 100, 76, 145, 93, 100,
DELAY 1000
MOVE G24, 100, 76, 145, 93, 100, , 105, 190, 80, , , , 100, 50, 80, , , , 100, 76, 145, 93, 100,
DELAY 1000
MOVE G24, 100, 76, 145, 93, 100, , 105, 190, 180, , , , 100, 50, 80, , , , 100, 76, 145, 93, 100,
DELAY 1000
MOVE G24, 100, 76, 145, 93, 100, , 105, 190, 174, , , , 100, 50, 80, , , , 100, 76, 145, 93, 100,
GOTO MAIN
Este programa hace al robot realizar el saludo militar, como se ve en el siguiente vídeo:
Una vez hayamos probado esto, nos bajaremos de la siguiente página un archivo Overall Template Program:
http://davidbuckley.net/DB/RoboNova/RoboNova.htm
Este programa es el que da la empresa para sus demostraciones. Configura al robot para que, al recibir órdenes desde el mando a distancia, ejecute diferentes programas según la tecla. Para utilizarlo debemos asegurarnos de que el receptor IR está conectado en el puerto AD7 de la microcontroladora.
![]() |
| El sensor IR es que aparece abajo. |
Utilización de la plantilla
Para no tener problemas con el arranque del robot, es recomendable abrir siempre una plantilla con todos los comandos de arranque por defecto.
Demostración
He descubierto que tiene rotos dos servos: el del hombro izquierdo, que da saltos, y el del muslo izquierdo, que emite un zumbido. A pesar de ello es capaz de realizar los siguientes espectáculos:
Caminar:
Bailar:
Hacer flexiones
jueves, 3 de mayo de 2012
Cybertech en la prensa
Medios especializados:
- http://www.roboticadeservicios.com/eventos.html
Medios institucionales:
- https://www.upm.es/e-politecnica/?p=1380
- http://da.fi.upm.es/es/node/304 http://www.upm.es/institucional/Estudiantes/20bdf882ce3e6310VgnVCM10000009c7648aRCRD http://awaetsii.wordpress.com/2012/04/23/reset-presenta-cybertech-2012-el-torneo-de-robots-autonomos-de-la-etsii/
- http://www.alumniencepade.com/index.php/actividades/culturales/item/92-24-al-26-abr-cybertech-2012
- http://www.emes.es/Actualidad/Noticias/Noticia/torneo/cybertech/tabid/581/itemid/3861/type/noticia/Default.aspx http://www.escuelaindustrialesupm.com/escuela-industriales-upm/pumatron-robot-ganador-cybertech-2012-industriales/#.T6GARNlcBSN
Medios generales:
- http://www.vallecas.org/
- http://noticias.terra.es/2012/ciencia-y-tecnologia/0426/actualidad/pumatron-el-mejor-robot-en-el-xii-torneo-cybertech.aspx
- http://www.antena3.com/videos/completos-noticias1/2012-abril-26-2012042600010.html http://estaticos.20minutos.es/edicionimpresa/madrid/12/04/MADR_25_04_12.pdf http://www.escuelaindustrialesupm.com/escuela-industriales-upm/pumatron-robot-ganador-cybertech-2012-industriales/#.T6GARNlcBSN
domingo, 15 de abril de 2012
Documental recomendado: Tirar, Comprar ,Tirar (Obsolencia programada)
Este documental no dejará indiferente a todo aquel que haya tenido que cambiar hace poco de móvil por culpa de la batería, que se le haya roto la impresora sin motivo aparente, y razones similares. La pregunta: ¿por qué, pese a los avances tecnológicos, los productos de consumo duran cada vez menos?
martes, 3 de abril de 2012
Programación en Lego

Programación en Lego
Después de encontrar dos kits de Lego Mindstorms RCX sin uso en la F11, decidí revivirlos y aprender a utilizarlos. El primer problema que encontré fue el puerto serie que hacía falta para comunicar los RCX con el ordenador, problema que solucioné con un adaptador, algo en lo que no tenía mucha fe. El siguiente problema fue encontrar el entorno de programación : Robolab. Lo intenté con torrents sin resultado; solo lo encontré en descarga directa , pero en ruso y con virus (http://www.descargarfull.com/descargar/robolab-2-9-4-build-c-2003-2010x86/)
Tuve problemas con el ruso, ya que necesitaba configurar el programa, así que tuve que hacerme una tabla de traducción del menú:
Primeros Pasos
El entorno de programación es gráfico, copia del LabView de TI. Los if y while se hacen mediante diagramas de flujos:
Hay que tener cuidado al programar los if, ya que hay que evitar cruzar las condiciones, o el programa no podrá compilarlo:
Sumo
Este es un programa que encontré por Internet para hacer un robot de sumo muy sencillo:
Aquí podemos ver el funcionamiento:
Rastreador (Follow line)
También encontré un programa de seguimiento de líneas con un solo detector, que se basa en seguir la línea límite entre la zona blanca y gris, dando lugar a medir la zona "gris":
Máquina vs vida
Si te preguntas si la robótica puede superar a la vida en algún momento, yo hice la prueba. El resultado: la robótica es mucho más fiable pero menos versátil.
Visita a Alcalabot'12. Concurso de velocistas
Estuve de visita en Alcalá de Henares por motivo de la "Semana de la Robótica" en la UAH, donde ofrecían conferencias, talleres y demás.Uno de los talleres que presencié fue el de Lego Mindstorms NXT, donde enseñaban a niños a hacer robots de sumo:

También hubo conferencias sobre control borroso y control con kinect, entre otras, ofrecidas por alumnos del departamento de electrónica.

Pero lo más emocionante fue el concurso de robots, con varias categorías. Yo fui a la de velocistas, en el que grabé muchos vídeos (dejo algunos, los demás están en mi canal: http://www.youtube.com/user/peterparker293).
El ganador fue Veloli, que también ganó en la Complubot el año pasado.

domingo, 1 de abril de 2012
Instalación de Replicator G

El Replicator G es el software por excelencia si quieres imprimir en 3d: escala, cambia de orientación y pasa a formato gcode, el cual entiende la impresora. Sin embargo , su instalación puede dar problemas ya que la pagina oficial es un poco liosa(http://replicat.org/installation) Aclaremos el asunto:
Para que el software funcione correctamente necesitamos:
-Phyton: python.org/
-Java: www.java.com/
-Drivers de Arduino, FTDI,.. http://www.ftdichip.com/Drivers/VCP.htm
http://www.arduino.cc/
Si queremos bajarnos la versión con perfiles optimizados y probados, podemos bajarnos la versión Plastic Valley: http://mrgroup.dyndns.org/mrgroup/doku.php?id=printing:tricks
Dependiendo de en que sistema lo instalemos , el proceso sera diferente:
Instalando en Windows
Si instalamos en Windows en fundamental utilizar el instalador. ¿Por que? Porque el instalador automáticamente revisa los drivers que tiene y implementa los que falta, algo que es bastante tedioso hacerlo a mano y nunca sabes si te falta uno.
http://replicat.org/download
Por ello , no confundirlo con el portable e instalarlo de aquí:
http://code.google.com/p/replicatorg/downloads/list?can=2&q=0034|
Si aun asi sigue sin reconocer la impresora, podemos probar a instalar los drivers del Sanguinololu(Sanquino):
http://sanguino.cc/useit
Lo normal es que no se coencte a la primera, pero probando muchas veces en alguna funciona
Instalando en Ubuntu
Para instalarlo en Ubuntu, aparte de bajarnos el portable(http://code.google.com/p/replicatorg/downloads/list?can=2&q=0034|)
solo tenemos que teclear en la terminal:
sudo apt-get install openjdk-6-jdk python python-tk python-psycoEsto instala el phyton y un openjava. Sin embargo, puede que este no funcione correctamente por lo que tecleariamos:
sudo add-apt-repository "deb http://archive.canonical.com/ubuntu natty partner" sudo apt-get update sudo apt-get install sun-java6-jreSi esto tampoco funciona, podemos probar a bajarnos Java directamente desde la pagina oficial:
www.java.com/
Instalación en Mac:
No lo he probado en Mac pero tengo entendido que no da problemas, dejo el enlace:
http://replicat.org/installation-mac
Instalación en Android
Todavia no disponible , pero gente trabajando en ello: https://groups.google.com/group/asrob-uc3m-impresoras-3d/browse_thread/thread/0c2c2998f0387d32?hl=es
Ubuntu en una lenteja

Debido a mi falta de espacio en el disco duro, decidí que si quería tener Ubuntu como sistema operativo no podía hacer una particion y instalarlo, si no que tenía que utilizar un dispositivo externo de memoria, en este caso un pendrive, para ello. Esta entrada trata sobre como conseguirlo.
Digo lo de la lenteja porque voy a instalarlo en un pendrive que es más pequeño que el propio puerto USB:

Materiales necesarios:
Dos pendrive(más de 4gb)
1 Imagen Iso de Ubuntu http://www.ubuntu.com/download/ubuntu/download
Programa Universal USB http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/
Lo primero que tenemos que hacer es con el Universal USB crear una Ubuntu Session Live en uno de los pinchos.

Reiniciamos el ordenador y arrancamos desde dicho Usb. Una vez dentro de Ubuntu, instalamos desde este en el otro de manera definitiva. Para hacer eso, cuando lo intentenmos nos dira que no es un fichero raiz. Para solucionar esto debemos formatearlo (aunque previamente estuviese formateado). Cuando todo el espacio del pendrive nos salga como espacio libre, ya podremos instalarlo. Ahora dicho pendrive sera como un disco duro externo.

Diferencias entre Ubuntu instalado y Ubuntu Sesion Live
Con la Session Live, cuando le damos a ejecutar, carga todo el SO en la memoria Ram, por lo que va muy rapido, pero los cambios que se pueden hacer son muy limitados, aunque le hayamos puesto al crear dicha sesion que se guardaran los cambios. En Ubuntu instalado, cada vez que tenga que acceder a memoria tardara un rato, ya que dependera de la velocidad del puerto USB. SIn embargo todos los permisos estaran habilitados y serán permanentes.
Entrada escrita desde Ubuntu.
sábado, 31 de marzo de 2012
Los fractales y las técnicas numéricas
La guerra de las raíces
Hace unos 4000 años, los matemáticos sumerios tenían un método por el cual podían calcular la raíz cuadrada de un número. Y lo hacían con un proceso iterativo de retroalimentación con un paso. Dado un número a, su raíz cuadrada podía calcularse con el siguiente proceso iterativo:
xn+1 = | 1 2 | (xn + | a xn | ). |
Para una estimación inicial dada, x0, iterar la ecuación y la secuencia de iteraciones converge en seguida con la raíz cuadrada de a. El método anterior de hallar la raíz cuadrada de un número es un caso especial de otro método más general de hallar las raíces de una ecuación no lineal, descubierto 4000 años después, denominado método de Newton para hallar raíces.
El método de Newton
El método de Newton es un procedimiento iterativo para hallar la solución de la ecuación F(x) = 0 mediante aproximaciones sucesivas, dada una estimación inicial. A partir de esta estimación inicial, por ejemplo, x0, se halla una mejor aproximación a la solución iterando la siguiente ecuación:
| xn+1 = xn - | F(xn) F¢(xn) | , |
donde F’ (xn) es la derivada de la función F(x) cuyas raíces hay que hallar. Suponiendo que la primera derivada existe, las iteraciones del proceso de retroalimentación se aproxima progresivamente a la solución.
En 1879, sir Arthur Cayley estudió el método de Newton y formuló la siguiente pregunta: ¿Qué cero de la ecuación z3 – 1 = 0 en el plano complejo convergería el método si uno comienza con una estimación inicial arbitraria? Los escritos de Cayley motivaron gran parte del trabajo de Julia. Sesenta años más tarde, Mandelbrot estableció la fundación de Geometría Fractal, consciente del trabajo realizado por Pierre Fatou y Gastón Julia sobre procesos iterativos en plano complejo.
¡No está mal para 4000 años de historia! Entonces, la cuestión está en determinar a qué raíz convergería el método de Newton si una comenzara con una estimación inicial arbitraria. Efectivamente, el método de Newton funciona, y muy ‘seguramente’ el proceso conduce a una de las tres soluciones (casualmente las raíces de la ecuación z3 – 1 = 0 son 1, exp2π/3 y exp4π/3). Así que la pregunta es: si una comenzase con un gran número de puntos en el plano complejo como estimación inicial al método de Newton, ¿cómo se distribuyen estas estimaciones iniciales en el plano complejo? Mostramos una distribución, con código de colores, de las estimaciones iniciales que conducen a una de las tres soluciones. Procede de un experimento por ordenador de la cuadrícula de 500x500 en el plano complejo, entre -2 y 2, ambos a lo largo de los ejes real (X-) e imaginario (Y-). Las estimaciones iniciales aparecen de color rojo, amarillo o azul dependiendo de si el punto inicial se aproxima a la solución 1, exp2π/3 y exp4π/3, respectivamente. Las coordenadas de las tres raíces están señaladas con un signo +.
1. Proyección de las cuencas de atracción, con código de colores, de raíces cúbicas de la unidad. Los límites de X e Y son X[-2, 2] e Y[-2, 2].
2. Zoom de la región X [-0’05, 0’5] e Y [-0’7, -0’1] a partir de la proyección anterior. Efectivamente, el límite de la cuenca está completo.
En el lenguaje de la teoría de sistemas dinámicos, las raíces pueden considerarse como atractores de punto y las regiones del plano complejo con un comportamiento asíntoto respecto a una raíz determinada son las cuencas de atracción de dicha raíz. A partir de la proyección anterior queda claro que hay un límite muy complejo que separa las cuencas de atracción de las tres raíces. Esta complejidad continúa existiendo incluso si nos fijamos en las minúsculas diferencias que hay entre los valores iniciales de la estimación; este límite nunca se suaviza, ni siquiera en estas pequeñas diferencias. Así, si nos acercásemos con un primer plano, veríamos que los límites tienen una estructura muy compleja, similar a un conjunto de Cantor. En otras palabras, siempre que dos cuencas parecen encontrarse, descubrimos tras examinarlas más a fondo que la tercera cuenca de atracción está ahí entre ellas, y así sucesivamente hasta el infinito. Este complejo límite es un límite fractal. La competición de las raíces para conseguir todos los puntos del plano dista mucho de ser sencilla.
Fuente:
http://chaos4.phy.ohiou.edu/~thomas/fractal/newton.html
viernes, 23 de marzo de 2012
Prusa Mendel 2: Primeros pasos
Lo más dificil de la recolección de los materiales necesarios fue el corte de las varillas:
Estos son algunos apuntes o "modificaciones" que hay que tener en cuenta si vas a montar la Prusa 2 y que yo me he ido encontrando con respecto a las instrucciones visuales.
Apuntes para Prusa 2
Paso 1: Montaje de los triángulos
Para este paso utilizaremos las 6 varillas roscadas de 370mm.
En la pagina 9: Aclaración. Con la Prusa dos ya tenemos las "patas" de serie en las escuadras asi que cogemos dos escuadras con patas y las que no llevan patas se dejan para la parte de arriba.
Las propias escuadras llevan indicaciones mostrando su orientación.
Paso 2 Varillas delanteras
Para este paso utilizaremos las 2 varillas roscadas de 294mm.
En la página 18: Modificación. Vamos a hacer el siguiente cambio:
Debemos sustituir el montaje que viene por defecto:
por este nuevo:
Con ello conseguimos que al no rozar la correa con la arandela esta no se desgaste. Ademas al quitarle la tuerca intermedia, los ejes con respecto al motor quedara mejor alineados.
Paso 3 Varillas traseras
Para este paso utilizaremos las 2 varillas roscadas de 294mm.
En la página 24: Modificación. Igual que antes, hacemos el siguiente cambio:
Debemos sustituir el montaje que viene por defecto
por este nuevo:
Con ello conseguimos que al no rozar la correa con la arandela esta no se desgaste. Ademas al quitarle la tuerca intermedia, los ejes con respecto al motor quedara
Paso 4 Varillas superiores
Para este paso utilizaremos las 2 varillas roscadas de 440mm.
No he encontrado ninguna modificación a hacer en este apartado.
Para este paso utilizaremos la varilla roscada de 440mm que sobra.
Debemos poner las varillas por debajo de los triángulos. Aquí te advierte que al ser una modificación reciente, en los siguientes pasos aparecerá por arriba.
Lo traduzco para mayor precisión
Insertar la varilla roscada 440 mm a través de las dos abrazaderas las barras en la parte inferior del marco. Asegúrese de que la varilla se situa en la parte inferior de la barra inferior del triángulo. Ajustese de modo que la misma longitud sobresalga en cada lado.
[Nota: de acuerdo con la edición # 10. Imágenes subsiguientes pueden mostrar que esta por encima de las barras, pero esto no es correcto.]
He pensado que ahora mismo la estructura parece una andamiaje para construir un RoboSapiens gigante:
martes, 13 de marzo de 2012
Concursos robóticos

Los concursos robóticos se están poniendo de moda. Con esta entrada intento hacer una recopilación de los principales concursos y los principales equipos que están compitiendo:
Concursos para universitarios
LIGA FANUC: http://lnrc.es/comp_lnrc.php
AESSBot
Campeonato de Euskadi
Ceabot
Cosmobot
CR JET
Robolid
Robotus
Concursos para alumnos de Bachillerato:
Galapabot: http://www.arcerobotica.org/portal2/index.php/competiciones/galapabot-12/
MadridBot
Malakabot
Concursos internacionales
Eurobot: http://www.eurobot.org/
Robocup: http://www.robocup.org/
Equipos
http://www.lne.es/verano/2011/07/31/robots-disenados-vencer/1109855.html
Equipo formado por un particular al que le gusta mucho construir robots y hacerlos competir
Últimos meritos del equipo:
1º en AESSBOT sumo (2012)
3ºen AESSBOT sumo (2012)
2º en Cosmocaixa Cosmobot Sumo (2012)
3º en Cosmocaixa Cosmobot Sumo (2012)
Robots del equipo:
- Smith xpc (velocista)
- Smith Speed (velocista)
- Smith Junior (sumo)
-Smith Molotov (sumo)
- Smith XXL (sumo)http://dpebots.com/principal.html
Últimos meritos del equipo:
3º en AESSBOT velocistas (2012)
2º en AESSBOT sumo (2012)
3º en Cosmocaixa Cosmobot Velocistas (2012)
1º en Cosmocaixa Cosmobot Sumo (2012)
Robots del equipo:
- Panzer (sumo)
- Batista (sumo)
- Max (sumo)
- Pepito 3º (velocista)
- Liebre (velocista)
- Veloli (velocista)
- ULTRA-JMV (sumo)
- Estorbot (sumo)
- Max (sumo)
http://www.ackstorm.es/
Equipo patrocinado por AckStorm
Últimos meritos del equipo:
1º en AESSBOT velocistas (2012)
Robots del equipo:
- Pegasus (sumo)
- Tamcar (sumo)
- Utsonomiya (velocista)
- R555 (velocista)
http://dani.foroselectronica.es/
RL-Racing equipo madrileño de Daniel Alvarez y Alberto Campo
Últimos meritos del equipo:
1 en Cosmocaixa Cosmobot Velocistas (2012)
Robots del equipo:
- Xoco (velocista)
- Piolin (velocista)
- Silvestre (velocista)
http://roboticamiranda.cepalencia.es/
Robótica Miranda es el nombre de un equipo de jóvenes que tiene como afición diseñar, construir y programar robots. Decidimos llamarlo así por dos simples razones: Robótica porque nos gusta trabajar en este campo, y Miranda porque el equipo se formó en el que fue I.E.S. Camino de La Miranda, o lo que hoy se llama Centro Específico de Formación Profesional de Palencia
Robots del equipo:
- Bufo (sumo)
- Rino (sumo)
- BullBot (sumo)
http://www.esibot.net/
Equipo formado por un conjunto de estudiantes de ingeniería de la Escuela Técnica Superior de Ingenieros de Sevilla.
Robots del equipo:
- SuperESIBOT (sumo)
Equipo Čapek
Equipo perteneciente al Grupo de Robótica de la Universidad de Deusto Participantes: Jonathan Ruiz de Garibay Ignacio Ortiz
Últimos meritos del equipo:
Robots del equipo:
- Sabueso (rastreador)
- Fireblade (rastreador)
Robots de la categoría sumo
Robots del equipo:
- Boc (sumo)
- Replegador (sumo)
- Summum (sumo)
sábado, 10 de marzo de 2012
Taller de robótica en la F11

Ayer estuve en el taller de robótica de Reset(clase F11)y estuve probando algunas cosas.
La primera fue desarrollar la oruga de Obijuan. Como todavía no tengo la impresora disponible hice los módulos con plantillas y la Dremel.
Estas son las fotos del desarrollo. Las plantillas como siempre están colocadas en el Thingiverse:
Plantillas ya hechas
Colocados los servos#include
Servo myservo; // crea un objeto tipo servo para controlar el servo
Servo myservo2; // crea un objeto tipo servo para controlar el servo
int pos = 90; // variable para almacenar la posición del servo
int pos2 = 90;
Servo myservo3;
int pos3 = 90;// crea un objeto tipo servo para co// crea un objeto tipo servo para co// variable para almacenar la posición del servo
void setup()
{
myservo.attach(9); // liga el servo conectado en el pin 9 al objeto servo
myservo2.attach(6);
myservo2.attach(10); // liga el servo conectado en el pin 6 al objeto servo
}
void loop()
{
pos2=180/2;
for(pos = 0; pos < 180; pos += 1) // va de 0 a 180 grados { // en pasos de 1 grado myservo.write(pos); pos2 -= 1; myservo2.write(pos2/2); // dice al servo que se posicione en la posición indicada por la variable 'pos' delay(15); myservo.write(pos);// espera 15 ms para dar tiempo al servo a llegar a la nueva posición } pos2=90; for(pos = 180; pos>=1; pos-=1) // va de 180 a 0 grados
{
myservo.write(pos);
pos2 += 1;
myservo2.write(pos2/2); // dice al servo que se posicione en la posición indicada por la variable 'pos'
delay(15);
myservo3.write(pos);// espera 15 ms para dar tiempo al servo a llegar a la nueva posición
}
pos3=90;
for(pos = 180; pos>=1; pos-=1) // va de 180 a 0 grados
{
myservo.write(pos);
pos2 += 1;
myservo2.write(pos2/2); // dice al servo que se posicione en la posición indicada por la variable 'pos'
delay(15);
myservo3.write(pos);// espera 15 ms para dar tiempo al servo a llegar a la nueva posición
}
}
Por otra parte estuve ayudando al control de servos continuos, que como ya tenia cierta experiencia, como puse en la entrada anterior. He hecho un programa muy simple para control de un servo continuo:
#include
Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
int pos = 0; // variable to store the servo position
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
pos=0;
myservo.write(pos);
delay(1000);
pos=180;
myservo.write(pos);
delay(1000);
pos=94;
myservo.write(pos);
delay(1000);
}












