Paso 4: Qué hace el boceto?
El dibujo es bastante simple, pero todavía ilustra varios conceptos de programación.
En primer lugar, el bosquejo inicializa varias variables que se utilizan más adelante en el bosquejo. Junto con los pines que vamos a utilizar, inicializamos la variable para las velocidades de parpadeo mínimo y máximo, dos valores de tiempo de la tienda y para si el LED debe estar encendido o apagado.
Dado que estas variables se inicializan fuera de cualquier función, son en el ámbito global. Esto significa que puede ser utilizados y cambiados en cualquier lugar en el código y los cambios se mantendrán. Esto será importante más adelante.
El siguiente es la función setup(). Aquí utilizamos pinMode() para configurar los pines, uno para la entrada (el cursor) y de salida (LED). Luego leemos el valor de la botella... no tienes que esperar hasta el loop() leer un valor de como configurar el pin en.
Después setup(), loop() funciona una y otra vez hasta que la energía esté desconectada. No inicializamos las variables aquí porque todo lo que necesitamos es ya en el ámbito global.
Primero, obtenemos la hora actual llamando millis() y poniendo eso en t.
A continuación leemos el valor del atenuador deslice en sldr_val. Debo señalar aquí que los valores que obtenemos aquí deberían ser 0 a 1023, pero Deslice el regulador no puede dar valores tan altos.
Ahora verificamos si debemos hacer algo. Hacemos esto al comparar el tiempo transcurrido desde la anterior iteración de loop() a blink_val. Cuando loop() se ejecuta la primera vez, la vez anterior (l) y blink_val ya establecidos a 0, por lo que todavía funciona. Si ha pasado suficiente tiempo, es tiempo de hacer algo, por lo que entrar en el bloque "si" y empezar a hacer cosas.
Enviamos el valor de la Deslice el regulador (que acaba de leer) en el monitor serie.
A continuación actualizamos el valor de blink_val utilizando un bilt en función map() (leer más en http://arduino.cc/en/Reference/Map). Mapa toma una variable y escala de una gama a otra gama. El primer rango es lo que podría ser el valor Deslice el regulador de intensidad, y el segundo rango es lo que queremos; ya hemos inicializado los límites de este rango en la parte superior del bosquejo como min_rate y max_rate.
Ahora tenemos un valor actualizado de blink_rate para comparar con el tiempo transcurrido de esta iteración del loop() hasta más adelante.
El paso siguiente escribe el pin que el LED está encendido, de tal modo convirtiendo el LED de encendido o apagado. La sintaxis utilizada para esto es muy compacta, por lo que voy a explicar.
Una llamada a digitalWrite() toma dos argumentos: el pin y el valor a escribir. Nuestro primer argumento aquí es la variable para el pin del LED, led_pin. El segundo argumento no es un valor, o incluso una variable... es una expresión.
Porque este pin se encuentra en modo digital, pueden entender solamente dos valores: verdadero o falso. Las constantes altas y bajas son alias de verdadero y falso, al utilizar alta, está realmente pasando asi verdad.
De todos modos, de nuevo a nuestra expresión. Es un operador ternario, que es una especie de taquigrafía para if/else bloques de código. Hemos envuelto el operador ternario en paréntesis por claridad. Lamentablemente estos no están documentados en la sección de referencia de la Página Web de Arduino, así que sigue leyendo aquí.
Un operador ternario consta de tres partes. La primera parte es otra expresión que se evalúa el operador ternario. Es seguido por un signo de interrogación.
La segunda parte es el valor devuelto por el operador ternario si la primera parte se evalúa como true. Es seguido por un coma.
La tercera parte es el valor devuelto por el operador ternario si la primera parte no evalúa para true (es decir, false).
La primera parte es nuestra o variable, que es el valor booleano que definimos en la parte superior del bosquejo. Nuestra segunda parte es alta, y la segunda parte es baja.
Así que si o es verdadera, se escribe alto el pin, si no baja se escribe.
Otros veteranos programación probablemente dirá "pero podría simplemente pasar o directamente y no molestarse con un ternario" y la derecha porque o es un valor booleano y va a ser falso (que alta es un alias de) o false (que baja es un alias de). Aquí usé para ilustrar lo que hace un operador ternario.
Después de eso, nos preparamos para el futuro. Invierta o (true se convierte en falsa, false se convierte en verdad), luego actualizar el anterior tiempo l al valor de la corriente t de tiempo.
Pero hay otra cosa aquí. Mediante el uso de o de esta forma en combinación con el LED, hemos creado una máquina de estado para el LED. En electrónica, es una máquina de estado
Un dispositivo que puede estar en uno de un número determinado de condiciones estables dependiendo de su condición anterior y el valor actual de sus entradas.
Nuestra máquina de Estado sólo tiene dos Estados, encendido y apagado.