Étape 4: Arduino Sketch
"const int outputPin = 5 ; indicateur LED connectée à la broche numérique const int knockSensor = A2 ; le piezo est connecté à une broche analogique const int thresholdHIGH = 120 ; valeur de seuil de décider quand le coup détecté est dur (haute) const int thresholdLOW = 70 ; valeur de seuil de décider quand le coup détecté est doux (faible) const int secretKnockLength = 3 ; Combien de coups sont dans votre secret knock / * il s’agit de la séquence de knock secret * 0 représente un faible ou calme frappe * 1 représente un coup élevé ou fort * la séquence peut être aussi longtemps que vous voulez, mais des codes plus augmentent la difficulté de faire correspondre * / const int secretKnock [secretKnockLength] = {0, 0, 1} ; int secretCounter = 0 ; Cela suit la frappe correcte et permet de se déplacer à travers la séquence int sensorReading = 0 ; variable pour stocker la valeur extraite de la sonde broche void setup() {//Set la broche de sortie comme une sortie pinMode (outputPin, sortie); //Begin Communication série. Serial.Begin(9600) ; } void loop() {/ / lire le capteur piezo et stocker la valeur dans la variable sensorReading : sensorReading = analogRead(knockSensor); / / tout d’abord déterminer est knock si //Hard dur (HIGH) ou doux (LOW) frapper (élevé) est détecté si (sensorReading > = thresholdHIGH) {//Check pour voir si un frapper dur correspond le Secret Knock dans la séquence correcte. si (secretKnock [secretCounter] == 1) {//The Knock était correcte, itérer la counter. secretCounter ++ ; Serial.println("correct") ; } else {//The Knock était incorrecte, réinitialisez le compteur secretCounter = 0 ; Serial.println("fail") ; digitalWrite (outputPin, faible) ; } //close si //Allow quelque temps à passer avant l’échantillonnage à nouveau pour assurer un signal clair. Delay(100) ; Gentle knock (basse) est détecté} ElseIf (sensorReading > = thresholdLOW) {//Check pour voir si une frappe douce correspond le Secret Knock dans la séquence correcte. si (secretKnock [secretCounter] == 0) {//The Knock était correcte, itérer la counter. secretCounter ++ ; Serial.println("correct") ; } else {//The Knock était incorrecte, réinitialiser le compteur. secretCounter = 0 ; Serial.println("fail") ; } //close si //Allow quelque temps à passer avant l’échantillonnage à nouveau pour assurer un signal clair. Delay(100) ; } //close si d’autre //Check pour une entrée réussie du code, en voyant si le tableau dans son intégralité a été parcouru. Si (secretCounter == (secretKnockLength)) {Serial.println("Welcome") ; //if le sececret knock est correcte, illuminer la LED pendant quelques secondes digitalWrite (outputPin, HIGH); //Reset le secret compteur à 0. secretCounter = 0;} contrôle étroit succès} //close boucle".