Habe eine Bibliothek für die Ultraschallsensoren von Devantech Ltd
(Robot Electronics) erstellt.
Vielleicht kann es ja jemand brauchen!
Jeder wer will darf den Code natürlich beliebig verändern und
weiterentwickeln.
Die Abfrage der Sensoren erfolgt synchron, d.h. nach dem Initiieren
einer Reichweitenmessung wird in der Routine solange gewartet bis das
Ergebnis verfügbar ist.
Die I2C Kommunikation erfolgt mit der I2C Lib von Peter Fleury.
Ein Dankeschön für die Bereitstellung!!
Die Library kann unter http://www.jump.to/fleury -> Libraries - > I2C
Master Interface gefunden werden.
Getestet wurde der Code auf einem Atmega128 und 3 Stück SRF10, mit einer
Quarzfrequ. von 14.7456 MHz.
Verwendung:
1 | #define US_addr1 0x32
|
2 |
|
3 | us_init(); //Init I2C
|
4 | u8 swrevi; //Variable für die Software Versionsabfrage
|
5 | u8 ret = get_SWRev(US_addr1, swrevi); //Liest die SW-Version vom US-Modul
|
6 | if (ret)
|
7 | {
|
8 | // Modul antwortet nicht
|
9 | }
|
10 | ret = us_set_gain(US_addr1, 3); //Verstärkung des Moduls einstellen
|
11 | if (ret)
|
12 | {
|
13 | // Modul antwortet nicht
|
14 | }
|
15 | u16 distance;
|
16 | ret = getDistance(US_addr1, &distance); //Erfragt die Distanz in cm
|
17 | if (ret)
|
18 | {
|
19 | // Modul antwortet nicht
|
20 | }
|
21 | // --> An dieser Position is der Rechweitenwert verfügbar (0 bedeutet kein Objekt detektiert, ungleich null der Abstand in cm
|