Puntos de dos dígitos
UNIDAD EDUCATIVA PARTICULAR “POLITÉCNICO”
2do AÑO
- 2° AÑO DE BACHILLERATO “A”
TAREA # 1 –PUNTOS DE DOS DIGITOS
Nombre: Geanela Gliser Borbor Espinales Fecha: 30/09/17
Puntos de dos dígitos
Las
actividades que se han realizado durante todas estas semanas es
agregarle un display de 7 segmentos al juego el snake donde nos
demoramos dos clases en poner configuracion de arduino y conectar bien
los pines del display al arduino, tuvimos dificultades porque en un
indicio no sabiamos que pines le pertenecia a cada segmente y teniamos
que agregar mas cantidad de numeros es decir mayores a 9 entonces, la
unica opcion era que identifiquemos cual le pertenece a cada linea que
se encendia con el numero de pines que se encuentra en el arduino. Esto
me aporto a buscar una solucion al encontrar los pines al que pertenece
cadaletra del abecdario, ademas tuvimos que cambiar un display porque se nos quemo en el primer intento de conectarlo por no ubicar correctamente la resistencia, estaba sobrepuesta, generando dificultades por otra parte los protoboards que se estan usando se encuentran muy usados y los huecos donde se ubican los cables y todo eso se encuentran desgastados y algunos han dejado de funcionar por eso se debe comprobar si funciona y seguir moviendo los puntos.El código que se hizo fue:
boolean comido = false;
long comidaX;
long comidaY;
int ladoy = A0;
int ladox = A1;
int valor1;
int valor2;
int posX = 5;
int posY = 13;
int direccion = 0;
int punto = 12;
int
long time;
void setup() {
//PINES DEL 2 AL 19 COMO SALIDA
for (int j = 2; j <= 17; j++)
pinMode(j, OUTPUT);
//APAGO LOS PINES LOS POSITIVOS LES MANDO LOW Y LOS NEGATIVOS LES MANDO HIGH
for (int j = 10; j <= 17; j++) {
pinMode(j, OUTPUT);
digitalWrite(j, HIGH);
}
/*display 1 */
pinMode(18, OUTPUT); //5
pinMode(19, OUTPUT);//6
pinMode(22, OUTPUT);//7
pinMode(25, OUTPUT);//8
pinMode(24, OUTPUT);//9
pinMode(20, OUTPUT);//10
pinMode(21, OUTPUT);//11
for (int i = 18; i <= 25; i++) {
digitalWrite(i,1);
}
/*display 2 */
pinMode(26, OUTPUT); //5
pinMode(27, OUTPUT);//6
pinMode(28, OUTPUT);//7
pinMode(29, OUTPUT);//8
pinMode(30, OUTPUT);//9
pinMode(31, OUTPUT);//10
pinMode(32, OUTPUT);//11
for (int i = 26; i <= 32; i++) {
digitalWrite(i,1);
}
//digitalWrite(posX, HIGH);
//digitalWrite(posY, LOW);
randomSeed(analogRead(A3));
direccion = 0;
posX = 5;
posY = 13;
time = 0;
generarComida();
}
void display (int a, int b, int c, int d, int e, int f, int g) {
digitalWrite(18,a); //5
digitalWrite(19,b); //6
digitalWrite(20,c); //7
digitalWrite(21,d);//8
digitalWrite(22,e);//9
digitalWrite(24,f);//10
digitalWrite(25,g);//11
}
void displayDos (int a, int b, int c, int d, int e, int f, int g) {
digitalWrite(28,a); //5
digitalWrite(32,b); //6
digitalWrite(26,c); //7
digitalWrite(27,d);//8
digitalWrite(30,e);//9
digitalWrite(31,f);//10
digitalWrite(29,g);//11
}
void loop() {
digitalWrite(posX, HIGH);
digitalWrite(posY, LOW);
digitalWrite(posX, LOW);
digitalWrite(posY, HIGH);
digitalWrite(comidaX, HIGH);
digitalWrite(comidaY, LOW);
digitalWrite(comidaX, LOW);
digitalWrite(comidaY, HIGH);
if(millis() >= time+150){
valor1 = analogRead(ladox);
valor2 = analogRead(ladoy);
time = millis();
if (valor1 > 700) {
direccion = 0;
} else {
if (valor1 < 400)
direccion = 1;
}
if (valor2 > 700) {
direccion = 2;
} else {
if (valor2 < 400)
direccion = 3;
}
if (direccion == 0) {
if (posX == 9)
posX = 2;
else
posX++;//posX = posX + 1;
} else {
if (direccion == 1) {
if (posX == 2)
posX = 9;
else
posX--;//posX = posX - 1;
}
}
if (direccion == 2) {
if (posY == 17)
posY = 10;
else
posY++;
} else {
if (direccion == 3) {
if (posY == 10)
posY = 17;
else
posY--;
}
}
if (comido == true) {
punto++;
generarComida();
}
//prendo el led comida
//digitalWrite(comidaX, HIGH);
//digitalWrite(comidaY, LOW);
switch (punto) {
case 0:
display (1,1,1,1,1,1,0);//0
displayDos (0,0,0,0,0,0,0);//0
break;
case 1:
display (0,1,1,0,0,0,0);//1
displayDos (0,0,0,0,0,0,0);//0
break;
case 2:
display (1,1,0,1,1,0,1);//2
displayDos (0,0,0,0,0,0,0);//0
break;
case 3:
display (1,1,1,1,0,0,1);//3
displayDos (0,0,0,0,0,0,0);//0
break;
case 4:
display (0,1,1,0,0,1,1);//4
displayDos (0,0,0,0,0,0,0);//0
break;
case 5:
display (1,0,1,1,0,1,1);//5
displayDos (1,1,1,1,1,1,1);//0
break;
case 6:
display (1,0,1,1,1,1,1);//6
displayDos (0,0,0,0,0,0,0);//0
break;
case 7:
display (1,1,1,0,0,0,0);//7
displayDos (0,0,0,0,0,0,0);//0
break;
case 8:
display (1,1,1,1,1,1,1);//8
displayDos (0,0,0,0,0,0,0);//0
break;
case 9:
display (1,1,1,0,0,1,1);//9
displayDos (0,0,0,0,0,0,0);//0
break;
case 10:
display (0,1,1,0,0,0,0);//1
displayDos (1,1,1,1,1,1,0);//0
break;
case 11:
display (0,1,1,0,0,0,0);//1
displayDos (1,1,1,1,1,1,1);//1
break;
case 12:
display (0,1,1,0,0,0,0);//1
displayDos (0,0,1,0,0,0,0);//1
case 13:
display (0,1,1,0,0,0,0);//1
displayDos (1,1,0,1,1,0,1);//2
}
if (posX == comidaX && posY == comidaY) {
comido = true;
}
}
}
void generarComida() {
do {
comidaX = random(2, 9);
} while (comidaX == posX);
do {
comidaY = random(10, 17);
} while (comidaY == posY);
comido = false;
}
En conclusion, para poder conectar todos los materiales que se requieren trabajar se debe verificar que todos funcionen correctamente y esten en buen estado poara que de esta manera no obtengan inconvenientes al encender o en mucho de los casos no lo reconocen del todo y se tiene que estar moviendo el proyecto mas de lo que se debe provocando en un futuro que los cables se aflojen de otras funciones y el proyecto se dañe, por otra parte, el display me ha aportado a que yo adquiera conocimientos sobre como uno puede poner un orden a cada pin que se asigne por ende facilitar el trabajo, los codigos fueron un poco complejos pero con la ayuda de la maestra se pudo mejorar la configuracion y ver los errores que estabamos hacinedo, de esta doema corregir, ademas de no volver a cometer lo mismo mas de una vez.
+
Comentarios
Publicar un comentario