Modificando o S4A.
As alocações de entradas e saídas do S4A podem ser alteradas.
Podemos realocar a saida originalmente alocada a um servomotor contínuo, e transforma-la em uma saida para servo motor comum.
Os detalhes estão neste link.
http://www.arduteka.com/2013/01/modificar-el-codigo-de-s4a-y-del-firmware/
Código S4A
Para modificar el código S4A necesitamos conocer como movernos entre las clases y sus métodos.
Acceso al código:
Para ver el código fuente de S4A arrancaremos S4A y manteniendo pulsada la tecla mayúsculas pulsaremos con el ratón en el menú Archivo, la penúltima opción es salir de modo usuario, la seleccionamos y aparecerá una recuadro blanco alrededor de la ventana S4A.
Haciendo click con el botón adecuado (normalmente el botón derecho) del ratón aparecerá este menú desplegable:
Seleccionando la opción open y dentro de esta la opción browser, llegamos al código fuente que tiene esta pinta:
Vemos cuatro cajas, en la izquierda están las clases, en la siguiente están los Sprites (que como no se lo que son mejor no digo nada), la tercera contiene los grupos de métodos y la cuarta (la de la derecha) contiene los métodos de la clase.
En este caso tenemos seleccionada la clase S4A (casi todo el código de modificación de Scratch para crear S4A está en este clase).
En la caja de la derecha está seleccionado el método digitalOn y en la parte inferior vemos el código de este método.
Este método activa una salida digital de la placa Arduino.
Podemos comprobar que recibe un argumento (t1 que es el pin seleccionado en S4A el 13 el 11 o el 10) y lo que hace es llamar al método actuatorStateAt pasando dos argumentos: t1 y el número 1, esto en Arduino pondrá un 1 en la posición del array states asignada al pin 13 (o al 11 o al 10 según t1).
States es el array donde se guardan los estados de los pines.
Los pines que se utilizan en Arduino con S4a van del 4 al 13 que se corresponden con las posiciones 0 a 9 en el array states.
Todo muy fácil!
En el tutorial sobre el código fuente de Scratch tenéis más información sobre las clases y métodos.
Modificar el código
Para modificar el código sólo hay que editarlo cambiando lo que queramos.
Una vez modificado el método deberemos comprobar que no hay errores de sintaxis, para esto haremos click con el botón adecuado en la caja de código para obtener el menú desplegable:
Y pulsaremos sobre la opción accept. Si hay errores nos los mostrará y habrá que corregirlos.
Cuando la modificación ha sido aceptada podemos guardar el código (haciendo click en la ventana blanca que rodea la ventana de S4A para obtener el menú desplegable) y seleccionando la opción save.
Esta opción nos generará un par de Warnings al no encontrar el fichero de fuentes (Squeak cannot locate the sources file…) ni el fichero de cambios (Squeak cannot locate the changes file…).
Pulsando sobre OK continua el proceso.
Ahora ya podríamos acceder a otro método (otra clase) para seguir con las modificaciones.
Finalmente, cuando terminemos todas las modifiaciones, pulsaremos (con la tecla mayúsculas pulsada) sobre el menú Archivo para ir a la opción Entrar a modo usuario y cerrar S4A.
Si todo ha ido bien tendremos una versión de S4A modificada con funcionalidades diferentes.
Al grano
Queremos modificar S4A para que podamos utilizar 10 salidas digitales y quitar las 4 de motor y las tres salidas analógicas.
Lo primero utilizaremos una copia de S4A para mantener el original y actuaremos sobre esta copia. A esta copia la llamaremos S4A-sd.
Abrimos S4A-sd, salimos de modo usuario (Mayúsculas – Archivo), entramos en browser (botón adecuado-en margen blanco-open-browser).
Las modificaciones que tenemos que hacer son pocas y sencillas:
- Eliminar las salidas (analógicas y de motor) que no se podrán emplear. Empezamos por el método blockSpecs del Sprite ArduinoScratchSpriteMorph de la clase S4A (hay que pulsar sobre el botón class y no sobre el instance) como se ve en la imagen:
- Este método es el encargado de mostrar las piezas de puzzle, aquí borraremos las líneas correspondientes a analog, motor y servomotor (marcadas en color en la imagen). Una vez guardados los cambios podemos ver que si en el menú desplegable elegimos la opción open-S4A ya no veremos las piezas de salida analógica ni las de motor.
- Ampliar el listado de salidas en las opciones digital encendido y digital apagado. Esto lo encontramos en el método digitalPinNumbers del Sprite ArduinoScratchSpriteMorph de la clase S4A:
- Escribiremos en la caja inferior todos los pines que faltan para estén del 4 al 13.
Una vez aceptados y guardados los cambios podemosver que S4A tiene la apariencia de la imagen.
No es necesario hacer más cambios, si recordamos el código del método digitalOn lo único que hacia es pasar los argumentos t1 y el número 1 para digitalOn y el número 0 para el método digitalOff.
Con esta modificación este método tiene más opciones en el primer argumento (ahora puede pasar 10 valores diferentes frente a los 3 de antes).
Ahora queda modificar el firmware de Arduino para que pueda reconocer estos nuevos valores de este método.
El proceso de cambio se pueden ver en este vídeo.
Modificación del firmware Arduino
Las modificaciones que vamos a hacer dentro en el código del firmware son muy pocas.
Primero veremos la parte del código que gestiona las salidas digitales:
Tenemos la función configurePins, en la que vamos a cambiar la configuración de los pines del array outputs que están como: “a (analógico)” , “c (motor)” o “s (servo)”, vamos a cambiarlas a “d (digital)”
Como vemos, hemos convertido todos los pines desde el 4 hasta el 13 en digitales.
Podríamos modificar las funciones que controlan las salidas para eliminar los condicionales de las salidas a, c y s (analógicas, motor y servo) pero no es necesario, esas condiciones no se cumplirán nunca y no hace falta modificar nada.
Con esto ya tenemos todas las modificaciones necesarias para utilizar la versión S4A con 10 salidas digitales.
Espero que os haya servido!!
Te esperamos en el foro!!
http://www.arduteka.com/foro
- Robótica na Educação
- Utilização de LEGO, Arduino e Scratch na educação
- LEGO
- Arduino
- S4A
- S4A Conexões
- Modificando o S4A.
- Minibloq
- Curiosidades, macetes, hacking.
- Outros sistemas de programação, orientados a objet
- Arduino - Programas em C
- Pinos do Arduino
- Várias entradas e saídas para o Arduino
- Livros
- Softwares de programação visual
- Scratch
- Robos feitos com sucata
- Coisas doidas
- Outros sistemas de montagem
- Literatura relacionada
- Tutoriais
- Glossário
- Programas
- Trabalhando com imagens
- Área Reservada
- Contactos