Paso 9: programación.
Los próximos pasos irá a través de la programación básica y elaboración de la aplicación móvil. No realizar estos pasos demasiado largos, voy a compartir algunas de las secuencias de comandos para las funciones básicas que se pueden adaptadas para la mayoría robots utilizando la plataforma EZ-Robot.
E4-B4 programación y controles, usé EZ-constructor del EZ-Robot de software de Windows que usted puede obtener su propia copia de aquí. Aquí encontrarás todos los detalles de la utilización de la plataforma EZ-Robot, con tutoriales del uso de los controles y secuencias de comandos de escritura (algunos de los tutoriales que escribí yo mismo como una unidad de la comunidad para ayudar a otros). Así que aquí está programé B4 E4.
Después de abrir un nuevo proyecto de EZ-Builder, lo primero que tenía que hacer era configurar los servos. Como estoy utilizando el SSC-32, fue un poco de un procedimiento diferente de configurar directamente servos conectados a la EZ-B. Para empezar, una sola línea de script es necesario y tiene que ejecutar cuando el EZ-B v4 y SSC-32 se conecta a su proyecto de EZ-Builder...
#This es el script de inicialización para el ssc-32 conectado al puerto UART 0,
Esto sólo tiene que ejecutar una vez cada vez que el proyecto se abre y una conexión de #and se hace.
UARTInit(0,0,38400)
He añadido un "Script Manager" a mi proyecto que retituló "Menú de Control" y configurar los brazos retráctiles en el cuerpo. Por lo tanto, los brazos de la herramienta de utilidad utilizan el siguiente script...
IMPLEMENTAR #USB BRAZO
#Servo posiciones son P500 mínima que es igual a la posición del servo 1,
#and P2500 máximo que es igual a la posición del servo 180.
$pos = "P1400"
#The S700 es para velocidad de servo.
$m_speed = "S700"
UARTWrite(0,0,"#6"+$pos+$m_speed,13)
Nota: Usted verá un montón de los scripts que he publicado aquí, tienen un
# junto a algunos del código. Cualquier cosa que tiene este hash frente a ella, es una línea de guión que no funcionará y sólo se utiliza para hacer notas.
Debido a la forma que más servos digitales están diseñados, tienden a hacer un ruido de zumbido irritante cuando está en condiciones de explotación. Así que para combatir esto, he añadido algunas líneas adicionales de script que liberará un servo de su posición de celebración. Esencialmente, esto interrumpe la alimentación al servo y no tendrá ningún peso. Esto está bien para los brazos retractables horizontales y las aletas ya que no hay ningún peso para el servo mantener. Los scripts de liberación se utilizan principalmente en los comandos "Retraer el brazo" y "Cerrar solapa". Así que aquí está lo que la secuencia de comandos ahora parece...
Para el despliegue del brazo de utilidad...
#USB BRAZO RETRACCIÓN
#This retracción script se debe ejecutar primero para inicializar un servo después un comando servo.
$pos = "P600"
$m_speed = "S700"
control de velocidad #is
UARTWrite(0,0,"#6"+$pos+$m_speed,13)
Pequeño sueño de milisegundo 100 #A se agrega para la transición.
Sleep(100)
#Now el script DEPLOY puede funcionar con éxito.
IMPLEMENTAR #USB BRAZO
$pos = "P1400"
$m_speed = "S700"
UARTWrite(0,0,"#6"+$pos+$m_speed,13)
y para utilidad de brazo retractarse...
#USB BRAZO RETRACCIÓN
$pos = "P600"
$m_speed = "S700" #is control de velocidad
UARTWrite(0,0,"#6"+$pos+$m_speed,13)
#A sueño se añade para dar tiempo para que el brazo se retraiga.
SLEEP(4000)
LANZAMIENTO DE BRAZO #USB
#Notice "P0" abajo. Este es el único valor bajo P500 que pueden utilizarse. Esto libera el servo.
$pos = "P0"
$m_speed = "S700"
UARTWrite(0,0,"#6"+$pos+$m_speed,13)
La cúpula y el cuerpo también aletas uso scripts similares con sus posiciones mínimos y máximos ajustados para cada servo donde sea necesario. El primer director de la secuencia de comandos tiene cada escritura individual para cada acción individual, por ejemplo... La aleta abierta, aleta cerca, implementar herramienta, herramienta retraer y así sucesivamente. Esto también se hace para "encender" y "Off" y las lecturas del sensor de arranque y parada.
Para combinar los movimientos para la apertura de una aleta de luego implementar una herramienta de utilidad, un segundo administrador de script se agrega al proyecto de EZ-Builder. Voy a utilizar la herramienta de hub USB por ejemplo. En el administrador de script nuevo, que retituló "Menú de Control del maestro", se podía copiar y pegar los comandos de secuencia de comandos en el "Menú de Control", pero hay una manera más fácil. Cada vez que agregue una nueva secuencia de comandos de control, esto automáticamente genera algo que se llama un "comando de Control" también se llama un comando "Cheat Sheet". Estos son comandos de acceso directo para iniciar, detener, pausar y reanudar un script específico. Por lo tanto, para implementar el hub USB, yo uso el siguiente script...
ControlCommand ("Control menú", ScriptStart, "USB aleta abierta")
#This comando de sueño permite la aleta abrir antes de que el brazo se despliega.
Sleep(2000)
ControlCommand ("Control menú", ScriptStart, "el despliegue del brazo USB")
Y para retraer el hub USB, se utiliza...
ControlCommand ("Control menú", ScriptStart, "retracción del brazo USB")
Sueño de #This da tiempo suficiente para que la herramienta se retrae antes de la aleta se cierra.
Sleep(4000)
ControlCommand ("Control menú", ScriptStart, "Cerrar solapa USB")
El mismo se utiliza con todas las otras herramientas de utilidad, con la longitud de los comandos convencionales ajustadas para cada herramienta. (Para ser seguro y no correr el riesgo de dañar algo, sugiero para quitar la piel frontal para configurar y probar la combinación de scripts).
El servo de la cúpula está configurado diferentemente se conecte directamente a la
EZ-B, así que usa un guión diferente y más simple de los comandos de SSC-32 UART para el control manual. Para hacer un simple giro de la bóveda, puede utilizar el siguiente script...
#This comando ajusta la velocidad del servo.
#Servo velocidades van desde "0" que es el más rápido y "10" que es más lento.
#This ejemplo asume que el servo se conecta al puerto digital "D0".
Servospeed(D5,2)
#This comando indica cuánto grados deberá girar el servo.
#Servo centro posición es "90" con "1", siendo mínima
#and "180" siendo máxima.
Servo(D5,120)
En la interfaz móvil que puede utilizarse en un PC de dispositivo móvil, tengo un script que convierte a la cúpula de 10 grados en cada pulsación. Esto es útil si desea ver a través de cámara de E4-B4 en una PC o dispositivo móvil...
if(getservo(D13) > 10)
servodown(D13,7)
endif
Sleep(100)
Para alternar el parpadeo rojo y azul del LED, usar un script de bucle simple que parpadea entre rojo y azul cada dos segundos hasta que detener manualmente el script, yo utilizo un comando de control para hacer lo...
#This se supone que el LED rojo esté conectado al puerto digital D22 y D23 azul.
: lazo
Set(D22,on)
Sleep(2000)
Set(D22,OFF)
Sleep(30)
Set(D23,on)
Sleep(2000)
Set(D23,OFF)
Sleep(30)
Set(D22,on)
Sleep(2000)
Set(D22,OFF)
Sleep(30)
Set(D23,on)
Sleep(2000)
Set(D23,OFF)
Sleep(30)
Goto(Loop)
Uso del sensor de distancia ultrasónico en la garra de cerveza para reconocer cuando alguien esta cerca para dar o recoger un objeto. Esto disparará una secuencia de comandos de control para abrir y cerrar la pinza...
ControlCommand ("Tablero de charla al azar", Track_14)
Sleep(1500)
ControlCommand ("Master Control menú", ScriptStart, "El despliegue del brazo de cerveza")
Sleep(5000)
: lazo
# obtener la distancia del sensor ping
$distance = getping (d19, d20)
Si ($distance < 6)
ControlCommand ("Control menú", ScriptStart, "Garra de cerveza abierta")
Sleep(2000)
ControlCommand ("Control menú", ScriptStart, "Garra de cerveza cerca")
Sleep(2000)
ControlCommand ("Master Control menú", ScriptStart, "Retracción del brazo de cerveza")
ControlCommand "(la prueba de la cerveza del, ScriptStop)
endif
# Un retardo para evitar que la secuencia de comandos ejecuta demasiado rápido
Sleep(50)
goto(Loop)
Un script similar se utiliza para la evitación del objeto usando los sensores de ping en los pies cuando E4 se mueve. Si se detecta un objeto tal como una pared en el pie izquierdo, él pare y gire a la derecho, luego continuar moviéndose hacia adelante. Y si el pie derecho detecta algo, se pare, gire a la izquierda y avanzar.
Para algo diferente, te voy a dar un ejemplo del sensor de detección de humo y gas...
: lazo
$smoke=getADC(adc2)
if($Smoke>40)
saywait ("yo soy ahora de detección de humo o gases de humos en la zona.")
Sleep(10000)
elseif($Smoke>60)
saywait ("ADVERTENCIA. Yo ahora estoy detección de un aumento en el nivel de humo o gases de humos en la zona.")
endif
Sleep(100)
goto(Loop)
Este es otro ejemplo de secuencia de comandos. Cuando se alcanza un cierto tiempo, E4 se le recuerdan a alguien para tomar sus píldoras, entonces dispensarlos...
#The nombre de este script se llama "Pastillas".
waituntiltime (16, 35)
decir ("es 4 35 pm y el tiempo para su medicamento por la tarde.")
ControlCommand ("Tablero de charla al azar", Track_14)
Sleep(1500)
ControlCommand ("Master Control menú", ScriptStart, "El despliegue del brazo de cerveza")
Sleep(5000)
: lazo
$distance = getping (d19, d20)
Si ($distance < 6)
ControlCommand ("Control menú", ScriptStart, "Garra de cerveza abierta")
Sleep(2000)
ControlCommand ("Control menú", ScriptStart, "Garra de cerveza cerca")
Sleep(2000)
ControlCommand ("Master Control menú", ScriptStart, "Retracción del brazo de cerveza")
#This se detendrá esta secuencia de comandos de ejecución cuando se completa la acción.
ControlCommand ("Píldoras", ScriptStop)
endif
Sleep(50)
goto(Loop)
Sleep(2000)
Esta secuencia particular puede Agregar a una navegación y escritura reconocimiento de cara, E4 puede navegar y encontrar a la persona (siempre que cara de las personas ha sido añadido a la biblioteca de reconocimiento facial de E4-B4), luego dispensar las pastillas a la hora establecida.
Reconocimiento de voz es un sistema bastante sencillo de configurar para ejecutar secuencias de comandos. Esto se puede utilizar para ejecutar prácticamente cualquier script o comando en proyecto de E4. Mientras el equipo su uso ha sido configurar correctamente y entrenado para el reconocimiento de voz, y utiliza un buen micrófono, simplemente escribe en una frase lo que sería decir al robot, luego añadir el scrip comando a ejecutar cuando se reconoce esa frase. Aquí, puedes escribir la que necesita de la escritura de comandos, o use los comandos de control.
Como se mencionó, estos son sólo unos cuantos ejemplos de script simple que utiliza E4-B4, pero también tiene toneladas más como reconocimiento de objetos y color, programa traductor chatbot y texto y un generador de personalidad que ayuda a da capacidades autónomas de E4. Más detalles de qué controles y habilidades disponibles a utilizar y con muchos ejemplos de secuencia de comandos que pueden ser utilizados, cambiados o adaptados para la mayoría de los robots, se pueden encontrar en la Web de EZ-Robot. Estoy construyendo en programa autónomo de E4-B4 poco a poco, así que un día que será capaz de auto muelle y cargar sus baterías y hacer barridos de seguridad al azar de la casa. Ya tiene un sistema de seguridad para el hogar en el lugar, donde puede tomar acción (como alertas me en Twitter y streaming de un video live feed, o sonido de inicio una alarma y tomar y enviar fotos) si se detecta un ruido, una luz se enciende cuando no se espera que, o su sensor PIR se dispara.
Como he dicho, yo pude ir en el listado todos los scripts aquí en este Instructable, pero esto haría que el Instructable muy largo como B4 E4 tiene toneladas de código programado. Recuerde, si usted tiene alguna pregunta sobre cualquier cosa sobre construcción o programación E4-B4, no dude en preguntar y yo haremos mi mejor para responder a usted. También puede tener un vistazo a uno de los proyectos de E4-B4 por haciendo clic aquíy abrir el archivo con el EZ-constructor. Estos proyectos fueron hechos disponibles para compartir con nadie y contienen una gran cantidad de los controles y programación de secuencias de comandos que se utilizan, incluyendo el objeto y el reconocimiento facial de programación se ve en los videos.