kramann.info
© Guido Kramann

Login: Passwort:










21 Nulldurchgänge eines Mikrofonverstärkerausgangs zählen

21 Count zero crossings of a microphone amplifier output (EN google-translate)

21 Przeliczaj zera wyjścia wzmacniacza mikrofonu (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 21-1: Nulldurchgänge eines Mikrofonverstärkerausgangs zählen

verbesserte Version

improved version

ulepszona wersja

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 21-2: Mikrofonauswertung unabhängig von den absoluten Werten.