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
}
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
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