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
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.
Espero haberlos encaminado un poco mas para que puedan entender el programa.
Saludos,
Joaquín Pérez
Sebastian Piceda
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
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.
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