Paso 4: Explicación del código
Ahora vamos a romper el código. Primero vemos:
// LED Pressure Game with Force Sensitive Resistorconst int red = 11; // LEDs connected to each pin const int yellow1 = 10; const int yellow2 = 9; const int green1 = 6; const int green2 = 5; const int blue = 3; const int FSR = 0; // FSR connected to analog pin 0
Lo he visto escrito como const int a int, pero fui con const int y que trabajó para mí.
Sólo estamos diciendo el arduino que pernos estamos usando y establecer un código para nosotros mismos hacer más fácil recordar cual pin es cual. Esto es donde puede cambiar los colores para que coincida con su configuración. Si cambia el nombre del color aquí, hacer un Ctrl + F y buscar todas las instancias de esa palabra y reemplazarla.
El siguiente es
int level = 0; // variable for the level of force applied to the FSR
Esto sólo se configura una variable de nivel, que vamos a utilizar para medir la fuerza ejercida sobre el FSR (Resistor sensible de la fuerza). Nos Coloque 0 inicialmente.
void setup() // run once to setup { pinMode (red, OUTPUT); // LED set as output pinMode (yellow1, OUTPUT); pinMode (yellow2, OUTPUT); pinMode (green1, OUTPUT); pinMode (green2, OUTPUT); pinMode (blue, OUTPUT);}
Void setup ejecuta una vez para el bosquejo. Sólo estamos diciendo el Arduino que pines queremos como salida. Tenga en cuenta que el pin analógico donde tenemos el FSR se establece automáticamente como entrada, así que no tenemos poner aquí.
void loop() // repeated routine { // first, read the pressure level int level = analogRead(FSR);
Luego el bucle vacío corre una y otra vez. En primer lugar, hemos creado nuestro nivel variable (que hemos introducidos antes) nuestra FSR, que establece en 0 el perno antes de leer.
//next, set the LEDs to light based on pressure if (level <200) { analogWrite (red, level); } if (level >200) { analogWrite (yellow1, level); } if (level >400) { analogWrite (yellow2, level); } if (level >600 ) { analogWrite (green1, level); } if (level >700) { analogWrite (green2, level); } if (level >800) { analogWrite (blue, level); }
A continuación contamos nuestros LEDs cuando iluminar. Usted puede cambiar estos niveles, pero tengo el primer encendido de si el nivel es menos de 200. Entonces uno se enciende si es mayor de 400, 600, 700 y 800 finalmente. Usted puede hacer estos números superiores o inferiores para hacer el juego más difícil o más fácil. Encontré 800 era un buen número para mi FSR, es difícil de alcanzar pero no imposible. El FSR puede ser diferente, por lo que se puede experimentar con números para encontrar el derecho para hacer su diversión de juego.
Usted quiere asegurarse de que hacer en el orden en que están sus LEDs en el tablero. De esta forma que encenderán en secuencia. Si enciende al azar quita el efecto visual del juego.
//set all LEDs to turn off if pressure is 0 if(level == 0) { digitalWrite (red, LOW); digitalWrite (yellow1, LOW); digitalWrite (yellow2 ,LOW); digitalWrite (green1, LOW); digitalWrite (green2, LOW); digitalWrite (blue, LOW); }
No estoy seguro si esta parte es realmente necesaria, pero no pude hacer que funcione sin él (mi LED permanecería encendido después de que sueltes el FSR). Esto sólo dice que si el nivel es igual a 0, apagar todos los LEDs. Tenga en cuenta que "igual" para Arduino no es =, pero ==. Cometí ese error al principio.
//tell all LEDs to flash if pressure is greater than 800 if (level > 800) { digitalWrite (red, HIGH); digitalWrite (yellow1, HIGH); digitalWrite (yellow2 ,HIGH); digitalWrite (green1, HIGH); digitalWrite (green2, HIGH); digitalWrite (blue, HIGH); delay(100); digitalWrite (red, LOW); digitalWrite (yellow1, LOW); digitalWrite (yellow2 ,LOW); digitalWrite (green1, LOW); digitalWrite (green2, LOW); digitalWrite (blue, LOW); delay(100); } }
Ahora para la última parte del código. Al apretar lo suficiente para encender todos los LEDs, he querido a todos ellos para flash. Este código le dice a todos los LEDs a encender (alto), esperar 1 segundo, luego desactivar de nuevo (bajo). Siempre y cuando el nivel es superior a 800, seguirá una y otra vez, haciéndolos aparecer a flash. Puede modificar el retraso aquí para hacer el flash más rápido o más lento, si lo desea.
Eso es todo!
Sube tu dibujo a tu Arduino y vea si puede encender el LED final y hacerlos todos flash!