Arduino Tutorial - lätt Hemlig knackning detektor (4 / 4 steg)
Steg 4: Arduino skiss
"const int outputPin = 5; LED indikatorn ansluten till digital pin const int gaspedalsignal = A2; piezo är ansluten till en analog pin const int thresholdHIGH = 120; tröskelvärde som beslutar när den identifierade knock är hård (hög) const int thresholdLOW = 70. tröskelvärde som beslutar när den identifierade knock är mild (låga) const int secretKnockLength = 3; Hur många smällar är din Hemlig knackning / * detta är Hemlig knackning sekvensen * 0 representerar en låg eller tyst slå * 1 representerar en hög eller hög knock * sekvensen kan vara så länge du vill, men långa koder öka svårigheten av matchande * / const int secretKnock [secretKnockLength] = {0, 0, 1}; int secretCounter = 0; Detta spår rätt knackar och du kan flytta genom sekvens int sensorReading = 0; variabel för att lagra värdet läsa från sensorn pin void setup() {//Set utgångsstiftet som en utgång pinMode (outputPin, produktionen); //Begin seriell kommunikation. Serial.BEGIN(9600); } void loop() {/ / läsa piezo-sensor och lagra värdet i variabeln sensorReading: sensorReading = analogRead(knockSensor); / / först bestämma är knock om hårt (hög) eller mild (låg) //Hard slår (hög) upptäcks om (sensorReading > = thresholdHIGH) {//Check att se om en Hard Knock matchar hemlighet slå i rätt sekvens. om (secretKnock [secretCounter] == 1) {//The Knock var korrekt, iterera counter. secretCounter ++; Serial.println("correct"); } annat {//The Knock var felaktig, Återställ räknare secretCounter = 0; Serial.println("Fail"); digitalWrite (outputPin, låg); } //close om //Allow en tid innan provtagning igen för att säkerställa en tydlig signal. Delay(100); Mild knock (låg) upptäcks} else om (sensorReading > = thresholdLOW) {//Check att se om en mild slå matchar hemlighet slå i rätt sekvens. om (secretKnock [secretCounter] == 0) {//The Knock var korrekt, iterera counter. secretCounter ++; Serial.println("correct"); } annat {//The Knock var felaktig, återställa counter. secretCounter = 0; Serial.println("Fail"); } //close om //Allow en tid innan provtagning igen för att säkerställa en tydlig signal. Delay(100); } //close om annat //Check för framgångsrik ta koden, genom att se om hela matrisen har varit gick genom. om (secretCounter == (secretKnockLength)) {Serial.println("Welcome"); //if sececret knock är korrekt, tänds lysdioden för ett par sekunder digitalWrite (outputPin, hög); //Reset hemligheten mot 0. secretCounter = 0;} nära framgång check} //close loop".