Statistics
| Branch: | Revision:

root / quad1 / AeroQuad / Sonar.h @ 9240aaa3

History | View | Annotate | Download (1.27 KB)

1
class Sonar
2
{
3
    public:
4
      int range;
5
      int addr;
6
      
7
      Sonar()
8
      {
9
      }
10
      
11
      void initialize(int address)
12
      {
13
          //addr=ADDRESS&(0x7F); //Wire only wants 7-bit addresses, chop off the highest bit
14
          addr=address;
15
      //    Serial.print("Initing Sonar at 0x");
16
      //    Serial.println(addr, HEX);
17
          requestRead();
18
          delay(70);
19
          
20
      //    Serial.println("Done initing sonar");
21
      }
22
      
23
      int getValue()
24
      {
25
          return range;
26
      }
27
      
28
      void measure()
29
      {
30
          int temp = readData();
31
          range = temp==0 ? range:temp;
32
          requestRead();
33
      }
34
          
35
        
36
    private:
37
      void requestRead();      
38
      int readData();
39
};
40

    
41
int Sonar::readData()
42
{
43
//    Serial.print("readData() called, addr: 0x");
44
//    Serial.println(addr, HEX);
45
    Wire.beginTransmission(addr);
46
      Wire.send(0x02);
47
    Wire.endTransmission();
48
    
49
    Wire.requestFrom(addr, 2);
50
     //while(Wire.available() < 2){};
51
     //Serial.println("Stopped Failing");
52
    int result = (Wire.receive()<<8);
53
    result += Wire.receive();
54
    
55
    return result;
56
}
57

    
58
void Sonar::requestRead()
59
{
60
  Wire.beginTransmission(addr);
61
    Wire.send(0x00);
62
    Wire.send(0x50);
63
  Wire.endTransmission();
64
}