Nulldurchgänge eines Mikrofonverstärkerausgangs zählen
(EN google-translate)
(PL google-translate)
int sensorwert=0; int zaehler=0; int nulldurchgang=0; int zustand=0; void setup() { pinMode(18,INPUT); //A0 Serial.begin(9600); } void loop() { sensorwert = analogRead(11); if(zaehler==1000) { Serial.write(48+(nulldurchgang/1000)%10); Serial.write(48+(nulldurchgang/100)%10); Serial.write(48+(nulldurchgang/10)%10); Serial.write(48+(nulldurchgang/1)%10); Serial.write(' '); Serial.write(' '); zaehler=0; nulldurchgang=0; } else { if(zustand==0 && sensorwert<800) { nulldurchgang++; zustand=1; } else if(zustand==1 && sensorwert>850) { nulldurchgang++; zustand=0; } zaehler++; } }
Code 0-1: Nulldurchgänge eines Mikrofonverstärkerausgangs zählen
verbesserte Version
int sensorwert=0; int zaehler=0; int nulldurchgang=0; int zustand=0; int wertalt=0; void setup() { pinMode(18,INPUT); //A0 Serial.begin(9600); } void loop() { sensorwert = analogRead(11); if(zaehler==1000) { Serial.write(48+(nulldurchgang/1000)%10); Serial.write(48+(nulldurchgang/100)%10); Serial.write(48+(nulldurchgang/10)%10); Serial.write(48+(nulldurchgang/1)%10); Serial.write(' '); Serial.write(' '); zaehler=0; nulldurchgang=0; wertalt=sensorwert; } else { if(zustand==0 && sensorwert<wertalt-50) { nulldurchgang++; zustand=1; wertalt = sensorwert; } else if(zustand==1 && sensorwert>wertalt+50) { nulldurchgang++; zustand=0; wertalt = sensorwert; } zaehler++; } }
Code 0-2: Mikrofonauswertung unabhängig von den absoluten Werten.