Stap 4: Arduino Sketch
"const int outputPin = 5; LED indicator aangesloten op digital pin const int knockSensor = A2; de piezo is aangesloten op een analoge pin const int thresholdHIGH = 120; drempelwaarde om te beslissen wanneer de gedetecteerde knock is hard (hoog) const int thresholdLOW = 70; drempelwaarde om te beslissen wanneer de gedetecteerde knock is zacht (lage) const int secretKnockLength = 3; Hoeveel stoten zijn in uw geheime knock / * dit is de volgorde van de geheime knock * 0 vertegenwoordigt een laag of rust klop * 1 staat voor een hoog of hard knock * de volgorde kan zo lang als je wilt, maar langer codes verhogen de moeilijkheid van matching * / const int secretKnock [secretKnockLength] = {0, 0, 1}; int secretCounter = 0; Dit houdt de juiste stoten en u kunt verplaatsen door de reeks int sensorReading = 0; variabele voor het opslaan van de waarde van de sensor pin void Setup leest {//Set de uitgang-pins als een OUTPUT-pinMode (outputPin, OUTPUT); //Begin seriële communicatie. Serial.begin(9600); } void loop {/ / Lees de piëzo-sensor en de waarde in de variabele sensorReading opgeslagen: sensorReading = analogRead(knockSensor); / / eerst bepalen is knock als harde (hoog) of zacht (laag) //Hard klop (hoog) is gedetecteerd als (sensorReading > = thresholdHIGH) {//Check om te zien als een Hard Knock komt overeen met de Secret Knock in de juiste volgorde. als (secretKnock [secretCounter] == 1) {//The Knock was correct, sequentieel de teller. secretCounter ++; Serial.println("correct"); } else {//The Knock onjuist was, reset van de teller-secretCounter = 0; Serial.println("fail"); digitalWrite (outputPin, laag); } //close als //Allow enige tijd te geven vóór de bemonstering opnieuw om een duidelijk signaal. delay(100); Zachte knock (laag) wordt gedetecteerd} anders als (sensorReading > = thresholdLOW) {//Check om te zien als een zachte Knock komt overeen met de Secret Knock in de juiste volgorde. als (secretKnock [secretCounter] == 0) {//The Knock was correct, sequentieel de teller. secretCounter ++; Serial.println("correct"); } else {//The Knock onjuist was, reset van de teller. secretCounter = 0; Serial.println("fail"); } //close als //Allow enige tijd te geven vóór de bemonstering opnieuw om een duidelijk signaal. delay(100); } //close als anders //Check voor succesvolle entree van het Wetboek, door het zien als de volledige array heeft via zijn gelopen. Als (secretCounter == (secretKnockLength)) {Serial.println("Welcome"); //if de sececret knock klopt, verlichten de LED voor een paar seconden digitalWrite (outputPin, hoge); //Reset het geheim tegen 0. secretCounter = 0;} nauwe succes selectievakje} //close loop".