Siguiendo con la saga de programa hechos especialmente para aplicar el brazo robot, este es el segundo.
El primero fue este que fue simplemente que autoit presione una tecla del móvil para enviar un sms.Primera aplicación del robot usando el movil
Como la anterior, esta está hecha para niños, en el sentido de mostrar una máxima simplicidad en el código para permitir a otros evolucionar y adaptar este para otros usos. (Si quiere, puede publicar el código y el video youtube de lo que hace el brazo aquí)
Parece ser que Jonny tenía problemas para crear el programa OCR-CAM, así que ya está aquí, ya si lo deseas puedes modificarlo, (ver tema OCR CAMARA), y complicarlo agrupando conjuntos de variables (o matrices) con conjuntos de pixeles con valores concretos, y así hacer simbolos más complejos como números o letras por ejemplo.
Publicando programa y video proximamente:
![:smt023](./images/smilies/023.gif)
![:smt023](./images/smilies/023.gif)
Puedo usar cualquier ventana de camara.
Si uso un programa como el messenger entonces puedo dar ordenes al Autoit Remotamente desde la cam.
Puedo usar el script de reconocimiento de voz y decir "Pulsa", para que el robot pulse el botón.
Salu22:)
Código: Seleccionar todo
;Programa Robotlearningtoanswer.au3 Creditos BasicOs - www.Autoit.es - Programa para mostrar como se puede gestionar un brazo robot con Autoit
; Aprende un simbolo que se le muestra (un color) para identificarlo más tarde y mover el brazo (por ejemplo apagar la luz)
; Learns a color and wait it to be shown to execute a trigger moving robot-arm and switching lights off
; Programm to show how you can manage a trigger at Owi Robot by Autoit
; Envia una tecla a la interface. Se usan unas coordenadas exactas (atención a las coordenadas relativas o absolutas en OPT)
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
HotKeySet("{ESC}", "Salir")
Opt("SendKeyDelay", 10)
Opt("SendKeyDownDelay", 80) ; para no apagar y encender el motor cada vez hay que "mantener el send con esto", para recorridos largos del motor subir hasta 1000 (1 segundo)
Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",4)
Opt("MouseCoordMode",1)
;;;;;; Localizo ventana de la camara y la activo
WinActivate("tituloventana")
WinWaitActive("tituloventana")
;;;;;; Enseñando al robot
MsgBox(0,"Brazo Robot Aprende", "Señale con el ratón el lugar del simbolo sin hacer click, y acepte para confirmar el color como señal")
$Pos = MouseGetPos()
$PosPixelX=$Pos[0]
$PosPixelY=$Pos[1]
MouseMove($PosPixelX+2,$PosPixelY+2) ; muevo ratón justo debajo del pixel a controlar
$ValorqueAprendeelPrograma=PixelGetColor($PosPixelX,$PosPixelY); un valor a adriestrar al programa, puede ser por ejemplo una cartulina o la oscuridad.
MsgBox(0,"Brazo Robot Aprende en"&$PosPixelX+1 & "," & $PosPixelY+1, "Ya ha aprendido "&$ValorqueAprendeelPrograma&". Ahora Acepte para estar a la espera de que le muestre el simbolo de nuevo para ejecutar el programa (y apagar la luz)")
;El robot está a la espera de que se muestre el simbolo
While 1
if $ValorqueAprendeelPrograma=PixelGetColor($PosPixelX,$PosPixelY) then
Beep(500, 1000)
MsgBox(0,"Exito","Encontrado Simbolo pasamos a ejecutar",5)
While $ValorqueAprendeelPrograma=PixelGetColor($PosPixelX,$PosPixelY)
sleep(2000) ; cada 2 segundos hasta que deje de existir el simbolo
WinWait("Robotic Arm","")
If Not WinActive("Robotic Arm","") Then WinActivate("Robotic Arm","")
WinWaitActive("Robotic Arm","")
send("U")
Wend
endif
Sleep(100)
WEnd
Func Salir()
Exit
EndFunc
Actualización: Nuevo código y videos más actualizados,
actualización DEL CÓDIGO en el siguiente post
Lo que hace el programa:
1.- Hasta el segundo 22 Aprende LAS ORDENES: que con la mano avanza el brazo, y con el movil se para y finaliza
2.- Luego OBEDECE A LA ORDEN está a la espera de usar lo que ha aprendido para ejecutar los movimientos apagando la luz desde el messenger a distancia.(También se puede usar el script para identificar temperatura por ejemplo en el google-applet del clima o una pagina del tiempo, y ejecutar un programa, que por ejemplo, enciende la calefacción: