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.