Está en la página 1de 28

PROGRAMANDO EN ARDUINO

LENGUAJE DE PROGRAMACIN

El lenguaje de programacin admitido para el Arduino IDE est basado en el lenguaje C/C++.
Se hace uso de tipos de dato, sentencias de control y se debe respetar la sintaxis correspondiente
al lenguaje. El lenguaje de programacin de arduino es un lenguaje estructural quiere decir que el
programa se compilara y se ejecutara de arriba hacia abajo.

SKETCHS

Son los archivos de texto que se
escriben en el editor del Arduino IDE
y se guardan con la extensin (.ino).
Todo Sketch que escribamos en el
lenguaje de Arduino deber tener
siempre dos secciones definidas:
void setup() y void loop(). Estas dos
secciones son conocidas como
funciones

TIPO DE DATOS

En un lenguaje de programacin existen tipos de datos, de diferentes tamaos, esto permite el
almacenamiento de datos en un mayor o menor espacio en la memoria como tambin de acuerdo
a la accin que cumpla, en la siguiente tabla detallaremos los tipos de datos, los bits de tamao, el
rango que pueden aceptar, como tambin su aplicacin

TIPOS DE DATOS BITS RANGO APLICACIN
Boolean 1bit 0 y 1 Un booleano se usa de manera
lgica como true o false
Byte 8btis (1 byte) 0 hasta 255
Char 8bits (1 byte) -128 hasta 127 Usado para escribir caracteres.
Para escribir un carcter se debe
de usar la tabla ASCII
Unsigned char 8bits (1 byte) 0 hasta 255 Similar a byte, aunque escriba
caracteres mostrara su valor
numrico segn tabla ASCII
Int (entero) 16bits (2
bytes)
-32,768 hasta
32,767
En el caso de arduino Due es un
entero de 32 bits
Unsigned int
(entero sin signo )
16bits (
2bytes)
0 hasta 65536 En este caso solo se puede trabajar
con numero positivos
word 16bits (
2bytes)
0 hasta 65536 Similar a unsigned int
long 32bits -2147483648 hasta
2147483647.
Extiende la capacidad hasta 32 bits

unsigned long 32 bits 0 hasta
4,294,967,295
Solo considera nmeros positivos
de capacidad de 32bits
float 32 bits -3.4028235e+38
hasta
3.4028235e+38
Es tipo de numero racional
double 32 bits -3.4028235E+38
hasta
3.4028235E+38
En arduino DUE doubl es de
64bits


Segn la tabla anterior se dar cuenta de que los datos varan en capacidad y el rango que tiene es
puede influir al momento de programar cuando nosotros usemos este tipo de variables.

ANTES DE PROGRAMAR COMENTAR

En un lenguaje de programacin una manera rpida de interpretar el cdigo de un desarrollador
es por los comentarios que incluyan dicho cdigo, un comentario es una lnea o varias que
incluyen informacin sobre lo que se quiere hacer en el programa, en algunos caso puede explicar
partes del cdigo. Por ejemplo iniciemos nuestro primer programa.

SINTAXIS DE UN COMENTARIO
La sintaxis de un comentario puede variar si es en una lnea o en varias lneas

COMENTARIO DE UNA LINEA

Las dos diagonales indican que todo lo que se
escriba en esa lnea sern comentarios


COMENTARIO DE VARIAS LINEAS

Una diagonal seguida por un asterisco es el inicio
para un cdigo de varias lneas, para finalizar el
comentario al final se debe poner un asterisco
seguido por una diagonal para terminar el
comentario
NOTA: Un comentario es parte del programa pero
no se ejecuta, el compilador al notar la sintaxis del
comentario pasa todo lo que este dentro.
FUNCIONES:
Una funcin es un bloque de cdigo que se ejecuta solo cuando se le llama, en esta caso tenemos
dos funciones principales void setup() y void loop() si no se incluyen dentro del cdigo al
momento de compilar nos botara un error. Una funcin tiene la siguiente sintaxis




No entraremos en detalle terico ya que ms adelante se har una explicacin didctica con
aplicaciones, en esta primera etapa este importante comprender las dos funciones principales


DECLARACION DE VARIABLES (tipo de variable nombre de la variable)
En un lenguaje de programacin no se puede escribir
nmeros o letras en cualquier parte.
Recuerden que mediante un lenguaje de programacin
podemos comunicar a la computadora las acciones que
realice, y en este caso debemos acomodarnos a las sintaxis
que tenga el arduino.
Para declarar un variables primero debemos indicar el tipo
de dato que va a ser esa variables, anteriormente hicimos
una tabla con las diferentes tipos de variables, luego
asignamos un nombre al tipo de dato, este nombre segn la
sintaxis este nombre no puede contener puntos ni espacios
en caso de tener dos palabras en el nombre.
Declararemos tres variables del tipo float, char y long

Variables Globales
Son aquellas variables que no se declaran dentro de una funcin, mayormente son al inicio de un
programa.
Variables locales
Son aquellas variables que se declaran dentro de una funcin:

















ENTRADAS Y SALIDAS DIGITALES
La electrnica digital permiti convertir lgica a digital, de verdadero y falso a 0 y 1 esto permiti
poder indicar los niveles bsicos lgicos.

A diferencia de una computadora como de casa los puertos de salida un microcontrolador pueden
trabajar como mnimo a nivel de bit, es decir podemos usar los niveles lgicos para poder
encender y apagar un led como en el ejemplo de prueba. En caso de ser una entrada digital
tendemos que indicar si tendr un pin de entrada tendremos que indicar un resistor pull-up
interno si deseamos colocar pulsadores.
En el captulo anterior habamos indicado que existen 13 pines indicados para el uso de entradas y
salidas digitales, de los cuales dos pines son usados como pines de transmisin y recepcin de
datos en comunicacin serial, por lo que se recomienda no usarlos

Antes de usar un pin tenemos que
indicar si ser de entrada o de
salida, esta declaracin se hace en
la funcin void setup() de la
siguiente manera pinMode(# , I/O)
Es un funcin que permite declarar
el estado de un pin digital
#: Se indica el nmero de pin a usar
de 0,1,2,313
I/O: se indica si ser entrada o salida
INPUT: para entrada OUTPUT: para salida
SALIDAS DIGITALES

Las salidas digitales son aquellas que podrn controlar sistemas de necesiten de dos estados, 0
para un estado bajo o 1 para un estado alto, esto nos permitir controlar diferentes dispositivos,
como el encendido y apagado de leds control, control de sentido de motores, etc.
Arduino cuenta con una instruccin que nos permitir tener el control de cada uno de los pines del
hardware.

digitalWrite(# ,estado) //ser la sentencia que nos permitir indicar el pin a usar y el estado de
este


# : 0, 1, 2, 3, 4, 512,13
Estado : HIGH, LOW

Si el pin es una salida digital, la funcin servir para poner un nivel de voltaje en dicho pin.
Recuerden que arduino convierte las seales lgicas en voltaje

SINTAXIS



EJEMPLO PRCTICO

En el siguiente ejemplo lo que haremos ser encender y apagar dos los leds de manera secuencial,
estos leds estarn conectados por los pines 12 y 11 del arduino

Lo siguiente que haremos ser introducir algo de electrnica externa dentro de nuestro circuito
Por lo que necesitaremos ciertos materiales que pueden encontrar dentro de su kit de
aprendizaje

MATERIALES:

-1 ARDUINO UNO
-1 PROTOBOARD
-2 RESISTENCIAS DE 220 ohm
-2 leds rojo y verde de 3mm
-Cables para la conexin

CIRCUITO ESQUEMATICO



Recuerden que un circuito es un ciclo cerrado, como vern el punto de cierre de las salidas del pin
11 y 12 vuelven a conectarse a tierra

En el esquema vemos una resistencia, que sirve de proteccin para un led recuerden que el
arduino tiene un voltaje de 5 voltios y el led trabaja a un voltaje de 3.3v en este caso , para mayor
informacin revisar el apndice de electrnica

CIRCUITO IMPLEMENTADO EN PROTOBOARD



PROGRAMACION EN IDE

Lo primero que haremos ser establecer el estado de las salidas, si sern de entrada o de salida
usaremos las funciones pinMode(), para declarar si los pines, en este caso los pines 12 y 11 sern
salidas




Luego el objetivo es prender de manera secuencia un led, es decir que primero encenderemos un
led rojo, lo mantendremos por un tiempo prendido, luego lo apagaremos, seguidamente
encenderemos el led verde, lo mantendremos por un tiempo perdido y luego lo apagaremos,
como esto lo introduciremos dentro de la funcion void loop() esto se repetir varias veces


Entonces para encender y apagar un led usamos la funcion digitalWrite() y para los tiempos de
encendido usamos la funcion delay().


La funcin delay() es una funcin que mantiene al arduino por un tiempo sin hacer ningn cdigo,
es decir que no se ejecutara la siguiente instruccin hasta que no haya pasado el tiempo dentro de
la funcin delay(), el numero ingresado dentro de la parntesis ser el tiempo en milisegundos
ejemplo delay(2000) significa 2 segundos

Compilamos el programa verificando si nuestro cdigo es correcto

Finalmente lo cargamos en el arduino y lo implementamos



ENTRADA DIGITAL

Arduino tambin es capaz de reconocer datos externos digitales, es decir que podremos saber si
un dispositivo externo est en alto, 5 voltios, o bajo, 0 voltios. Arduino cuenta una instruccin
donde indicaremos el pin por el cual leer el estado.

digitalRead(#); // leer el estado del pin si est en alto o en bajo

Retorna el estado lgico en el que se encuentra el pin, sea una entrada o salida digital. Dicho
estado debe ser almacenado en una variable.
# :0, 1, 2, 3, 4, 512,13

SINTAXIS

Como el dato ser ledo es necesario almacenarlo en una variable, en este caso booleano ya que
nuestro estado tendr dos estados.

EJEMPLO PRCTICO 2
Lo siguiente que haremos ser prender dos leds que depende cada una de un interruptor, para
necesitaremos los siguientes materiales
MATERIALES:

-1 ARDUINO UNO
-1 PROTOBOARD
-2 RESISTENCIAS DE 220 ohm
-2 leds rojo y verde de 3mm
-Cables para la conexin
-2 interruptores


CIRCUITO ESQUEMATICO



CIRCUITO EN PROTOBOARD




ALGORITMO
Usando pinMode() estableceremos los puertos 12 y 11 como salida, 6 y 7 como entrada, en este
caso no estamos usando las resistencia para un pull_up as que lo que hacemos es establecer un
pull-up interno usando la funcion digitalWrite() en alto para las entradas


Luego declararemos dos variables booleanas en la funcin void loop() que tomaran el valor lgico
ledas con la funcin digitalRead() de cada uno de los pines.

Y finalmente escribiremos los estados de las entradas en las pines de salida usando digitalWrite()
de la siguiente manera

Compilamos para ver si el cdigo tiene errores y finalmente lo cargamos
OTRA MANERA DE DECLARA LA ENTRADA EN PULL UP
CASO 1 PULL UP

Anteriormente se usaba la funcion digitalWrite() para poder declarar el pin en pull_up
CASO 2 PULL UP

Tambien se puede declarar un PULLUP cambiando la sintaxis en la funcion pinMode de INPUT por
INPUT_PULLUP





OPERACIONES EN ARDUINO
Las operaciones nos permitirn realizar clculos matemticos, comparaciones de datos, lgica
booleana, es importante conocer la sintaxis de cada una de estas en arduino, a continuacin
presentaremos tablas para las diferentes operaciones que sern necesarias aprender en arduino.
OPERADORES MATEMATICOS OPERADORES LOGICOS
OPERADOR SINTAXIS
SUMA +
RESTA -
MULTIPLICACION *
DIVISION /
MODULO %
ASIGNACION =

OPERADORES COMPUESTOS
OPERADOR SINTAXIS OPERACION OPERACIN COMPUESTA
INCREMENTO ++ A = A+1 A=A++
DECREMENTO -- A = A-1 A = A--
ADICION COMPUESTA += A = A+B A +=B
RESTA COMPUESTA *= A= A*B A*=B
MULTIPLICACION
COMPUESTA
/= A=A/B A/=B

OPERADORES COMPARATIVOS
OPERADOR SINTAXIS
IGUAL A ==
DIFERENTE DE !=
MENOR QUE <
MAYOR QUE >
MENOR IGUAL QUE <=
MAYOR IGUAL QUE >=




OPERADOR LOGICO SINTAXIS
AND &&
OR ||
NOT !
ESTRUCTURAS DE CONTROL
La estructuras de control nos permitirn realizar algoritmos ya sean operacin que se tengan que
hacer repetidas veces, o una cantidad exacta de veces, seleccin de datos, o en algunos
condicionales. La estructura de control se dividirn en dos de acuerdo a su accin: estructuras de
control selectivas y estructuras de control repetitivas.
Estructuras de control selectivas.- Existen dos tipos de estructuras de control selectivas: si-
entonces (if - else) y selector caso (switch - case).
ESTRUCTURA DE CONTROL IF-ELSE
Un estructura de control if-else permitir realizar toma de
decisiones en el algoritmo mediante una condicin, si la
condicin es verdadera realizara una sentencia, en caso de
que la condicin sea falsa entonces realizara otra sentencia,
en cualquiera de los dos casos luego de realizar la sentencia
terminara y continuara con el cdigo. En la imagen de la
derecha se puede observar el diagrama de flujo.

Una sentencia de control if no necesariamente puede ir
acompaado de un else en ese caso solo se tendr un sentencia en
el caso de que la condicin sea verdadera sino continuara con el
algoritmo. En la imagen de la izquierda se muestra el diagrama de
flujo de este caso.
Existe tambin el caso de que una condicin tenga diferentes
resultados y que para cada una de estas exista una condicin, sin
embargo al realizarse este tipo estructura solo realizara una de ellas.

En la imagen de la izquierda
se muestra la condicin con
diferentes alternativas como
respuesta como tambin
cada respuesta con su
propia sentencia, este caso
caso se denota como if if
else if else - . else.
Recuerden que por la
estructura secuencial solo se
cumplir una de ellas.


EJEMPLO DE FUNCIONAMIENTO
MATERIALES
DISPOSITIVO ELECTRONICO CANTIDAD
ARDUINO 1
Leds rojo y verde 2
Pulsadores 2
resistencias de 220 ohmios 2
condensadores de 100nf o 1nf 2

DIAGRAMA ESQUEMATICO

Lo siguiente que haremos ser una
comparacin de valores cada vez que
un nmero sea mayor que 0
prendera el led verde, si es menor
que 0 prendera el led rojo y si es
igual a cero prendern los dos leds
Iniciaremos declarando los pines y las
variables que usaremos para este
conteo
Seguidamente hacemos la secuencia
para nuestro algoritmo
Los dos primeros if servirn para aumentar
o disminuir el valor de la variable conteo, si
presionamos el pulsador del pin 7
aumentara su valor en 10, si presionamos el
pulsador del pin 6 disminuir el valor en 10,
anteriormente iniciamos a conteo con el
valor de 0.
Luego haremos el uso de if- if else- else,
para cada casi if si es mayor que 0 if else si
es menor que 0 y else para cuando son
iguales, como notaran else es el
complemento de toda la lgica no necesita
de una condicin
Verificamos si nuestro cdigo est bien y
luego simulamos en proteus
Cuando ejecuten el programa en proteus se
dar cuenta que los dos leds estn
encendidos, esto se debe a que
inicialmente declaramos la variable conteo
con el valor de cero y segn nuestro
algoritmo si es que vale 0 prendern los dos leds

Cuando presionen el pulsador del estado 7 se
prendera el led verde, quiere decir que el valor de
conteo se increment en 10 cuantas veces
presionemos (IMAGEN DE LA IZQUIERDA).
Ahora si presionamos el pulsador del pin6 lo que
suceder es que se prendera el led rojo debido a
que el valor de conteo estar disminuyendo en 10
cuantas veces lo presionen (IMAGEN DE LA DERECHA).
ESTRUCTURA DE CONTROL SWITCH-CASE
Ahora dentro de las
estructuras de control
tambin tenemos el caso del
switch-case, si tienes una
variable que va cumplir varias
condiciones, en el caso
anterior solo vimos 3,
entonces lo que tendras que
hacer es muchos if, if else,
else, ya que dentro del mundo
de la programacin nos
topamos siempre con este
tipo de problemas se crea una
nueva estructura que
cumplir dicha funcin pero
escribiendo menos cdigo y
sea ms legible.
Cada vez que se cumpla una condicin para cada condicin tendremos una instruccin, si no
queremos cubrir todas las condiciones, entonces tendremos una condicin por default que
realizas una instruccin.
SINTAXIS
Para el switch debemos de tener
una condicin que tomara diferentes
valores, esta condicin puede ser
del tipo entero o carcter, luego
iniciamos switch(condicin ), como
vern dentro de la parntesis ira la
variable de condicin, se abren las
llaves ya que esta es una funcin, se
escriben todos los caso a tener,
ejemplo case 1: y el valor que este
vaya a tomar caso 1 cuando
condicin es igual a 1, y as tenemos
3 casos ms, que cumplirn una
instruccin especfica, sin embargo
si la condicin no cumple esos tres
valores y queremos que se nos
indique, es decir para los dems
casos, se usara el default, no es obligatorio usarlo.

EJEMPLO: ESTRUCTURA DE CONTROL SWITCH-CASE, CONTADOR ASCENDENTE Y DESCENTE EN
BINARIO
MATERIAL
DISPOSITIVO ELECTRONICO CANTIDAD
ARDUINO 1
Barra de leds de 10 segmentos 2
Pulsadores 2
resistencias de 10 kilo ohmios 2
condensadores de 100nf 2

En la tabla del lado derecho superior mostramos los nmeros decimales en sus similares en
nmero binario que nosotros ahora representaremos mediante el uso de leds
DIAGRAMA ESQUEMATICO

IMPLEMENTACION EN PROTOBOARD


ALGORITMO
Usaremos dos algoritmos para poder entender el uso del switch case, como tambin notaran que
solo estamos usando 3 leds de las barra de 10 segmentos, los lectores a modo de practica
despus de esto pueden incluir la secuencia para los leds es decir un contador de 0 a 1023.
Declaramos las variables para la entrada y salida de datos,
recuerden que es recomendable hacer eso, si en el futuro
quieren cambiar la posicin de los pines, solo basta con
variar el valor inicial de las variables, tambin
inicializamos la variable cuenta, de tipo entero, con el
valor de 0, finalmente dentro del void setup() asignamos
el modo de trabajo a cada pin del arduino todos los leds
como salida y los pulsadores como entrada, en este caso
no es un PULL_UP debido a que esto lo realizar un circuito
electrnico externo


CASO I: USANDO DEFAULT

Dentro del void loop() lo primero que hacemos es declarar las
variables que tomaran los valores de los pulsadores, luego
mediante el if preguntamos si pul_asc es igual a LOW, si es
cierto aumenta el valor de cuenta en 1 y espera 100
milisegundos; de manera similar para el caso de pul_des, sin
embargo cada vez que esta sea igual a LOW, disminuir el valor
de cuenta en 1 y espera 100 milisegundos. Para los dos casos se espera un cierto tiempo debido al
efecto rebote del pulsador
Continuando con el cdigo lo siguiente que se har ser iniciar con la estructura de control switch
que espera la condicin de cuenta, como lo que queremos es que los numero decimales se
muestra en binarios guindonos de la tabla de decimal a binario encenderemos, si el led toma el
valor de 1 o HIGH, o apagaremos, si el led toma el valor de 0 o LOW, siendo led_1 el bit menos
significativo, y led_3 el bit ms significativo, por ejemplo en el caso cuenta = 0, los valores led_1,
led_2 y led_3 sern LOW o led apagado
De esta manera tendremos completa, para el caso de 3 salidas podremos mostrar desde el 0 hasta
el 7, en las imgenes se muestra la continuacin, escribir el cdigo empezando de la imagen de la
izquierda y continuar con la imagen de la derecha



Finalmente para terminar el cdigo agregamos el
default si la cuenta es menor que 0 o cuenta es
mayo que 7, cuando se cumpla este caso se
encendern y se apagaran todos los leds. Debajo
vemos una primera llave que la que cierra la
estructura de control switch,luego espera un
tiempo de 100 milisegundo y cierra la llave de la
funcion void loop()





MUESTRAS DE SIMULACION
Caso 1: en el cual se ha presin el pulsador que aumenta la cuenta y toma el valor de 1

Caso 6: donde cuenta toma el valor de 6 lo que en binario es 110

Para el caso de defecto de la estructura de control switch puede ser o no usado, nuestro switch-
case tienes 8 casos que toman valores desde el 0 hasta el 7, si no se cumplen ninguno de estos
realizara el cdigo dentro del default, sin embargo esta puede ser o no usada en el cdigo
depender del algoritmo que hayan diseado




ESTRUCTURAS DE CONTROL REPETITIVAS
Estructura de control repetitiva permitirn realizar algoritmos varias veces de manera limitada o
ilimitada, en arduino existen 3 estructuras de control repetitivas la cuales son:
ESTRUCTURA DE CONTROL WHILE
ESTRUCTURA DE CONTROL DO-WHILE
ESTRUCTURA DE CONTROL FOR

ESTRUCTURAS DE CONTROL WHILE Y DO-WHILE
Como se muestra en la imagen un while lo
primero que hace es preguntar la condicin y si
es verdad ejecutar un proceso, para que luego
vuelva a preguntar, sin embargo en el do-while,
lo primero que ejecuta es el proceso para luego
preguntar por la condicin, es decir el while
primero pregunta la condicin luego ejecuta el
proceso, y el do-while primero ejecuta la
condicin y luego pregunta para poder repetir el
proceso, cualquiera de las dos maneras pueden ser utilizadas de acuerdo a la solucin que uno
quiera dar y verificar cual es conveniente hacer primero con la condicin o el proceso.
SINTAXIS

EJEMPLO
MATERIALES
DISPOSITIVO ELECTRONICO CANTIDAD
ARDUINO 1
Led verde 1
Led rojo 1
Pulsadores 1
resistencias de 220 ohmios 2
Resistencia 10 kilo ohmios 1
condensadores de 100nf 1

DIAGRAMA ESQUEMATICO

IMPLEMENTACION EN PROTOBOARD

Como anteriormente explicamos el
void setup() se ejecuta una sola vez
dentro de esto introduciremos una
funcin while() que esperara a que la
condicin sea falsa en este caso mi
pulsador en pull-up siempre est en
uno lgico ser la condicin del
while() y dentro del cuerpo
incluiremos el led rojo que realizara el
parpadeo
Dentro de la funcin void setup()
hemos introducido la funcin while()
en este caso la condicin es d que lee
el dato del pulsador en pull-up, es decir que encuentra en alto como estado normal Dentro del
while() tenemos la accin del parpadeo del led cada 500 milisegundo
Y al final agregamos una lectura del pulsador que espera el cambio de estado para poder salir de
dicho bucle, si no se agrega esta accin el while() se repetirs la accin dentro de la comilla varias
veces


Cuando el pulsador es presionado, sale de la funcin while y continuara a la
funcin void loop(), en este caso.







ESTRUCTURAS DE CONTROL REPETITIVAS FOR
Las estructuras de control repetitivas while() y do-while() nos permitan realizar un proceso
repetidas veces, para el caso de tener repeticiones contadas existir la funcin de control
repetitiva for() que realizara una cantidad de repeticiones definidas por el programador.
SINTAXIS
Una funcin for() debe de
tener un inicio y un final, cada
vez que termine de hacer las
acciones de manera
secuencial aumentara la
variable inicio de uno en uno
hasta que esta sea igual,
menor, mayor, de acuerdo a la
condicin que proponga el
programador a la variable final.
Ahora mediante un ejemplo bsico entenderemos el funcionamiento de un for
EJEMPLO 1 FOR
MATERIALES
DISPOSITIVO ELECTRONICO CANTIDAD
ARDUINO 1
Led verde 1
Led rojo 1
resistencias de 220 ohmios 2
DIAGRAMA ESQUEMATICO


IMPLEMENTACION EN PROTOBOARD

Con este ejemplo bsico explicaremos como
funciona un for()
En la primera parte del cdigo declararemos
variables para los pines de salida 12 y 11, como
tambin declararemos de dos maneras
variables para el iterado o contador del bucle
for(), en este caso el entero j para uno
de los bucles for()
Y para el otro lo declararemos dentro
del inicio de funcin como se muestra a
continuacin para la declaracin del i,
cualquiera de las dos maneras es vlida
la nica diferencia es que una ser una
variable global, para el caso de j, y la
otra una variable local, para el caso de i
Entonces como la funcin void loop() es
una funcin repetitiva esta lo primera
que har ser encender y apagar los
dos leds juntos

Luego ingresara en el primero for la cual repetir el encendido y el apagado del led por 5 veces,
debido a que i empieza en cero y termina en 4, recuerden que el i++ aumente a i de uno en uno

Finalmente ejecutando el ultimo for para el encedido del led2 por 10 veces para un j que inicia su
conteo en 0 y termina en 9

Y repitindose la secuencia otra vez por la accin del void loop()