Paso 4: Sketch de Arduino
"const int outputPin = 5; indicador LED conectado al pin digital const int knockSensor = A2; el piezoeléctrico se conecta a un pin analógico const int thresholdHIGH = 120; valor de umbral para decidir cuándo el golpe detectado es duro (alto) const int thresholdLOW = 70; valor de umbral para decidir cuándo el golpe detectado es suave (bajo) const int secretKnockLength = 3; Cuántos golpes son en su golpe secreto / * esta es la secuencia de golpe secreto * 0 representa un bajo o un tranquilo golpee * 1 representa un golpe alto o ruidoso * la secuencia puede ser tan larga como quieras, pero más largo y aumenta la dificultad de hacer coincidir el * / const int secretKnock [secretKnockLength] = {0, 0, 1}; int secretCounter = 0; Esto sigue la correcta golpes y le permite moverse a través de la secuencia int sensorReading = 0; variable para almacenar el valor leído desde el sensor pin void setup() {//Set el pin de salida como una salida pinMode (outputPin, salida); //Begin de la comunicación Serial. Serial.Begin(9600); } void loop() {/ / lee el sensor piezoeléctrico y almacenar el valor en la variable sensorReading: sensorReading = analogRead(knockSensor); / / primero determinar es knock si //Hard duro (alto) o suave (bajo) knock (alto) se detecta si (sensorReading > = thresholdHIGH) {//Check para ver si un golpe duro coincide con el golpe de secreto en la secuencia correcta. Si (secretKnock [secretCounter] == 1) {//The golpe era correcto, iterar contador. secretCounter ++; Serial.println("correct"); } else {//The Knock era incorrecta, restablecer el contador secretCounter = 0; Serial.println("FAIL"); digitalWrite (outputPin, bajo); } //close si //Allow algún tiempo antes de muestreo para asegurar una señal clara. Delay(100); Golpe suave (bajo) se detecta} else if (sensorReading > = thresholdLOW) {//Check para ver si un golpe suave coincide con el golpe de secreto en la secuencia correcta. Si (secretKnock [secretCounter] == 0) {//The golpe era correcto, iterar contador. secretCounter ++; Serial.println("correct"); } else {//The Knock era incorrecta, resetear el contador. secretCounter = 0; Serial.println("FAIL"); } //close si //Allow algún tiempo antes de muestreo para asegurar una señal clara. Delay(100); } //close si //Check más exitosa entrada del código, por ver si la matriz completa ha sido caminada a través de. Si (secretCounter == (secretKnockLength)) {Serial.println("Welcome"); //if el sececret knock es correcta, encenderá el LED unos segundos digitalWrite (outputPin, HIGH); //Reset el secreto contador a 0. secretCounter = 0;} verificación de éxito cercano} //close lazo".