Copyright

Atención, queda totalmente prohibida la reproducción del contenido de este blog en otros medios, foros, webs, etc. Está prohibido subirlo a Taringa y portales similares. Si lo deseas, puedes enlazar a esta página, pero por favor, no la copies y te atribuyas los meritos como ya me ha pasado con anterioridad. Todos los post de este blog quedan registrados automáticamente en Safe Creative. En caso de copia se tomaran las medidas legales que sean necesarias.

Debe quedar claro que puedes usar el contenido de este blog para fabricar tus propios pedales, puedes hacerlos a tu gusto, utilizar y modificar el diseño del circuito, cambiar el código de la aplicación a tu gusto, utilizar partes de este proyecto en tus propios proyectos, aunque no tengan que ver con pedales... lo único que pido es que no copies los post y los pegues en otras webs, pues gracias a estos proyectos saco unos céntimos que, estando parado casi todo el año, vienen bien. Gracias.

Secciones - Utiliza este menú para desplazarte por las páginas del blog

miércoles, 7 de mayo de 2014

Código para Arduino

Pues este es el código necesario para hacer funcionar el circuito. Puede parecer complicado, pero realmente, es más fácil de lo que parece. Después de las barras dobles (//) comento lo que es cada linea. Cualquiera que sepa algo de programación, entenderá rápidamente el código. Para los que no tienen ni idea, más abajo intentaré explicar lo que hace cada línea. Si realmente queréis aprender a usar Arduino, deberéis aprender algo de electrónica y programación. No digo que hagáis una carrera de cada tema, pero unos cursos básicos vendrían bastante bien. Sin ellos, no lograréis jamás hacer gran cosa, vamos, que os pasará como a mí :D De programación, con leer algo sobre "Fundamentos de programación" puede ser suficiente. He visto un pequeño curso en:

http://es.wikibooks.org/wiki/Fundamentos_de_programaci%C3%B3n

De electrónica, no puedo deciros mucho, apenas estuve un par de meses en clases de un curso de FP. Lo poco que se lo he aprendido de la red.

En fin, vamos con el código. Una cosa muy importante, Arduino diferencia las mayúsculas de las minúsculas,  por lo que "Serial" y "serial" son dos palabras absolutamente diferentes. Hay quien piensa que esto es bueno, yo no le veo nada bueno, pero que le vamos a hacer.

int pulsadorDer = 4; //Entrada del botón derecho
int pulsadorIzq = 5; //Entrada del botón izquierdo
int valuepulsadorDer = 0; //Almacena el estado del botón derecho
int valuepulsadorIzq = 0; //Almacena el estado del botón izquierdo

void setup() //Función para la configuración
{
Serial.begin(9600); //Configuramos el puerto serie
}

void loop() //Función que se repite constantemente
{
  valuepulsadorDer = digitalRead(pulsadorDer); //Guarda el estado del pulsador conectado en 4
  valuepulsadorIzq = digitalRead(pulsadorIzq); //Guarda el estado del pulsador conectado en 5

  if (valuepulsadorDer == 0) //Si pulsador derecho no está pulsado
    {
    Serial.print(1); //Imprime por el puerto serie 1
    }
  if (valuepulsadorDer == 1) //Si pulsador derecho está pulsado
    {
    Serial.print(2); //Imprime por el puerto serie 2
    }

  if (valuepulsadorIzq == 0) //Si pulsador izquierdo no está pulsado
    {
    Serial.print(3); //Imprime por el puerto serie 3
    }
  if (valuepulsadorIzq == 1) //Si pulsador izquierdo está pulsado
    {
    Serial.print(4); //Imprime por el puerto serie 4
    }
}

Vamos con la explicación del código. Como digo, si no tienes ni idea de programación, puede parecerte complejo.

En las cuatro primeras lineas declaramos cuatro variables. Esto son, por decirlo de una forma que lo entiendas,  palabras que almacenan una información que puede variar mientras se ejecuta el código. En realidad, no son palabras, son posiciones de memoria.

En "pulsadorDer" almacenamos un cuatro, pues recuerda, en el circuito usamos la entrada 4 de la placa para conectar el botón derecho. Al igual, en "pulsadorIzq" almacenamos un cinco, para referirnos a la entrada número 5 en la que conectamos el botón izquierdo. Después usamos dos variables más, "valuepulsadorDer" y "valuepulsadorIzq" con un valor inicial de 0. El valor de estas variables será 0 cuando el botón no esté pulsado, y será 1 cuando el botón esté pulsado.

A continuación viene la función "setup" que la utilizamos para configurar parámetros como velocidad, salidas... Por el momento, poco que explicar de esta función. Solo decir que configuramos la velocidad del puerto serie a 9600 baudios.

Las funciones tienen una estructura. Primero está el nombre de la función seguido de (), luego, entre llaves { y } metemos el código de esa función. Dentro de "()" pasamos valores que tendrían las variables, pero por el momento no lo vamos a usar. Como digo, una buena dosis de fundamentos de programación te facilitaran mucho entender todo esto. Si no tienes ni idea y encima te guías por los conocimientos de un pésimo profesor como yo, lo llevas claro :D.

Ahora viene la función "loop". Esta función se repite constantemente y es donde escribiremos la mayor parte de nuestros códigos.

Dentro de dicha función comprobamos constantemente si alguno de los pulsadores está pulsado. Como he dicho, la función se repite constantemente, por lo que comprueba si hay pulsado algún pulsador muchísimas veces por segundo.

Empezamos diciéndole que almacene en la variable "valuepulsadorDer" el estado de la entrada digital (digitalRead) número "pulsadorDer", es decir, de la entrada digital 4. Recuerda que "pulsadorDer" es una variable que declaramos al principio del código y le asignamos el valor 4 porque era la entrada donde llegaría la señal LOW o HIGH del pulsador derecho.

Para el pulsador izquierdo hacemos lo mismo, le decimos que almacene en "valuepulsadorIzq" la "digitalRead" o entrada digital número "pulsadorIzq", que era el número 5, el estado del pulsador izquierdo. ¿Fácil no?

Bien, una vez que hemos almacenado el estado de cada pulsador, tenemos que realizar una acción dependiendo del estado. Para ello usaremos una serie de Condiciones IF.

Las condiciones IF realizan una acción si se cumple una condición. Siguiendo donde lo dejamos en el código, tras almacenar el estado de cada pulsador en las variables, ahora debemos averiguar cómo están los pulsadores y realizar la acción dependiendo del valor. Nuestra primera Condición IF dice:

Si (pulsador derecho es igual a 0)
{
Envia por el puerto serial un 1
}

Si el pulsador no está pulsado, el valor de "valuepulsadorDer" es 0, si está pulsado sería 1. Lo mismo para "valuepulsadorIzq", si está pulsado es 1 y si no es 0.

El código anterior es igual a esto:

  if (valuepulsadorDer == 0) //Si pulsador derecho no está pulsado
    {
    Serial.print(1); //Imprime por el puerto serie 1
    }

Debajo de esta Condición IF, preguntamos si el valor del pulsador derecho es 1, en tal caso, enviamos un 2. La siguiente pregunta Condición IF pregunta si el pulsador izquierdo está pulsado. Si  no lo está, envía un 3 y si lo está, envía un 4.

Por el puerto serial, sin pulsar ningún pulsador, estamos mandando constantemente lo siguiente:

...131313131313131313131313131313... (El 1 porque el pulsador derecho no está pulsado y el 3 por el pulsador izquierdo, que tampoco está pulsado).

Si en algún momento pulsamos el pulsador derecho durante un instante, mandaríamos:

...131313131313232323232313131313... (Aparece el 2 mientras tengamos pulsado el pulsador derecho, pero el estado del izquierdo, al no estar pulsado seguiría siendo 3).

Si en vez de pulsar el pulsador derecho, pulsamos el izquierdo, estaríamos mandando:

...13131313131414141414141313131313... (El 1 por el pulsador derecho que está sin pulsar y el 4 por el izquierdo que está pulsado).

Hasta aquí llegamos con el código para la placa Arduino. Ahora tenemos que saber cómo subirlo a la placa.

Abre el entorno de programación de Arduino, después copia y pega el código o tecléalo tú mismo:




Una vez tecleado o copiado, debes pulsar el botón del entorno de programación de Arduino para verificar el código. Esto se hace para comprobar que no hay errores. En la siguiente imagen, el botón está en "A" y en "B" tenemos el resultado, que no ha dado error. Si diera algún error, habría que revisar el código en busca del fallo. Puede ser un ; olvidado, una variable que tenga mayúsculas y la usamos en minúscula...


Lo tercero es enviar el código a la placa Arduino. Para ello, conectamos el cable al puerto USB (usa siempre el mismo puerto) y le damos al botón enviar, que se encuentra a la derecha del botón "A" con el que verificamos el código.

Ahora el código estará subido a la placa, tarda unos segundos porque es un programa muy corto.

¿Cómo se que esto está funcionando? Como todavía no hemos preparado la aplicación en Visual Basic 6, podemos ver esto de la siguiente forma.

Con el circuito conectado al puerto USB, vamos al menú "Herramientas/Monitor Serial". Se abrirá una ventanita que mostrará lo que se está recibiendo por el puerto serial. Cuando pulses algún pulsador, verás que los valores que se reciben cambian.

Siento no poder poner una imagen de esto, pero abriendolo vosotros mismos lo veréis. Ya he desmontado el circuito y empezado otro, es un coñazo desmotar lo que tengo realizado para una sola imagen. Solo tenéis que pulsar en ese menú para ver lo que se está enviando por el puerto serial. Al pulsar algún pulsador varia el valor y lo veréis en la misma pantalla. Si el circuito y la placa no están conectados, no se abrirá la ventana y dará error.

Si no sale en nada en la ventana del Monitor Serial, tendrás que revisar el código y el circuito en busca del error. Puede ser un cable que no haga contacto, que lo hayas conectado en otra hilera sin querer, que el pulsador esté dañado... Hay que tener paciencia y revisar.


Hasta aquí la parte del código para Arduino. En la próxima entrada nos iremos a Visual Basic 6 para preparar la aplicación que bajara o subirá las páginas.

No hay comentarios:

Publicar un comentario