Ejercicios resueltos

Ejemplo 1

En una placa Arduino UNO tenemos 10 leds conectados en los pines 2,3,4,5,6,7,8,9,10,11 y dos pulsadores en los pines 12 y 13. Utilizando un objeto de la clase VUMeter podemos encender y apagar los leds de forma secuencial o todos ellos a la vez.

Hemos de utilizar la librería <BasicEducationShield.h>

Con cada una de las cuatro combinaciones de los dos pulsadores se ejecutan las funciones fill, scrollRight, scrollLeft y blinkAll.

#include <BasicEducationShield.h>

VUMeter tiraled;

int pins[]={2,3,4,5,6,7,8,9,10,11};

int pinCount=10;

void setup(){

pinMode(12,INPUT);

pinMode(13,INPUT);

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(7,OUTPUT);

pinMode(8,OUTPUT);

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

tiraled.config(pinCount,pins);

tiraled.begin();

}

void loop(){

if(digitalRead(12)==LOW&&digitalRead(13)==LOW)tiraled.fill(10);

if(digitalRead(12)==HIGH&&digitalRead(13)==LOW)tiraled.scrollRight(500,0);

if(digitalRead(12)==LOW&&digitalRead(13)==HIGH)tiraled.scrollLeft(500,0);

if(digitalRead(12)==HIGH&&digitalRead(13)==HIGH)tiraled.blinkAll(500,10);

}

Ejemplo 2

En una placa Arduino UNO tenemos 10 leds conectados en los pines 2,3,4,5,6,7,8,9,10,11 y dos pulsadores en los pines 12 y 13.

Apretando cada uno de los dos pulsadores conseguimos que los leds se desplacen hacia uno y otro lado.

int pulsador1=12;

int pulsador2=13;

void setup(){

pinMode(12,INPUT);

pinMode(13,INPUT);

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(7,OUTPUT);

pinMode(8,OUTPUT);

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

}

void loop(){

if(digitalRead(pulsador1)==HIGH){

for(int x=2;x<=11;x++){

digitalWrite(x,HIGH);

digitalWrite(x-1,LOW);

delay(1000);

}

}

if(digitalRead(pulsador2)==HIGH){

for(int x=11;x>=2;x--){

digitalWrite(x,HIGH);

digitalWrite(x+1,LOW);

delay(1000);

}

}

}

Ejemplo 3

En la siguiente placa para Arduino UNO, controlamos un servo con el potenciómetro conectado en A1.

El programa es este:

#include<Servo.h>

Servo prueba;

void setup() {

Serial.begin(9600);

prueba.attach(11);

}

void loop() {

int potenciometro = analogRead(A1);

int angulo=map(potenciometro,499,1023,5,175);

prueba.write(angulo);

Serial.println(potenciometro);

delay(100);

}

Ejemplo 4

Se trata de un programa que hace una secuencia de LEDs, encendiéndose hacia el centro.

void setup() {

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(7,OUTPUT);

pinMode(8,OUTPUT);

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

pinMode(12,OUTPUT);

}

void loop() {

digitalWrite(6,LOW);

digitalWrite(8,LOW);

for(int x=1;x<=5;x++){

digitalWrite(x+1,HIGH);

digitalWrite(13-x,HIGH);

digitalWrite(x,LOW);

digitalWrite(14-x,LOW);

delay(100);

digitalWrite(7,HIGH);

}

}

Ejemplo 5

Se trata de un programa que genera una secuencia de LEDs con rebote en el centro.

void setup() {

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(7,OUTPUT);

pinMode(8,OUTPUT);

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

pinMode(12,OUTPUT);

}

void loop() {

for(int x=1;x<=5;x++){

digitalWrite(x+1,HIGH);

digitalWrite(13-x,HIGH);

digitalWrite(x,LOW);

digitalWrite(14-x,LOW);

delay(100);

}

digitalWrite(6,LOW);

digitalWrite(8,LOW);

digitalWrite(7,HIGH);

for(int x=1;x<=5;x++){

digitalWrite(7-x,HIGH);

digitalWrite(x+7,HIGH);

digitalWrite(8-x,LOW);

digitalWrite(x+6,LOW);

delay(100);

}

}

Ejemplo 5

Se trata de un programa de secuencia de LEDs que aumenta de uno a cuatro la cantidad de LEDs que se encienden juntos.

void setup() {

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(7,OUTPUT);

pinMode(8,OUTPUT);

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

pinMode(12,OUTPUT);

}

void loop() {

for(int y=2;y<=12;y++){

digitalWrite(y,HIGH);

digitalWrite(y-1,LOW);

delay(100);

}

digitalWrite(12,LOW);

for(int y=2;y<=11;y++){

digitalWrite(y,HIGH);

digitalWrite(y+1,HIGH);

digitalWrite(y-2,LOW);

digitalWrite(y-1,LOW);

delay(100);

}

digitalWrite(11,LOW);

digitalWrite(12,LOW);

for(int y=2;y<=10;y++){

digitalWrite(y,HIGH);

digitalWrite(y+1,HIGH);

digitalWrite(y+2,HIGH);

digitalWrite(y-3,LOW);

digitalWrite(y-2,LOW);

digitalWrite(y-1,LOW);

delay(100);

}

digitalWrite(10,LOW);

digitalWrite(11,LOW);

digitalWrite(12,LOW);

for(int y=2;y<=9;y++){

digitalWrite(y,HIGH);

digitalWrite(y+1,HIGH);

digitalWrite(y+2,HIGH);

digitalWrite(y+3,HIGH);

digitalWrite(y-4,LOW);

digitalWrite(y-3,LOW);

digitalWrite(y-2,LOW);

digitalWrite(y-1,LOW);

delay(100);

}

digitalWrite(9,LOW);

digitalWrite(10,LOW);

digitalWrite(11,LOW);

digitalWrite(12,LOW);

for(int y=2;y<=8;y++){

digitalWrite(y,HIGH);

digitalWrite(y+1,HIGH);

digitalWrite(y+2,HIGH);

digitalWrite(y+3,HIGH);

digitalWrite(y+4,HIGH);

digitalWrite(y-5,LOW);

digitalWrite(y-4,LOW);

digitalWrite(y-3,LOW);

digitalWrite(y-2,LOW);

digitalWrite(y-1,LOW);

delay(100);

}

digitalWrite(8,LOW);

digitalWrite(9,LOW);

digitalWrite(10,LOW);

digitalWrite(11,LOW);

digitalWrite(12,LOW);

}

Ejemplo 6

Se trata de un programa para mover un vehículo mediante un joystick. En un sentido se controla el avance o retroceso del vehículo (Servo miruedas) y en el otro la subida o bajada de la pinza que recoge el cubo de la basura (Servo micubos).

#include<Servo.h>

Servo micubos;

Servo miruedas;

void setup()

{

micubos.attach(9);

miruedas.attach(10);

Serial.begin(9600);

}

void loop()

{

delay(1000);

Serial.println(analogRead(A1));

delay(1000);

Serial.println(analogRead(A0));

int cubo=analogRead(A1);

int cubos=map(cubo,8,900,0,180);

micubos.write(cubos);

delay(15);

int rueda=analogRead(A0);

int ruedas=map(rueda,8,900,0,180);

miruedas.write(ruedas);

delay(15);

}

Ejemplo 7

Se trata de un programa para enviar información gráfica a una matriz de 8x8 LEDs controlada por un integrado MAX7219.

Este módulo dispone de 5 terminales, marcados como DIN, CS, CLK, VCC y GND. Los dos últimos proporcionan la alimentación eléctrica al módulo y se conectan a los puntos correspondientes a 5V y GND de Arduino.

En este caso conectaremos el terminal DIN al pin 8 de Arduino, el terminal CS al pin 9 de Arduino y el terminal CLK al pin 10 de Arduino.

El programa de Arduino envía al display una serie de imágenes (Conjuntos de pixels de la matriz de LEDs) que se mostrarán sucesivamente.

Cada una de estas imágenes se codifica en una linea de código de la siguiente manera.

Como se puede ver, se divide la matriz de LEDs en dos columnas verticales (C1 y C2). Cada una de las filas resultantes se codifica primero en binario y después en hexadecimal.

A continuación se muestra un programa que muestra sucesivamente las diez cifras y las 28 letras.

unsigned char i;

unsigned char j;

//Conexiones entre el display y Arduino

int Max7219_pinCLK = 10;

int Max7219_pinCS = 9;

int Max7219_pinDIN = 8;

unsigned char disp1[38][8]={

{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//0

{0x10,0x18,0x14,0x10,0x10,0x10,0x10,0x10},//1

{0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E},//2

{0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0},//3

{0x8,0x18,0x28,0x48,0xFE,0x8,0x8,0x8},//4

{0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0},//5

{0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x0},//6

{0x3E,0x22,0x4,0x8,0x8,0x8,0x8,0x8},//7

{0x0,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E},//8

{0x3E,0x22,0x22,0x3E,0x2,0x2,0x2,0x3E},//9

{0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22},//A

{0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0},//B

{0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0},//C

{0x7C,0x42,0x42,0x42,0x42,0x42,0x7C,0x0},//D

{0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x7C},//E

{0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x40},//F

{0x3C,0x40,0x40,0x40,0x40,0x44,0x44,0x3C},//G

{0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x44},//H

{0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C},//I

{0x3C,0x8,0x8,0x8,0x8,0x8,0x48,0x30},//J

{0x0,0x24,0x28,0x30,0x20,0x30,0x28,0x24},//K

{0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C},//L

{0x81,0xC3,0xA5,0x99,0x81,0x81,0x81,0x81},//M

{0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0},//N

{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//O

{0x3C,0x22,0x22,0x22,0x3C,0x20,0x20,0x20},//P

{0x1C,0x22,0x22,0x22,0x22,0x26,0x22,0x1D},//Q

{0x3C,0x22,0x22,0x22,0x3C,0x24,0x22,0x21},//R

{0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C},//S

{0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x8},//T

{0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1C},//U

{0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18},//V

{0x0,0x49,0x49,0x49,0x49,0x2A,0x1C,0x0},//W

{0x0,0x41,0x22,0x14,0x8,0x14,0x22,0x41},//X

{0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8},//Y

{0x0,0x7F,0x2,0x4,0x8,0x10,0x20,0x7F},//Z

};

void Write_Max7219_byte(unsigned char DATA)

{

unsigned char i;

digitalWrite(Max7219_pinCS,LOW);

for(i=8;i>=1;i--)

{

digitalWrite(Max7219_pinCLK,LOW);

digitalWrite(Max7219_pinDIN,DATA&0x80);// Extracting a bit data

DATA = DATA<<1;

digitalWrite(Max7219_pinCLK,HIGH);

}

}

void Write_Max7219(unsigned char address,unsigned char dat)

{

digitalWrite(Max7219_pinCS,LOW);

Write_Max7219_byte(address); //address,code of LED

Write_Max7219_byte(dat); //data,figure on LED

digitalWrite(Max7219_pinCS,HIGH);

}

void Init_MAX7219(void)

{

Write_Max7219(0x09, 0x00); //decoding :BCD

Write_Max7219(0x0a, 0x03); //brightness

Write_Max7219(0x0b, 0x07); //scanlimit;8 LEDs

Write_Max7219(0x0c, 0x01); //power-down mode:0,normal mode:1

Write_Max7219(0x0f, 0x00); //test display:1;EOT,display:0

}

void setup()

{

pinMode(Max7219_pinCLK,OUTPUT);

pinMode(Max7219_pinCS,OUTPUT);

pinMode(Max7219_pinDIN,OUTPUT);

delay(50);

Init_MAX7219();

}

void loop()

{

for(j=0;j<38;j++)

{

for(i=1;i<9;i++)

Write_Max7219(i,disp1[j][i-1]);

delay(500);

}

}

Esta linea de código, que muestra el cero,

{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//0

Indica, linea a linea, los leds que estarán encendidos.

La primera linea es la correspondiente a 0x3C, la parte significativa es 3C. Esto nos indica que en la primera parte de la matriz tendremos un 3 (0011) y en la segunda parte una C (1100), todo junto quedará como 00111100. Esta será la disposición de encendido y apagado de los leds de la primera fila de la matriz. De la misma forma se codifican las 7 lineas siguientes.

En la tabla siguiente se pueden ver las equivalencias entre números binarios y hexadecimales.

Ejemplo 8

Se trata de un programa de control de un robot (JordiDuino) con Bluetooth, mediante la aplicación "Blue Control".

Este vídeo nos muestra como trabaja esta aplicación, pero no en nuestro robot ni de la misma manera exactamente.

En nuestro caso las cuatro flechas nos permiten avanzar, retroceder, girar a la izquierda y a la derecha. El punto verde central detiene las dos ruedas. La tecla A levanta la espada y la tecla C la baja para intentar matar a DracDuino.

Se utiliza con una placa Arduino UNO y una shield Imagina Arduino de Picaxe.es.

En el pin 2 está conectada una entrada digital con un final de carrera. Si su entrada tiene un valor alto (HIGH) el robot se detiene durante un tiempo de 200 segundos.

Las dos ruedas del robot se mueven con dos motores de corriente continua, mediante un integrado de puente en H, L293DD, que les proporciona hasta un amperio por canal. La rueda de la derecha se controla con los pines 7 y 8 y la rueda izquierda con los pines 12 y 13.

La espada del robot se controla con un servo conectado al pin 6.

El módulo de Bluetooth utiliza los mismos pines del puerto serie de comunicación con el ordenador a través del cable USB. Por esta razón para cargar el programa en Arduino hemos de retirar el módulo Bluetooth o el puente correspondiente.

El programa es el siguiente:

#include <Servo.h>

Servo espada;

void setup(){

pinMode(2,INPUT);

pinMode(3,OUTPUT);

pinMode(7,OUTPUT);

pinMode(8,OUTPUT);

pinMode(12,OUTPUT);

pinMode(13,OUTPUT);

espada.attach(6);

Serial.begin(9600);

}

void loop(){

char dato = Serial.read();

//Mover hacia adelante

if(dato == 'U'){

//Rueda derecha

digitalWrite(7,HIGH);

digitalWrite(8,LOW);

//Rueda izquierda

digitalWrite(12,LOW);

digitalWrite(13,HIGH);

}

//Mover hacia atras

if(dato == 'D'){

//Rueda derecha

digitalWrite(7,LOW);

digitalWrite(8,HIGH);

//Rueda izquierda

digitalWrite(12,HIGH);

digitalWrite(13,LOW);

}

//Girar a la derecha

if(dato == 'R'){

//Rueda derecha

digitalWrite(7,LOW);

digitalWrite(8,HIGH);

//Rueda izquierda

digitalWrite(12,LOW);

digitalWrite(13,HIGH);

}

//Girar a la izquierda

if(dato == 'L'){

//Rueda derecha

digitalWrite(7,HIGH);

digitalWrite(8,LOW);

//Rueda izquierda

digitalWrite(12,HIGH);

digitalWrite(13,LOW);

}

//Parar las dos ruedas

if(dato == 'C'){

//Rueda derecha

digitalWrite(7,LOW);

digitalWrite(8,LOW);

//Rueda izquierda

digitalWrite(12,LOW);

digitalWrite(13,LOW);

}

//Levantar la espada

if(dato == 'a'){

espada.write(0);

}

//Bajar la espada

if(dato == 'b'){

espada.write(90);

}

//Muerte del caballero. Se activa al presionar el pulsador del pin 2.

if(digitalRead(2) == HIGH){

muerte();

}

}

void muerte(){

//Paro de las dos ruedas

//Rueda derecha

digitalWrite(7,LOW);

digitalWrite(8,LOW);

//Rueda izquierda

digitalWrite(12,LOW);

digitalWrite(13,LOW);

//Levantar la espada

espada.write(0);

//Intermitencia durante mucho tiempo (200 segundos)

for (int i=0; i <= 1000; i++){

digitalWrite(3,HIGH);

delay(200);

digitalWrite(3,LOW);

delay(200);

}

}

Ejemplo 9

Se trata de un programa para el display de LEDs (8x8). Se trata de un bitman que primero baila y después corre hacia la derecha.

Estos son los fotogramas de la secuencia del baile con su código hexadecimal al lado.

A continuación se pueden ver los fotogramas de la carrera, con su codificación en hexadecimal.

A continuación se muestra el programa completo.

unsigned char i;

unsigned char j;

//Conexiones entre el display y Arduino

int Max7219_pinCLK = 10;

int Max7219_pinCS = 9;

int Max7219_pinDIN = 8;

unsigned char disp1[41][8]={

{0x18,0x18,0x3C,0x5A,0x5A,0x24,0x24,0x66},//1

{0x00,0x18,0x3C,0x5A,0x5A,0x18,0x18,0x3C},//2

{0x00,0x30,0x3C,0xDA,0x3C,0x28,0x68,0x0C},//3

{0x00,0x30,0x3C,0x5A,0x5A,0x28,0x28,0x6C},//4

{0x00,0x18,0x3C,0x5A,0x5A,0x18,0x18,0x3C},//5

{0x0C,0x0C,0x3C,0x5B,0x3C,0x14,0x16,0x30},//6

{0x00,0x0C,0x3C,0x5A,0x5A,0x14,0x14,0x36},//7

{0x18,0x18,0x3C,0x5A,0x5A,0x24,0x24,0x66},//8

{0x00,0x18,0x3C,0x5A,0x5A,0x18,0x18,0x3C},//9

{0x00,0x30,0x3C,0xDA,0x3C,0x28,0x68,0x0C},//10

{0x00,0x30,0x3C,0x5A,0x5A,0x28,0x28,0x6C},//11

{0x00,0x18,0x3C,0x5A,0x5A,0x18,0x18,0x3C},//12

{0x0C,0x0C,0x3C,0x5B,0x3C,0x14,0x16,0x30},//13

{0x00,0x0C,0x3C,0x5A,0x5A,0x14,0x14,0x36},//14

{0x18,0x18,0x3C,0x5A,0x5A,0x24,0x24,0x66},//15

{0x00,0x18,0x3C,0x5A,0x5A,0x18,0x18,0x3C},//16

{0x00,0x30,0x3C,0xDA,0x3C,0x28,0x68,0x0C},//17

{0x00,0x30,0x3C,0x5A,0x5A,0x28,0x28,0x6C},//18

{0x00,0x18,0x3C,0x5A,0x5A,0x18,0x18,0x3C},//19

{0x0C,0x0C,0x3C,0x5B,0x3C,0x14,0x16,0x30},//20

{0x00,0x0C,0x3C,0x5A,0x5A,0x14,0x14,0x36},//21

{0x0C,0x0C,0x38,0x5C,0x58,0x24,0x26,0x60},//22

{0x0C,0x0C,0x38,0x5C,0x5C,0x34,0x76,0x80},//23

{0x00,0x2C,0x5D,0x1E,0xD8,0x64,0x04,0x06},//24

{0x00,0x0C,0x1C,0x38,0x1E,0x30,0x10,0x18},//25

{0x0C,0x0C,0x18,0x18,0x1C,0x1C,0x30,0x20},//26

{0x0C,0x0C,0x38,0x5C,0x58,0x24,0x26,0x60},//27

{0x0C,0x0C,0x38,0x5C,0x5C,0x34,0x76,0x80},//28

{0x00,0x2C,0x5D,0x1E,0xD8,0x64,0x04,0x06},//29

{0x00,0x0C,0x1C,0x38,0x1E,0x30,0x10,0x18},//30

{0x0C,0x0C,0x18,0x18,0x1C,0x1C,0x30,0x20},//31

{0x0C,0x0C,0x38,0x5C,0x58,0x24,0x26,0x60},//32

{0x0C,0x0C,0x38,0x5C,0x5C,0x34,0x76,0x80},//33

{0x00,0x2C,0x5D,0x1E,0xD8,0x64,0x04,0x06},//34

{0x00,0x0C,0x1C,0x38,0x1E,0x30,0x10,0x18},//35

{0x0C,0x0C,0x18,0x18,0x1C,0x1C,0x30,0x20},//36

{0x0C,0x0C,0x38,0x5C,0x58,0x24,0x26,0x60},//37

{0x0C,0x0C,0x38,0x5C,0x5C,0x34,0x76,0x80},//38

{0x00,0x2C,0x5D,0x1E,0xD8,0x64,0x04,0x06},//39

{0x00,0x0C,0x1C,0x38,0x1E,0x30,0x10,0x18},//40

{0x0C,0x0C,0x18,0x18,0x1C,0x1C,0x30,0x20},//41

};

void Write_Max7219_byte(unsigned char DATA)

{

unsigned char i;

digitalWrite(Max7219_pinCS,LOW);

for(i=8;i>=1;i--)

{

digitalWrite(Max7219_pinCLK,LOW);

digitalWrite(Max7219_pinDIN,DATA&0x80);// Extracting a bit data

DATA = DATA<<1;

digitalWrite(Max7219_pinCLK,HIGH);

}

}

void Write_Max7219(unsigned char address,unsigned char dat)

{

digitalWrite(Max7219_pinCS,LOW);

Write_Max7219_byte(address); //address,code of LED

Write_Max7219_byte(dat); //data,figure on LED

digitalWrite(Max7219_pinCS,HIGH);

}

void Init_MAX7219(void)

{

Write_Max7219(0x09, 0x00); //decoding :BCD

Write_Max7219(0x0a, 0x03); //brightness

Write_Max7219(0x0b, 0x07); //scanlimit;8 LEDs

Write_Max7219(0x0c, 0x01); //power-down mode:0,normal mode:1

Write_Max7219(0x0f, 0x00); //test display:1;EOT,display:0

}

void setup()

{

pinMode(Max7219_pinCLK,OUTPUT);

pinMode(Max7219_pinCS,OUTPUT);

pinMode(Max7219_pinDIN,OUTPUT);

delay(50);

Init_MAX7219();

}

void loop()

{

for(j=0;j<42;j++)

{

for(i=1;i<9;i++)

Write_Max7219(i,disp1[j][i-1]);

delay(100);

}

}