Clase de consulta - parcial

Clase de consulta - parcial

de Martín Gugliucci Nasta -
Número de respuestas: 3

Hola, buenas tardes.  Quisiéramos saber con mi equipo si mañana (martes 7) es posible realizar una clase de consulta sobre el parcial en el horario de clase. Ya que tenemos algunas dudas sobre la letra y partes del código que se nos dio. 

Saludos!

En respuesta a Martín Gugliucci Nasta

Re: Clase de consulta - parcial

de Sebastian Montes de Oca -
Estimados, cómo están?
hoy no habría clase porque estamos en receso por parciales, pero voy a estar en el instituto a partir de las 1730 hasta las 18 que tengo una reunión.
Cómo el tiempo es muy corto, antes de venir manden cual es/son sus dudas por este medio. Traten de ser lo más preciso posible para poder pensar una posible solución y que también le sirva al resto de sus compañeros.

Quedo a la espera de sus consultas y si alguien le pasó el mismo problema y encontró una solución siéntase libre de responder, por supuesto sin publicar código (salvo que sea de ejemplo).

saludos, sebastian
En respuesta a Sebastian Montes de Oca

Re: Clase de consulta - parcial

de Martín Gugliucci Nasta -
Buenas tardes Sebastián, gracias por responder! Te mandamos las principales dudas por acá.
1) ¿hay que incluir sensores de luz? de ser así ¿cuál sería su modo de operar? esta pregunta surgió ya que si bien la letra del parcial no menciona nada sobre dichos sensores, en el código que se nos brindó se definen unos umbrales para unos sensores de luz:
#define UMBRAL_LUZ_ESTAR 512
#define UMBRAL_LUZ_CUARTO 512

2) Tenemos una duda en las preguntas 9 y 12, ya que ambas preguntan por el funcionamiento de una función, activarAlarma () y sonarAlarma() respectivamente. Sin embargo en el código no hay ninguna función con estos nombres. hay una función que es encenderAlarma(). Nuestra duda viene si estas dos preguntas se refieren a la misma función (la que aparece en el código como encenderalarma) o son funciones distintas que debemos de crear e implementar nosotros. O la de sonarAlarma es la misma que encenderAlarma, y activarAlarma la debemos de crear nosotros.
Dejamos a continuación las preguntas 9 y 12.
9. ¿Qué hace la función activarAlarma () y en qué momento se llama a esta función en el código? ¿Qué variables se utilizan en esta función y para qué sirven?
12. En la sección de lazo principal del código, se llama a la función sonarAlarma() . ¿Qué hace esta función y qué variables utiliza?

3) Luego, en la letra dice "Completar el código comenzando por las funciones faltantes." ¿Quiere decir que debemos de crear nuevas funciones o que completemos las que hay por completar?

4) Con respecto a la medición de distancias, la función de distancia inicial llama a la función "calculoMediaBorrandoExtremos(float distVect[])", lo que no logramos comprender es el por qué se calcula la distancia media borrándole los extremos, es decir sacándole la mayor y menor distancia medida. Adjunto la función.
float calculoMediaBorrandoExtremos(float distVect[]){
byte borrados = 0;
float media =0.0;
float mayor=0.0;
float menor=1000.0;
for (int i=0; i<10;i++){
if (distVect[i] < menor){
menor = distVect[i];
} else { if (distVect[i] > mayor){
mayor = distVect[i];
}}
}
for (int i=0; i<10; i++){
if ((distVect[i] == menor) || (distVect[i] == mayor)){
distVect[i]=0;
borrados = borrados+1;
}
media = media + distVect[i];
}
media = media/(10.0-borrados);
return media;

5) Por último, no entendemos la penúltima y antepenúltima linea de la función leerBoton. Entendemos cómo funciona y cómo es que opera para devolver true cuando se presiona un botón y false cuando no se apreta un botón. Pero no entendemos por qué luego de modificar la variable estado
(estado = !digitalRead(rowPin);) se impone el pin de las columnas como HIGH y su modo a INPUT.
Adjuntamos la función mencionada

bool leerBoton(byte rowPin, byte columnPin){
bool estado;
pinMode(rowPin,INPUT_PULLUP);
pinMode(columnPin,OUTPUT);
digitalWrite(columnPin,LOW);
estado = !digitalRead(rowPin);
digitalWrite(columnPin,HIGH);
pinMode(columnPin,INPUT);
return estado;
}

Después tenemos unas dudas puntuales que preferimos plantéartelas allá.

Saludos, nos vemos en un rato!
En respuesta a Martín Gugliucci Nasta

Re: Clase de consulta - parcial

de Juan Sánchez -
Estimad@s, ¿Cómo están?. Respondo:
1) NO deben usar sensores de luz en el ejercicio. Los valores umbrales definidos no los tomen en cuenta.
A la hora de responder las preguntas contesten de forma hipotética, suponiendo que se utilizaran este tipo de sensores. Si ese fuera el caso, ¿para qué sería util definir mencionados umbrales?

2) activarAlarma() y sonarAlarma() son equivalentes a una única función que es encenderAlarma(). Así que la pregunta 12 no la tengan en cuenta y la pregunta 9 quedaría: ¿Qué hace la función encenderAlarma() y en qué momento se llama a esta función en el código?, ¿Qué variables se utilizan en esta función y para qué sirven?

3) Quiere decir que comiencen por completar las funciones que les damos, que no se pongan a crear funciones nuevas o desarrollar código sin antes entender lo que hacen estas funciones y la lógica global del código brindado. En otras palabras avancen con orden.

4) Los valores extremos se descartan unicamente para evitar tener valores de media muy desiguales o filtrar cambios bruscos en las posiciones del individuo. A fin de cuentas no interesa tanto como se mueve la persona sino, más bien saber si se movió o no. En este sentido, juegen con el valor de umbral de "mayor" y "menor" y ajustenlos para optimizar el funcionamiento.   

5) Si buscan en internet un pad o panel de teclas como el que se usa en el parcial (panel matricial) notaran que dicho panel no es más que un agrupamiento de N pulsadores con la misma conexión que la utilizada en clase (circuito de pull-up). Lo que se está haciendo en la función con la manipulación de los pines "rowPin" y "columnPin" es armar y desarmar el circuito de pull-up/pull-down para poder leer el estado del pin que a mi me interesa. Una vez que leo el estado del pin que quiero, tengo que dejar el teclado/panel en el estado "inactivo" o "por defecto". El estado inactivo es el "estado" o el "valor" que se lee en los pines cuando no se estan presionando teclas. Este es el cometido de las 2 últimas líneas (sin contar la línea "return estado")

Espero haber aclarado, cualquier cosa vuelvan a preguntar
Sds