int PiezoPin1 = 0; int PiezoPin2 = 0; int PiezoPin3 = 0; int Nullpunkt = 0; // referenz wert int sensor = 0; // sensor wert long double filter =0; int count=0; //loopcount int countmax = 2000; //loopcount bevor er zurück gesetzt wird int hightime =1000; // zeit nach dem ereigniss die der Ausgang HIGH ist const int probePin = 13; int interwall = 80; //interwall in dem der sensor nicht ausschälgt, beeinflusst die empfindlichkeit des systems void setup() { Serial.begin(9600); Serial.println("Start"); //iniziallisiert den nullpunkt for(int i=0; i<=50 ; i++){ Nullpunkt = analogRead(PiezoPin1) + analogRead(PiezoPin2) + analogRead(PiezoPin3); delay(10); } pinMode(probePin, OUTPUT); Serial.println(Nullpunkt); } void loop() { //Sensoren werden Ausgelesen sensor = analogRead(PiezoPin1) +analogRead(PiezoPin2) +analogRead(PiezoPin3); if( sensor >=Nullpunkt+interwall || Nullpunkt-interwall >=sensor){ Serial.print("Knock! : "); Serial.println(sensor); digitalWrite(probePin, HIGH); delay(hightime); digitalWrite(probePin, LOW); } // loopzeugs Fehler(); count++; filter = filter + sensor; //Nullpunkt wird gesetzt if(count == countmax){ count=0; Nullpunkt = filter/countmax; filter=0; Serial.print("Nullpunkt : "); Serial.println(Nullpunkt); } } //Fehler wird berechnet und visualisiert ausgegeben int Fehler(){ int fehler=Nullpunkt - sensor; for(int i = 0; i<= fehler; i++){ Serial.print("o"); } Serial.println("-"); return fehler; }