Clase de consulta

Clase de consulta

de Sebastian Piceda Palmieri -
Número de respuestas: 5

Cuando se realizara la proxima clase de ayuda, ya que yo y mi equipo estamos teniendo dificultades para poder llevar a cabo el ejercicio del contador, no estamos pudiendo entender el codigo base

En respuesta a Sebastian Piceda Palmieri

Re: Clase de consulta

de Joaquin Perez Mauri -
Buenas Sebastian, si no mal recuerdo la siguiente clase de consulta había quedado fijada para el lunes 5 a las 16:30, de todas maneras pueden usar el foro para cualquier otra duda que tengan.
Les explico por arriba como funciona el código base del ejercicio del display de 7 segmentos. Lo primero que aparece en el código es el byte en binario utilizado para hacer que aparezca un "0" en el display, para poder entender porque este es así y poder generar los bytes para los otros números les recomiendo ver que segmento esta conectado a cada pin del Arduino y entender como hace el programa para encender los números en el dislpay (por esto les recomiendo completar los otros números cuando tengan un buen entendimiento del programa). Luego hay dos partes importantes, el setup (que al completarlo les va permitir entender de como se utilizan los pines en este código) y el loop. Este último se basa en encender los segmentos del display de a uno, utilizando la variable offORon, la mascara, y la operación de corrimiento (que tienen que investigar). La idea es que si bien los segmentos se prenden de a uno, el Arduino funciona los suficientemente rápido como para que parezca que se encienden al mismo tiempo.
Les recomiendo que primero se enfoquen en hacer aparecer el cero en el display, después traten de agregar los otros numeros y verifiquen que funcionan correctamente. Por último pueden tratar de agregar el botón y hacer que se haga la cuenta regresiva.
Espero haberlos encaminado un poco mas para que puedan entender el programa.

Saludos,
Joaquín Pérez
En respuesta a Joaquin Perez Mauri

Re: Clase de consulta

de Sebastian Piceda Palmieri -
hay algun lugar donde pueda aprender como se usan y que hacen las funciones como Serial.begin o offORon?, ademas de eso creo haber configurado los bytes para cada numero correctamente, pero no se como indicarle a la maquina que byte quiero usar, ya que no se si son variables o que son.

Sebastian Piceda
En respuesta a Sebastian Piceda Palmieri

Re: Clase de consulta

de Victor Matias Viva Baez -

Sebastian,

En el caso de offORon no es una función sino una variable de tipo byte. Si se fijan antes del setup van a encontrar su declaración. La idea de esta variable es que almacene el estado en el cual se quiere setear el pin (0 = off, 1 = on).

Por otro lado, para las funciones de Arduino (como en este caso es Serial.begin), existe una web donde pueden buscarlas y averiguar qué parámetros necesita y cómo se usa. Si ustedes ponen "nombreDeLaFunción() Arduino", entre las opciones les va a aparecer la web oficial de Arduino. También pueden buscar las funciones directamente dentro de esta web, es importante recordar que para que se entienda que lo que están buscando es una función, deben poner los paréntesis al final del nombre.

Más concretamente, Serial.begin() sirve para indicar a qué velocidad (bits/segundo) se comunicará la placa con la computadora, por lo general se utiliza 9600, pero es posible hacerlo a otras velocidades. Esto es necesario indicarlo si se quiere imprimir información en el monitor en serie.

Con respecto a los números, la idea es que sean declarados de la misma manera que está declarado el cero. Se especifica primero el tipo (byte), luego el nombre de la variable (cero, uno, dos, ...) y se le da el valor binario correspondiente, en el caso del cero sería el B11011110. Cómo decirle a la máquina qué número representar es parte del trabajo que tienen que intentar resolver, y para eso analicen bien cómo se hace con el cero e intenten extrapolarlo al resto de números.

Espero haber resuelto tus dudas, cualquier cosa no duden en consultar y recuerden que el lunes hay clase de consulta,

Saludos,
Matías

En respuesta a Victor Matias Viva Baez

Re: Clase de consulta

de Sebastian Piceda Palmieri -
Por ahora logre entender gran parte del codigo, las unicas 3 lineas que no logro entender son:
Serial.print("a - "); Serial.println(offORon, BIN);
offORon = offORon << (j-4);
offORon = offORon & mascara;
Busque serial print en arduino pero su descripcion usaba terminos que desconozco y usaba muchos tecnicismos, aunque supongo que con eso se intenta mandar la informacion al visualizador de que prenda los leds definidos por la variable offORon, aunque no entiendo que hace exactamente cada una de las 2 funciones, en especial la funcion que dice Serial.print("a - ");

con respecto a offORon = offORon << (j-4);, creo haber entendido el proposito de esto, el cual es cambiar la variable del byte 0 al siguiente. Pero me cuesta entender la parte en la que define a esta variable como offORon = offORon & mascara;, se supone que esta definiendo a esta variable como si misma + la variable mascara?.

Tampoco llego a entender que es lo que le falta al codigo para funcionar, talvez eso se deba a que no logro entender las funciones y variables utilizadas.
En respuesta a Sebastian Piceda Palmieri

Re: Clase de consulta

de Victor Matias Viva Baez -

Sebastian,

Serlal.print() y Serial.println() son para escribir en el monitor serial, con la diferencia de que la segunda agrega un salto de línea al final. Les recomiendo simular y mirar el monitor en serie para ver cómo efectivamente se van escribiendo cosas, y prueben modificar el contenido de las funciones para ver cómo afecta. 

Al buscar las funciones en la web de Arduino van a encontrar una sección donde se especifica la sintaxis de las funciones, donde aclara qué representa cada parámetro, en este caso hay dos alternativas:

Serial.print(val)
Serial.print(val, format)

Donde val es el valor que se quiere imprimir en el monitor serial, y format el formato del mismo.

En este caso, primero se utiliza Serial.print("a - "), lo cual escribe en el monitor exactamente lo que está entre comillas, y no es necesario especificar ningún formato. Y luego le sigue el Serial.println(offORon, BIN), lo cual escribe el valor de offORon, en binario (BIN), les aconsejo jugar un poco con eso, modificar el formato o quitarlo y ver qué se escribe en el monitor serie.

Con respecto a las otras dos líneas, hacen un trabajo en conjunto, investiguen un poco más sobre el funcionamiento de <<. Para esto precisamente les puede servir utilizar el monitor serial, e imprimir el valor de la variable después de aplicarle diferentes corrimientos. También revisen cómo funciona el operador &, intenten interpretar el rol de máscara y por qué tiene el valor que tiene.

Si les quedan dudas podemos verlo más detenidamente en la clase de consulta.

Un saludo,

Matías