miércoles, 28 de junio de 2017

Práctica # 2

Secuencia # 1: Barrido de bordes

Durante esta práctica, el mister de programación nos mandó a realizar una secuencia donde los diodos led se enciendan barriendo los bordes de la matriz 8x8. Para realizar esta actividad, requerimos de los siguientes materiales :

  • Matriz 8x8 
  • Arduino Uno
  • Resistencias 220 ohms
  • Cables Jumper (macho-hembra y macho-macho)
Para iniciar, tomamos nuestra matriz y la conectamos por medio de los jumper al Arduino de la siguiente manera:

La secuencia que debíamos realizar tenia que encender sólo los LEDs de los bordes, uno tras de otro ya que no podían estar encendidos dos a la vez. Para realizar la tarea encomendada utilizamos la siguiente programación:

void setup() {
    for (int j=2; j<18; j++)
      pinMode(j, OUTPUT);

     for (int j=2; j<10; j++)
      digitalWrite(j, LOW);
     for (int j=10; j<18; j++)
      digitalWrite(j, HIGH);
}

void loop() {
    for (int j=2; j<3; j++) {
      digitalWrite(j, HIGH);     //Levantamos la columna
      for (int k= 10 ; k<18 ; k++) {
        digitalWrite(k, LOW);   //Encendemos el punto
        delay(100);
        digitalWrite(k, HIGH);  //Apagamos el punto
       }
       digitalWrite(j, LOW);   //Bajamos la columna
   }
   for (int j=17; j<18; j++) {
      digitalWrite(j, LOW);     //Levantamos la columna
      for (int k= 3 ; k<10 ; k++) {
        digitalWrite(k, HIGH);   //Encendemos el punto
        delay(100);
        digitalWrite(k, LOW);  //Apagamos el punto
       }
       digitalWrite(j, HIGH);   //Bajamos la columna
   }
   {
      digitalWrite(9, HIGH);     //Levantamos la columna
      for (int k= 16 ; k>=10 ; k--) {
        digitalWrite(k, LOW);   //Encendemos el punto
        delay(100);
        digitalWrite(k, HIGH);  //Apagamos el punto
       }
       digitalWrite(9, LOW);   //Bajamos la columna
   }
 
      digitalWrite(10, LOW);     //Levantamos la columna
      for (int k= 8 ; k>2 ; k--) {
        digitalWrite(k, HIGH);   //Encendemos el punto
        delay(100);
        digitalWrite(k, LOW);  //Apagamos el punto
       }
       digitalWrite(10, HIGH);   //Bajamos la columna
   }




Secuencia # 2:  Infinito


Durante esta práctica, el mister de programación nos mandó a realizar una secuencia donde los diodos led se enciendan barriendo dos bordes de la matriz y cruzándose, formando una equis, haciendo esto infinitamente.

La secuencia, al igual que la anterior, debía prender solo un LED a la vez, y tuvimos que usar operaciones matemáticas para realizar la siguiente programación a través de diferencias:


int s=1;


void setup()


{
    for (int j=2; j<19; j++)
      pinMode(j, OUTPUT);

     for (int j=2; j<10; j++)
      digitalWrite(j,HIGH);
     for (int j=10; j<18; j++)
      digitalWrite(j, LOW);

}


void loop() {
 
 
          digitalWrite(2, LOW);  
      for (int k= 18 ; k>=10 ; k--) {
        digitalWrite(k, HIGH);
        delay(250);
        digitalWrite(k, LOW);
       }
      digitalWrite(2, HIGH);



      for (int e=2; e<10; e++) {
        digitalWrite(e, LOW);
        digitalWrite (e+8, HIGH);
        delay(250);
        digitalWrite(e,HIGH);
        digitalWrite(e+8,LOW);
      }

        digitalWrite(9, LOW);  
      for (int k= 17 ; k>=10 ; k--) {
        digitalWrite(k, HIGH);
        delay(250);
        digitalWrite(k, LOW);
       }
      digitalWrite(9, HIGH);
 

    s=1;
    for (int p=9; p>=2; p--){
 
   
     
      digitalWrite(p, LOW);
        digitalWrite (p+s, HIGH);
        delay(250);
        digitalWrite(p,HIGH);
        digitalWrite(p+s,LOW);

         s=s+2;
En esta práctica, la parte más difícil fue realizar el barrido diagonal inverso debido a que la diferencia entre las filas y columnas no era la misma siempre.




Sofia Pin
Walter Sánchez
3RO Oxford