Etape 2: interface à « PW » impulsions largeur
Cette broche génère une représentation de largeur d’impulsion de la gamme. La distance peut être calculée en utilisant le facteur d’échelle de 147uS par pouce.
Donc, en utilisant Pulse dans pour calculer la distance.
J’ai préparé cette bibliothèque pour cette méthode, vous pouvez télécharger des pièces jointes.
Ce code sans bibliothèque et avec filtre médian/Mode :
//...........................................................
Ce code est basé sur : http://playground.arduino.cc/Main/MaxSonar
int pw_pin = 7 ;
int arraysize = 9 ;
int tableau [] = {0, 0, 0, 0, 0, 0, 0, 0, 0} ;
pouces de long ;
int exact_cm_value ;
void setup() {}
Mettez votre code de programme d’installation ici, pour exécuter une fois :
pinMode (pw_pin, entrée) ;
Serial.Begin(9600) ;
}
void sensorRead() {}
pour (int i = 0; i < arraysize; i ++)
{
pouce = pulseIn (pw_pin, HIGH) ;
tableau [i] = pouce/58 ;
Delay(10) ;
}
}
void array_arrangment (int *, int n) {}
Auteur : Bill Gentles, 12 novembre 2010)
pour (int i = 1; i < n; ++ j’ai)
{
int j = un [i] ;
int k ;
pour (k = i - 1 ; (k > = 0) & & (j < a[k]) ; k--)
{
un [k + 1] = un [k] ;
}
un [k + 1] = j ;
}
}
filtre int (int *, int n) {}
int i = 0 ;
int count = 0 ;
maxCount int = 0 ;
filtre int = 0 ;
int médiane ;
prevCount int = 0 ;
alors que (je <(n-1)) {}
prevCount = count ;
Count = 0 ;
{while(a[i]==a[i+1])}
Count ++ ;
i ++ ;
}
Si (comte > prevCount & & count > maxCount) {}
filtre = un [i] ;
maxCount = count ;
médiane = 0 ;
}
{if(Count==0)}
i ++ ;
}
if(Count==maxCount) {//If dataset a 2 ou plusieurs modes.
médiane = 1 ;
}
if(Filter==0|| médiane == 1) {//Return la médiane s’il n’y a pas de mode.
Filter=a[(n/2)] ;
}
retourner le filtre ;
}
}
void loop() {}
Mettez votre code principal ici, pour exécuter à plusieurs reprises :
sensorRead() ;
array_arrangment(Array,arraySize) ;
exact_cm_value = filter(array,arraysize) ;
Serial.Print ("la distance =") ;
Serial.Print(exact_cm_value) ;
Serial.println ("cm") ;
Delay(100) ;
}
Code de la bibliothèque :
//......................................................
#include « SonarEZ0pw.h »
SonarEZ0pw Sonar(7) ; code PIN D7
float cm_dis = 0,00 ;
float Inch_dis = 0,00 ;
void setup() {}
Mettez votre code de programme d’installation ici, pour exécuter une fois :
Serial.Begin(9600) ;
}
void loop() {}
Mettez votre code principal ici, pour exécuter à plusieurs reprises :
cm_dis = Sonar.Distance(cm) ; Pour calculer la distance en cm
Inch_dis=sonar.distance(inch); / / pour calculer la distance en pouces
Serial.println ("Distance") ;
Serial.Print(Inch_dis) ;
Serial.println (« pouce ») ;
Serial.Print(cm_dis) ;
Serial.println ("cm") ;
Delay(250) ;
}