Tuto Arduino

Thegjv

Moder fav <3
Miembro del equipo
Moderador
Noderador
Nodero
Noder
¿QUÉ ES ARDUINO?


Antes de empezar quiero explicar el concepto de software libre, también llamado “open-source” o de código abierto. Los

programas de este tipo ponen a disposición el código para que cualquier programador pueda utilizarlo y modificarlo como quiera.

En los últimos tiempos también ha empezado a desarrollarse el hardware libre cuyas especificaciones y diagramas esquemáticos

son de acceso público para que cualquier persona pueda construirlos o modificarlos sin pagar ningún derecho de patente.

Arduino es una plataforma de electrónica "open-source" que promete ser una forma sencilla de realizar proyectos interactivos para

cualquier persona. Internet está literalmente plagado de proyectos con Arduino y las instrucciones para montarlos.

Como es "open-source", cualquiera que se quiera hacer una placa puede hacerlo. Por ello tenemos Arduino de todos los colores,

tamaños y con funciones de lo más diverso.

El hardware Arduino más sencillo consiste en una placa con un microcontrolador y una serie de puertos de entrada y salida. Os dejo

por aquí un link de pccomponentes donde se puede adquirir este hardware.



ALIMENTACIÓN DE ARDUINO ONE



Podemos dar energía a Arduino de tres formas:

1. Con el cable USB. Tiene el inconveniente de que Arduino tiene que estar conectado a un ordenador u otro dispositivo.

2. Con el Jack de alimentación de Arduino.

3. Con el pin Vin.

Para el caso del Jack de alimentación y el pin Vin, se debe alimentar con un voltaje de alimentación entre 7 voltios y 12 voltios. No

hay problema con el voltaje sobrante de 7 voltios ya que Arduino tiene un Regulador que lo reduce a 5 voltios, sin embargo, ese

voltaje sobrante se desperdicia y disipa en forma de calor.

En conclusión, lo ideal es alimentar con un voltaje mayor que 7 voltios pero lo más próximo a éste. Según las características de

Arduino ON, podría llegar a aguantar hasta 20 voltios, por encima de ese voltaje quemamos la placa seguro.



ALIMENTACIÓN DE ELEMENTOS EXTERNOS CON ARDUINO ONE




Aunque los elementos de cualquier circuito pueden alimentarse con pilas, Arduino tiene dos pines que permiten alimentar el polo positivo de un circuito: un pin de 5V y otro pin de 3,3V. Para conectar al negativo podemos utilizar cualquier pin identificado con GND (ground o tierra).



ENTRADAS Y SALIDAS EN ARDUINO ONE



ENTRADAS/SALIDAS DIGITALES


Estos pines son los pines del 0 al 13 de Arduino y se llaman digitales porque sólo pueden tener 2 valores:

-Apagado (LOW) = 0 voltios

-Encendido (HIGH) = 5 voltios

Los pines digitales 0 y 1 están marcados como RX y TX. Estos pines están reservados para la comunicación serie y no deben ser

usados, ya que pondrán a Arduino en modo de espera hasta que se reciba una señal.

Ya que estos pines pueden servir para entradas y salidas, lo primero que hay que hacer para usar un pin digital, es configurar el

modo de trabajo del pin. Esto se hace siempre en la función setup(). Un pin digital tiene sólo dos modos, OUTPUT (salida) e INPUT

(entrada).

Ejemplos:

La instrucción pinMode(6,INPUT) configura el pin 6 para recibir señales de fuera.

La instrucción pinMode(4,OUTPUT) configura el pin 4 para mandar señales de fuera.

Una vez configurado el modo de trabajo del pin, dentro de la función loop() ya podemos trabajar con los pines.



Entrada Digital

Si hemos elegido el modo INPUT, la instrucción digitalRead(6) leerá el voltaje que hay en el pin 6. Aunque no hay exactamente un

valor límite, con un voltaje de menos de 1,5 voltios nos aseguramos de que Arduino lo tomará como LOW y con un

voltaje de más de 3,3 voltios de que será considerado como HIGH.

Ejemplo: variable = digitalRead(6)

No tiene sentido utilizar esta instrucción sola ya que el valor obtenido se perdería. Los valores de las funciones Read

suelen guardarse en una variable para poder usarlo después.



Salida Digital

Para conectar cualquier elemento actuador (luz, motor, zumbador, etc...) a una salida de Arduino, tenemos que utilizar como

positivo un pin de salida de Arduino, y como negativo cualquiera de los pines identificados con GND.

Con la instrucción digitalWrite(8,HIGH) mandaremos un voltaje de 5 voltios al pin 8 y el elemento conectado funcionará, mientras

que con la instrucción mandaremos un voltaje de 0 voltios y el elemento conectado se apagará.





SALIDAS ANALÓGICAS


Se pueden utilizar los pines 11, 10, 9, 6, 5 y 3, si os fijáis tienen el símbolo ~ al lado. Ya sabemos que estos pines también pueden funcionar como salidas o entradas digitales.

Para mandar una señal analógica se utiliza la instrucción:

analogWrite(pin,valor)

Valor puede variar entre 0 y 255 donde 0 equivale a o voltios y 255 a 5 voltios.

Ejemplo:

La instrucción analogWrite(11,100) mandará una señal de 100 por el pin 11. Una valor de 100 significa una señal de 1,96 voltios. Lo

podemos saber con una simple regla de tres.

255 - 5 voltios

100 - X



ENTRADAS ANALÓGICAS (ANALOG IN).


Son las entradas: A0, A1, A2, A3, A4 y A5. Se utilizan para que entre una señal de un sensor analógico, tipo un potenciómetro o un

sensor de luz o temperatura.

analogRead(pin)

Ejemplo.

La instrucción variable = analogRead(A2) lee el valor de la entrada A2 y la asigna a una variable.

Cualquier entrada analógica de Arduino recibe un voltaje entre 0 voltios y 5 voltios y lo transforma en un valor entre 0 y 1023.



0 voltios Equivale a 0

2,5 voltios Equivale a 511

5 voltios Equivale a 1023



PROGRAMACIÓN CON EL LENGUAJE IDE DE ARDUINO




Al abrir un nuevo programa de Arduino, tenemos dos funciones/procedimientos:



La función setup() se lee una sola vez, cuando el programa empieza.

Se utiliza para inicializar los modos de trabajo de los pins, o el puerto serie. Así mismo se puede utilizar para

establecer el estado inicial de las salidas de la placa. Debe ser incluido en un programa aunque está vacía.



La función loop() se repite indefinidamente y en ella se escribe el programa principal que hará funcionar a

Arduino.



En el lenguaje de programación de Arduino todas las instrucciones dentro de las funciones finalizan con el símbolo ;

Para ejecutar el programa y mandarlo a Arduino, basta con pulsar el icono con una flecha apuntando hacia la derecha que se encuentra

en la esquina superior izquierda.






(Sigo en los comentarios)
 
Última edición:

Thegjv

Moder fav <3
Miembro del equipo
Moderador
Noderador
Nodero
Noder
PAUSAS

Las pausas se generan con la instrucción:

Delay(milisegundos)


LOS CONDICIONALES


Los condicionales son las estructuras de programación más importantes en cualquier lenguaje de programación.

if (condición) {
....
}

Si se cumple la condición, se ejecuta el código contenido entre llaves { }, en caso contrario,
este código queda sin ejecutar y se pasa a la instrucción siguiente de la llave }

Ejemplo:

if (variableA < variableB) {
digitalWrite(5, HIGH);
}


Si el valor de la variableA es inferior al de la variableB, enciende elemento conectado al pin 5.
Para las condiciones se pueden utilizar los siguientes comparadores:

Ver el archivo adjunto 275

Si queremos que se cumplan varias condiciones podemos utilizar los llamados operadores lógicos booleanos:

Ver el archivo adjunto 276

Ejemplo:

if (variableA > variableB && variableC > variableD) {
digitalWrite(3, HIGH);
}


Si el valor de variableA es mayor que el de variableB y el valor de variableC es mayor que el de variableD,
enciende el elemento conectado en el pin 3.
El operador “if” puede ser complementado con el operador “else” (sino...):


if (condición) {
....
}
else {
....
}


Si se cumple la condición, se ejecuta el código contenido entre llaves { } del if, en caso
contrario, se ejecuta el código contenido entre llaves { } del else.

Podemos complicar esta estructura de control un poco más con la inclusión de una condición dentro del if, else, else if.
El ejemplo siguiente muestra el uso de esta nueva condición:


if (condicción1) {
código1....
}
else if (condición2) {
código2....
}
else {
código3....
}



Si se cumple la condición1 se ejecuta el código1, en caso contrario, si se cumple la
condición se ejecuta el códig2, y si no se cumple ninguna de las anteriores se ejecuta el
código3. Se pueden poner tantos else if como uno quiera.


LAS ESTRUCTURAS EN BUCLE (LOOPS)


Las estructuras en bucle (loops en inglés) realizan una tarea de manera repetitiva hasta que ésta se ha completado.
Arduino maneja tres estructuras en bucle diferentes: for, while y do while.


El bucle “for”



Este tipo de bucles se utiliza para ejecutar un bloque de código un cierto número de veces.
La función for tiene la siguiente estructura:
En general se usan con un contador incremental que va aumentando hasta alcanzar un valor prefijado momento en el que el bucle
se da por terminado.


for (inicialización; condición; incremento){
....
}

La inicialización sólo sucede una vez al comienzo del bucle. En ella se inicializa y se asigna un valor a una variable que
irá incrementando su valor. Tradicionalmente los programadores usan la variable i.
La condición, si se cumple se ejecutará el código que hay entre llaves. Lo normal es que en esa condición intervenga la variable inicializada.
El incremento determina cuando va aumentar la variable inicializada en la siguiente repetición.

for (int i = 0; i < 256; i++){
analogWrite(10,i);
delay(10);
}


La variable i es inicializada con el valor 0. Al final de cada bucle la
variable se incrementa en 1 (i++ es una manera abreviada de codificar i = i + 1).
El siguiente bucle for se repetirá 100 veces (hasta que i vale 256,
momento en el que ya no cumple la condición). Si en el pin10 hemos
conectado una luz, esta se irá encendiendo gradualmente.
Concretamente, como en cada repetición hay una pausa de 0,01
segundos, la luz tardaría en estar completamente encendida... 226 repeticiones x 0,01 segundos = 2,26 segundos.


El bucle “while”

Cuando no queremos que un bucle se repita un determinado número de veces sino que se repita mientras se cumpla una condición.
Se utiliza otro tipo de bucle.


while (condición) {
....
}


Realiza lo que hay entre llaves mientras se cumple la condición.
El código del bucle “for” que hemos explicado antes se puede reescribir como un bucle “while” de la siguiente manera:


int i = 0;
while (i < 100){
analogWrite(10,i);
delay(10);
i++;
}



En Arduino, el bucle “while” se suele usar para comprobar la entrada de sensores o botones. La siguiente rutina testea el valor de un
sensor conectado en el pin A3:


int sensorValue = 0;
while (sensorValue > 500 {
sensorValue = analogRead(A3);
}


El código entre llaves se ejecutará ininterrumpidamente hasta que por el pin A3 se reciba un valor igual o inferior a 500.


El bucle “do while”


Este tipo de bucle es algo menos usual que el bucle “while”. La diferencia con el “while” es que el “do while” testea la expresión test
al final del bucle (es decir después de ejecutar el bucle. De esta manera nos aseguramos que el bucle se ejecuta al menos una vez.
do {
....
} while (expresión);

EL MAPEO

De entre todas las instrucciones de Arduino, la del mapeo es una de las más importantes. Permite adaptar unos valores que están
dentro de un rango, a otros valores que están en un rango distinto.
La instrucción map es así:

Ver el archivo adjunto 277
Ejemplo1

Imagina que te han evaluado un examen sobre 2 y quieres saber cuál sería tu nota sobre diez.

nota_sobre_diez = map ( nota_sobre_dos , 0 , 2 , 0 , 10)

Luego una nota de 1,5 equivaldría a...

map ( 1,7 , 0 , 2 , 0 , 10) = 7,5

Ejemplo2

Imagina que te van a poner una nota en educación física en función del tiempo empleado en una carrera de velocidad. 15 segundos
equivale a un diez y 30 segundos equivale a un cero. Si hemos tardado 20 segundos, nuestra nota será...

map ( 20 , 15 30 , 10 , 0 ) = 6,6

LAS LIBRERÍAS
Hacer programas para controlar ciertos elementos como servomotores o receptores de señales, puede resultar muy complicado.
Todo se facilita mediante el uso de librerías.

Una librería es un archivo (programa) que crea nuevas funciones más sencillas y específicas para controlar un determinado elemento.
Puedes encontrar muchas en Internet, que permiten controlar elementos tan avanzados como los mandos de consolas como la PlayStation o la WII.
Para usar una librería tenemos que poner el archivo dentro de la carpeta libraries, que está donde tengas instalado el programa de Arduino.
Además deberás escribir al principio de tu programa la función:

#include <nombre de la librería>


Espero que a alguien le sirva y os haya gustado como iniciación en el mundillo de las placas arduino. Para cualquier duda como siempre, aquí me tenéis. Un saludo y espero vuestros comentarios (+mg hehe) :giggle:
 
Arriba Pie