Sei sulla pagina 1di 13

Índice 

 
1. Presentaciones 
2. El Hardware: Arduino por fuera 
a. Los pines analógicos y digitales 
b. Los pines de alimentación 
3. El Software: Arduino por dentro 
a. Variables 
b. Funciones 
c. Esperas 
d. Estructuras de control 
4. Conclusiones 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
De cero a Rufián de Arduino ​  ​
de​Rufián en la Red​
 se encuentra 
 ​
bajo la​Licencia Creative Commons Reconocimiento 
­CompartirIgual 4.0 Internacional​

Rufián en la Red  2 
 
¡Hola! Soy Sergio, Rufián en la red. Además soy ingeniero electrónico y si has llegado por 
aquí sabrás que tengo un blog llamado ​ Rufián en la Red​ . A día de hoy ​
todo el mundo 
habla de Arduino​  y todo el mundo hace cosas con él. El problema es que muy poca gente 
cuenta cómo empezar. Y los que lo hacen ​ no dan las explicaciones de porqué pasan las 
cosas sino que te las cuentan para que las apliques como una receta​ . 
 
Es más sencillo hacerlo así, total así aplicas la receta y te sientes el puto amo haciéndolo. 
Lo que no sabes es que no conoces cómo hacer tus propios proyectos. Solo sabes 
copiarlos. 
 
Yo ​quiero que aprendas de cero​  y por eso he creado esta guía. ​ Para que te compres 
una placa por 2€ en China y puedas conocer de qué va esto y qué es cada cosa​ . 
 
¿Que vas a poder encontrar en esta guía? Vas a encontrar lo básico para conocer cómo 
funciona realmente Arduino. Es la primera clase, donde se cuentan las cosas básicas. Te 
voy a explicar: 
 
● Cómo funciona el hardware de Arduino 
● Cómo se programa en Arduino 
 
Si ya llevas un tiempo en Arduino te aburrirá asi que siempre puedes dejar de leer e irte a 
conectar algunos cables. Si es la primera vez tal vez te interese este ​ post​
 donde explico qué 
es Arduino y porqué su éxito :) 
¡Empezamos! 
 

Rufián en la Red  3 
El Hardware: Arduino por fuera 
 
Lo primero que se enseña en una clase es a programar y luego las pequeñas cosas que 
tiene un microcontrolador. Para ser un buen rufián hay que hacerlo al revés. Conocer qué 
tienes y luego aprender a programarlo…¡Vamos a ello! 
 
Supongo que has visto alguna vez la dichosa plaquita verde­azulada. Y supongo que la 
recordarás llena de agujeros y componentes. Eso es la parte electrónica, la hardware y es 
de la que te voy a hablar. 
 

 
Imagen​
 de ​
Nick Hubbard
 
Lo primero es el componente ese alargado y grande qué hay en medio de cada placa. Eso 
es el ​
microprocesador​ . La parte pensante. A día de hoy en Arduino encontramos el 
ATmega328P y el ATmega32U4. Nada, la diferencia reside en algunos detalles que ahora 
no te interesan. Pero que sepas que es la parte esencial de la placa. 
 
Por otra parte encontramos la ​alimentación​ . Las formas de entrarle corriente a Arduino. En 
este caso el Arduino UNO es el rarito de la familia. Tiene dos formas: 
● Mediante el conector jack 
● Mediante USB 
El conector jack es igual que la clabija que utilizas para cargar tu portátil.. Hay que tener en 
cuenta que ponga que el voltaje está entre 7 y 12V y ya está. De este modo puedes 
conectarlo a la luz o ponerle unas pilas. Con menos o con más voltaje a éste tendrás 
problemas. Esta es una forma de enchufar la placa que sólo se encuentra en los Arduino 

Rufián en la Red  4 
UNO, el resto de Arduinos funcionan por USB. Se conecta el cable desde el PC a la placa. 
En el caso de Arduino UNO el cable es especial, pero por lo general suele ser el que se 
utiliza para cargar smartphones Android. 
 
El ​
botón de Reset​  no es más que eso, un botón de reinicio. A veces, programando, verás 
que la placa tiene que hacer ciertas cosas pero llega un momento en el que no puede 
avanzar por algún fallo en el código o alguna situación que no habías contemplado. No pasa 
‘palante’.​
nada, botón de reinicio y ​  
 
Hay algunos leds, condensadores y el ISCP pero eso lo dejamos para otra ocasión. Ahora 
vamos a lo que interesa: ​los pines​ . 
 
 
 
Los pines analógicos y digitales 
Los pines son esos agujeros que ves dónde la gente conecta cables. En el Arduino Nano, 
Micro y Mini en lugar de agujeros son varitas que salen. La funcionalidad es la misma pero 
en lugar de ser hembras son machos. ¡Que nos la pela vaya! 
 
Los pines se dividen en tres secciones: Analógicos, digitales y de alimentación (Power, 
¿Vendrán de ahí los power rangers?).  
 
Los analógicos son 6 y van marcado con la A de analógico​  y van del 0 al 5. Ahora te 
voy a contar eso que mola contar al que sabe poco, con esto te quedas con la peñita 
seguro. Las señales analógicas son aquellas que son como la vida misma, todo aquello que 
medimos como: la temperatura, la presión, la fuerza… 
 
Cuando una señal es analógica se puede medir de manera continua. Tiene valores con 
coma. ¿Qué cómo se mide? Por el voltaje y la corriente.  
 
 
Momento ingeniero (Puedes saltártelo) 
La corriente o intensidad es algo que te sonará de las clases de tecnología. Es un 
componente de la electricidad que es el flujo de cargas positivas. Lo único que tienes que 
recordar es que la corriente quema cosas. Así que cuidado con ella. 
 
La corriente, está relacionada con el voltaje según la ley de Ohm. De esta manera  
 
V = R.I  
 
Siendo V el voltaje e I la intensidad o corriente. De esta manera cuando el voltaje sube, la 
intensidad baja y viceversa. Esto se ve porque la fórmula sería la misma que: 
 
R = VI  
 

Rufián en la Red  5 
De esta manera, si R fuese constante, si sube V, I baja y viceversa. Por eso que una 
bajada de tensión hace aumentar la intensidad y puede quemar alguna cosilla en casa. 
 
Así, dependiendo del voltaje que llega al pin de Arduino éste toma un valor. Y viceversa. 
Este tipo de pines viene muy bien para saber un dato (como la temperatura) o para 
generar algo variable (como una luz con distinta intensidad). 
 
 
Frente a estos encontramos ​ los pines digitales​. Estos solamente miden o 5 Voltios o 0 
Voltios o cómo conocerás por las pelis: binario, o 1 o 0. O es blanco o es negro y no hay 
otra cosa. Es el mismo mecanismo utilizado al encender o apagar una televisión. 
 
Aquí en las señales que enviamos 0 Voltios es nuestro OFF y 5 Voltios nuestro ON. Así 
podemos mandar señales para encender o apagar componentes. O recibir señales que nos 
digan si algo está encendido o apagado, si algo ha detectado un objeto o no…. Los dos 
estados que se pueden encontrar en estos pines se llaman LOW y HIGH (BAJO y ALTO) y 
coinciden (cómo no) con 0 y 5 Voltios. 
 
En los pines digitales tenemos los números de cada pin y luego hay más cosas escritas. La 
cosa es marear. En el 0 puedes ver que hay un RX y en el 1 un TX. Esto significa que, 
además de ser pines digitales, son los ​ pines de transmisión​ . Arduino se comunica con el 
ordenador mostrando mensajes (cómo verás más adelane). Esto se hace normalmente por 
el puerto USB pero estos pines correctamente conectados pueden sustituir al cable USB. 
 
Por otra parte, también en los pines 3, 5 y 6 hay como una onda. Esto es porque son 
salidas PWM​ . El PWM viene del ​ Pulse Width Modulation.​  Son señales cuadradas. Esto 
significa que van de 0 a 5 Voltios y viceversa. No se escapan de ahí. La particularidad es 
que podemos modificar el tiempo ue pasan arriba y el tiempo que pasan abajo. Pero nunca 
el alto que siempre será de 0 a 5 Voltios. Si quieres saber más sobre el PWM te dejo este 
link​
 ;)  
 
Ahora fíjate, ​
después del pin 13 tienes uno llamado GND y otro AREF​ . A GND se le 
llama tierra y es la referencia a 0 Voltios. Todos los GND deben de ir unidos para que todos 
tengan el mismo nivel que, siento decepcionarte, no será exactamente 0V. Variará. En 
cuanto a AREF es una referencia de voltaje. Esto es el tope al que se considera un ALTO. 
En lugar de 5 Voltios podríamos querer que fuesen 3.3 Voltios así que conectaríamos esa 
tensión a este pin. Por ahora no es importante así que no te comas mucho el tarro con ello. 
 
 
 
Los pines de alimentación 
Por fin llegamos a la última parte: la de alimentación. Sé que ya me odias pero tranquilo, 
esta parte es muy sencilla. Voy de abajo a arriba. Lo primero que encuentras es Vin. Esta 
es la tercera forma de alimentación. Hasta ahora tan sólo te he enseñado pines que podían 
ser de entrada o salida (Entrada significa que recibe voltaje y salida es que lo expulsa), éste 

Rufián en la Red  6 
tan sólo es de entrada. Si metes suficiente corriente por aquí no necesitamos el USB ni el 
conector jack.  
 
Luego aparece GND que es tierra como ya te expliqué antes y luego 5V y 3.3V. Esto son de 
salida y ofrecen 5 Voltios y 3.3 Voltios. Los utilizaremos para dar alimentación a los circuitos 
que hagamos (Sí, hay cosas que se conectan a la placa y necesitan corriente). 
 
El último pin es el de RESET. Este pin también es de entrada y al recibir una señal de 0 
Voltios, Arduino se resetea. Funciona similar al botón que veíamos al principio. Con esto ya 
has visto Arduino por fuera...ahora vamos a verlo por dentro. 
 
 
 
El Software: Arduino por dentro 
 
Ahora ya conoces como va el invento. ¡Vamos a jugar con él! 
Lo primero es descargarse el IDE (nombre raro para llamar al programa que utilizarás para 
programar con Arduino) en la ​página oficial​
. En Windows la instalación es de siguiente 
siguiente siguiente. Para Linux tan tan sólo hay que ejecutar el programa (./arduino desde 
terminal). 
 
Después de eso lo primero que te encontrarás es frente a esto: 
 

Rufián en la Red  7 
Lo primero que debemos conocer es qué son las funciones. Son líneas de texto que se 
encargan de realizar algo cuando se las llama. Puedo tener una función que encienda leds, 
o una que se encargue de configurar alguna cosa… Las funciones se caracterizan por: 
● Aparece el tipo de resultado que da la función (tranquilo, que de eso hablamos 
luego). 
● Aparece el nombre de la función 
● Aparecen entre paréntesis lo que se le pasa a esta función para trabajar. Los datos 
que necesitará manejar. A esto los programadores le llaman parámetros. 
 
Aquí hay dos funciones (eso que lleva delante la palabra void): la setup y la loop. Void 
significa que la función no da nada como resultado y como ves entre paréntesis no tiene 
nada asi que no necesita datos de entrada.  
 
Esto es porque ​ en ​setup​
 añadiremos aquellas cosas (funciones, datos,...) que 
solamente se utilizan al inicio y en ​loop​ aquello que se hará continuamente​ . ​
Loop 
significa bucle por lo que te puedes hacer una idea qué hace: repetir las cosas hasta la 
saciedad. 
 
Por ejemplo, configurar el bluetooth sólo se hace al principio, pero enviar la información lo 
normal es que se haga continuamente. ¿Me pillas? Bien, ahora vamos a empezar a meter 
cosas en estas dos funciones principales. 
 
 
 
Variables 
Todos los datos que se manejan se tienen que declarar. Vamos, darles nombre y decirle a 
Arduino que existen y que nosotros los llamamos así. Vamos a definir 3 variables: 
 
int​
 sillas; 
int​
 madera ​
=​
 ​
5; 
int​
 metal ​
=​
 ​
8; 
 
Hemos declarado tres variables. Tan solo hay dos cosas que debes fijarte. La primera es 
que delante llevan un prefijo, en este caso ​int​
, qué determina el tipo de dato. La segunda 
cosa es que las dos últimas variables tienen un valor. Ese nombre será igual a ese valor 
cuando hagamos operaciones. 
 
En cuanto al tipo de dato tenemos estos: 
 
● void:​  Quiere decir que no devuelve nada (ya te lo he dicho pero soy cansino). Se 
suele poner delante de las funciones (como loop) cuando se sabe que no devuelven 
nada. No existen variables a las que pongamos delante void, solamente funciones ;) 
● boolean:​  Este tipo de dato es ​true​ false​
 o ​ . Se utiliza para valores que ya sabes que 
son verdaderos o falsos. ​ Aquí​ un ejemplo. 
● char:​  char viene de character. Se utiliza para guardar una sola letra. Al final como es 
un byte con signo acepta valores desde ­128 a 127. 

Rufián en la Red  8 
● unsigned char:​  Es lo mismo, una letra pero al no tener signo se utiliza más para 
representar un byte, es por eso que se suele utilizar la palabra byte en lugar de 
unsigned char. 
● byte:​ Son 2 elevado a 8 posibilidades ya que vienen definidos por unos y ceros en 8 
posiciones. No te agobies que no creo que lo necesites ya mismo. 
● int:​
 Este es el más común, el entero. Se utiliza para valores entre ­32.768 y 32.767 
por lo que es el que debes utilizar normalmente. 
● unsigned int:​  Es lo mismo que el int pero solamente positivo por lo que el rango de 
16 bits se produce en la parte positiva teniendo como resultado el rango 0 a 65535. 
En Arduino, les gusta más utilizar la palabra word en lugar de unsigned int. Yo soy 
más clásico y me gusta más esta forma. 
● long:​ el long es un poquito más altito, son 4 bytes y claro ocupa más posiciones. 
Exactamente va de ­2.147.483.648 a 2.147.483.647.  
● unsigned long:​  ¿A que ya te imaginas cómo va este? De 0 a 4.294.967.295. Se 
suele utilizar en la función millis. ​
Aquí​  un ejemplo de dicha función dónde sí que es 
realmente útil. 
● short:​ Va de ­32.768 a 32.767 pero la verdad, no lo he utilizado en la vida. 
● float:​
 El float es típico en C y se utiliza por su tamaño y porque permite el uso de 
números decimales (los de la comita). Hay muchos microcontroladores que no 
permiten este tipo de operaciones con números decimales y se suelen trampear 
algunas cosas para que se hagan correctamente. De hecho, Arduino no lo hace de 
manera natural, sino que ya le han implementado un truquillo para que funcione con 
normalidad y no te enteres..que mangantes. 
● String​: Es utilizado para cadenas de caracteres o char. Aunque esto no es lo 
habitual. Lo habitual es crear un array o cadena de caracteres así: 
char​ frase​ [​
18​]  
dónde le digo que quiero 18 huecos para poner char. En realidad son 17 porque hay 
uno que se reserva para el final de línea (que se escribe ​ /n​
). 
● array:​ Se declaran poniendo un par de corchetes detrás del nombre tal y como 
acabamos de ver. No son un  tipo como tal sino que transforman los tipos en 
cadenas de ese tipo. 
 
Respecto a las variables solo te queda saber que representan al valor que les das y pueden 
hacerse operaciones con ellas. Vamos es posible hacer: 
 
int​
 sillas=madera+metal; 
 
Lo que daría como resultado 13 ya que madera valía 5 y metal 8. 
 
 
 
 
 
 
 

Rufián en la Red  9 
Funciones 
Vamos con lo que más vas a utilizar. Las funciones ya te he comentado antes que eran. 
Ahora hay que ver cuáles vas a utilizar. hay muchas pero bueno vamos a ver las más 
comunes.  
 
Las que tienen que ver con la ​ comunicación serie​  son: 
 
Serial​.​
begin​
(​
9600​)  
Ésta se pone en el setup y lo que hace es preparar la comunicación serie para comunicarse 
a 9600 bps (bits por segundo). De esta manera cuando vayas al monitor serie del IDE y lo 
pongas en 9600 verás lo que te dice Arduino. 
 
Serial​.​
print​
("​
Hola​")   
Esta es la función que hace que Arduino diga cosas. Si es un texto fijo se pone entre 
comillas y si es una variable sin ellas. Vamos sería en plan: 
 ​Serial​
.​
println​(​
metal​); 
 
Serial​.​
println​
("​Hola​") 
 Esto es lo mismo pero añade un salto de línea. Vamos lo que hacíamos con la máquina de 
escribir cuando movíamos el rodillo ese. Esto hace que pasemos de línea. Es bastante útil y 
es la más utilizada ya que así evitamos largas frases. 
 
Las referentes a ​ pines analógicos​ : 
 
AnalogRead​(​
A0​
)  
Se utiliza para leer el valor del pin analógico 0. Podríamos poner simplemente 0, de hecho 
es más rápido,¿no? 
 
Las referentes a ​ pines digitales​ : 
 
pinMode​(​
13​
,​
 INPUT​)  
Se utiliza para definir los pines digitales como entrada (INPUT) o salida (OUTPUT). El 
primer número es el pin y se sabe que son digitales porque esta función no tiene sentido en 
los pines analógicos ya que los analógicos SIEMPRE son de entrada. 
 
digitalRead​
(​
4) 
 Lee el valor del pin digital 4, sin más. 
 
digitalWrite​
(​
5​
,​
 HIGH​
)  
Escribe en el pin 5 un HIGH (5 Voltios). La otra posibilidad sería poner 0 Voltios con un 
LOW. 
 
analogWrite​(​
13​
,​200) 
 ​
Aquí se escriben valores analógicos en los pines digitales. Esto solamente se puede hacer 
en los pines PWM cómo ya te conté ​ aquí​ . El valor 200 es un valor que va de 0 a 255 y que 
marca el voltaje que saldrá del pin 13 (¡siempre de 0 a 5 Voltios!). Esto quiere decir que me 
faltará una quinta parte (más o menos) del voltaje para llegar a 5 Voltios. 

Rufián en la Red  10 
 
 
Esperas 
Cuando hace falta esperar utilizamos la función: 
delay​
(​
500) 
Dónde delay significa esperar y 500 son los milisegundos qué debe de esperar Arduino 
antes de continuar con el resto del programa. ​
¡Cuidado que el delay encierra algún que otro 
secreto! 
 
 
 
Estructuras de control 
Y llegamos a la parte más esencial. Si conoces algo de C esto lo tienes superado 
sino…¡allá voy! 
 
Las estructuras de control vienen dadas por funciones cómo: 
if  
if​ if...else if...else ​
 o su variante ​ son condicionales. Los condicionales son los mismos que en 
la vida real. Si pasa esto...pues sucederá esto. Si pasa lo otro pues lo otro y si nada de todo 
pues pasará otra cosa. ​ If​
 significa si en nuestro lenguaje paladín, ​else if​
 se utiliza para poner 
otra condición si no se han cumplido las anteriores y ​ else ​
es el sinó. Si no pasa nada de lo 
anterior que suceda esto. Un ejemplo sería: 
 
If​
(​
metal ​
==​
1​
){ 
metal ​
=​
 metal​
+​
1​
;  

else​
 ​
if​
 ​
(​
metal ​
==​
 ​
9){ 
metal ​
=​
 ​
0; 

 
else{ 
metal ​
=​
 ​
‐​
1; 

 
Te habrás fijado en que a veces uso el doble igual, no es párkinson, simplemente es que en 
los condicionales, para decir que algo debe de ser igual a algo se utiliza el doble igual. Un 
único igual se utiliza para definir variables, cómo ya te he dicho antes. Un doble igual para 
comparar ;) 
 
for  
¿Recuerdas la estructura loop? Es un bucle que se repite durante todo el programa. El ​ for 
es otro bucle el cuál se repite un número de veces. De hecho es bastante peculiar. Su 
estructura es. 
 
for​
(​
int​
 i​
=​
0​
;​
i​
<​
9​
;​
i​
++){ 
//Cosas a hacer 

Rufián en la Red  11 
 
Lo que hace es crear una variable llamada ​ i​
 que vale 0. De 0 a 9 repetirá lo que se le diga y 
cuando llegue a 9 parará. Ahí es cuando es importante el símbolo antes del 9.  
Al poner ​<​ (menor) implica que la novena vez ya no se repetirá ya que ​ i ​
ya no será menor 
estrictamente que 9. Si pusiese ​ <=​ (menor igual) si que se repetiría una novena vez. Ojo 
con el​ i++​
 también, ya que lo que hace es que al acabar cada vez suma uno a la ​ i​
 y es por 
eso que el programa puede avanzar. También podría darse la situación contraria: ​ i­­​
, que 
restaría cada vez una unidad a la ya famosa ​ i​

 
switch  
­No te ha pasado alguna vez en la Play que te dice, si quieres avanzar pulsa X si quieres 
retroceder pulsa círculo. Pues esto es lo mismo. Se define como: 
switch​
 ​
(​
opcion​
){ 
case​
 ​
1​
:   
//Haz algo 
break; 
case​
 ​
2: 
  //Haz algo 
  break; 
  default: 
  //Haz algo 
  break; 
  } 
 
opcion​
En este caso si ​  vale uno se hace una cosa, si vale dos otra...y sino, por defecto se 
hace otra. El por defecto es opcional, pero no me dirás que no es útil eh! 
 
while  
Es el bucle más popular y que lo traduciríamos como mientras. Mientras pasa esto tú dale 
caña a esto. 
while​
 ​
(​
opcion ​
>​
 ​
1​
){ 
Serial​
.​
println​
("​
Rufi​
á​
n mam​
ó​
n​
"); 

 
Mientras la variable ​opcion​ es mayor a 1 escribe eso por la comunicación serie. Arduino 
while(1)​
utiliza loop, pero otros microcontroladores se lo ahorran y utilizan ​  que haría lo 
mismo: un bucle eterno.  
 
do while 
Este es un bucle en el que la condición va después de la acción. Es en plan: haz algo y si 
pasa esto lo repites: 
do{ 
//Hacer lo que quieras 
}​
while​
 ​
(​
opcion ​
<​
 ​
4​
); 
 
opcion​
El bucle se hará una vez y a partir de ahí, tantas veces cómo ​  sea menor que 4. 
Fíjate que al final del while hay que poner un punto y coma. Cosa que debes hacer después 
de cada línea sino cuando intentes compilar (dándole a la flecha del IDE de Arduino) te dará 
error. 

Rufián en la Red  12 
 
 
  
 
En definitiva... 
Llegado a este punto creo que ya conoces la parte física y lo más básico en cuanto a 
programación. Es lo básico básico. Qué hace cada cosa. A partir de ahora empieza un 
camino arduo pero gratificante ya que lo bueno de esto es que es palpable. No es como un 
negocio que esperas a que crezca, o un niño que esperas que madure. Esto es encenderlo 
y ya funciona.  
 
Para poder continuar tienes dos opciones: 
­ La primera, descargarte el IDE de Arduino e intentar ​ probar los Ejemplos​  que 
incluye. Te aseguro que ahora ya no te sonará a oriental ese cúmulo de líneas. 
­ La segunda es buscar en toda la blogosfera ​ cursos o experimentos con Arduino 
(puedes mirar ​ aquí​
). A día de hoy hay gente que aprende con una formación por 
partes y otra con ejemplos directamente o cosas que le apetece hacer y las 
investiga.  
 
Da un poco igual cómo lo hagas, lo importante es empezar y seguir. No creo que te aburras 
porque en Arduino el límite está en tu imaginación y en la paga que te dan tus padres a final 
de semana. Hay inventos, lecciones e información a porrillo y no te la vas a acabar toda. 
 
Y cuando tengas un poco de soltura embárcate en algún proyecto con amigos o en alguna 
asociación ​maker​ . Las sinergias siempre molan, viene bien aprender de otros y que otros 
aprendan de ti. Sufres menos, te duele menos la cabeza y eres más feliz. 
 
Espero que esto te haya servido, que si tienes alguna duda ​ me la hagas llegar​
 y que esto no 
sea un adiós, sino un hasta luego. ​ ¡Cuidate rufián! 

Rufián en la Red  13 

Potrebbero piacerti anche