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