Paso 13: Ejemplo de integración de componentes
Usted es hecho! Supongo que todo lo que queda es darle un suave empujón en la dirección correcta. Echemos un vistazo al bosquejo de ejemplo llamado "FS_01_LED.ino":
En primer lugar, debemos indicar que queremos utilizar la biblioteca de FunShield y la instanciamos un objeto FunShield llamado "fs":
// sets up and initialize FunShield#include <FunShield.h> #include <Wire.h> // Require for I2C communication FunShield fs; // Instanciate FunShield instance
Un par de variables sencillas para ayudarnos:
// variable declarationsint led = 0; // Can be any led from 0 to 7 int delayTime = 1000; // Delay time in milliseconds
Desde la biblioteca de FunShield encarga de la configuración, la función setup() puede estar vacía. Yo generalmente ad algunos código para ver lo que está sucediendo a través de la consola:
void setup() { Serial.begin(9600); // Setup serial communications for troubleshooting Serial.println("FS_01_LED.ino"); }
Y ahora el bucle principal:
void loop(){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off delay(delayTime); }
Debe reconocerlo como el sketch de Arduino básico "parpadear", simplemente usando el FunShield LED() función en lugar de digitalWrite().
Permite llevar en un bucle for , por lo que podemos convertir todos los LEDs de encendido y apagado.
void loop(){ for(led=0; led<8; led++){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off } }
Usted puede bajar su valor de delayTime por lo que no hace falta ser un completo 8 segundos para atravesar los LEDs.
Ahora, ¿cómo podríamos conseguir el LED invertir sentido cuando llega al final? ¿Otro para el lazo tal vez?
void loop(){ for(led=0; led<8; led++){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off } for(led=6; led>0; led--){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off } }
Aviso que empiezo en led #6 #7 porque ya estaba iluminada por el primer bucle for. También dejo el segundo bucle led # 1 porque el otro bucle for maneja tan bien.
¿Qué pasa si queremos añadir una pista sonora como la dirección de los cambios de luz? Aquí es donde la belleza de la biblioteca viene muy bien. No hay necesidad de buscar números de pin. Simplemente llame a la función speaker()
void loop(){ for(led=0; led<8; led++){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off } speaker(440, 10); // short beep for(led=6; led>0; led--){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off } speaker(880, 10); // short beep }
Un truco final para tirar. ¿Variamos la velocidad del LED basado en el valor del potenciómetro de ajuste? Pedazo de pastel! Sólo cambia la variable delayTime a la función trim() :
void loop(){ for(led=0; led<8; led++){ LED(led, HIGH); // turn LED on delay(trim()); // read potentiometer to determine delay time. LED(led, LOW); // turn LED off } speaker(440, 10); // short beep for(led=6; led>0; led--){ LED(led, HIGH); // turn LED on delay(trim()); LED(led, LOW); // turn LED off } speaker(880, 10); // short beep }
Wow, eso fue fácil! Tienes la base para un divertido juego de Pong de dimensión 2. Ahora salir y divertirse!