jaume bros
/
i2ccmps03
main.cpp@0:32b9bb5ffa61, 2011-02-26 (annotated)
- Committer:
- jaume
- Date:
- Sat Feb 26 18:58:47 2011 +0000
- Revision:
- 0:32b9bb5ffa61
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jaume | 0:32b9bb5ffa61 | 1 | /* Proyecto: cmps03 Jaume */ |
jaume | 0:32b9bb5ffa61 | 2 | |
jaume | 0:32b9bb5ffa61 | 3 | #include "mbed.h" |
jaume | 0:32b9bb5ffa61 | 4 | BusOut mleds(LED1, LED2, LED3, LED4); |
jaume | 0:32b9bb5ffa61 | 5 | I2C i2c(p9, p10); // sda, scl |
jaume | 0:32b9bb5ffa61 | 6 | Serial pc(USBTX, USBRX); // tx, rx a 9600 |
jaume | 0:32b9bb5ffa61 | 7 | |
jaume | 0:32b9bb5ffa61 | 8 | const int addr = 0xC0; // define direccion CMPS03 |
jaume | 0:32b9bb5ffa61 | 9 | |
jaume | 0:32b9bb5ffa61 | 10 | int main() { |
jaume | 0:32b9bb5ffa61 | 11 | char cmd[2]; |
jaume | 0:32b9bb5ffa61 | 12 | char dat[3]; |
jaume | 0:32b9bb5ffa61 | 13 | while (1) { |
jaume | 0:32b9bb5ffa61 | 14 | cmd[0] = 0x01; // puntero registro 1 |
jaume | 0:32b9bb5ffa61 | 15 | |
jaume | 0:32b9bb5ffa61 | 16 | i2c.write(addr, cmd, 1); |
jaume | 0:32b9bb5ffa61 | 17 | i2c.read(addr, dat, 3); // lee posicion 1byte y 2bytesHL |
jaume | 0:32b9bb5ffa61 | 18 | float posicion = 360*dat[0]/255; // posicion max 255 0 359.9 |
jaume | 0:32b9bb5ffa61 | 19 | printf("Posicion con 1 byte %.2f grados\n", posicion); |
jaume | 0:32b9bb5ffa61 | 20 | int p = dat[0]/31; |
jaume | 0:32b9bb5ffa61 | 21 | switch (p) { |
jaume | 0:32b9bb5ffa61 | 22 | case 0: |
jaume | 0:32b9bb5ffa61 | 23 | printf(" NORTE "); |
jaume | 0:32b9bb5ffa61 | 24 | break; |
jaume | 0:32b9bb5ffa61 | 25 | case 1: |
jaume | 0:32b9bb5ffa61 | 26 | printf(" ESTE"); |
jaume | 0:32b9bb5ffa61 | 27 | break; |
jaume | 0:32b9bb5ffa61 | 28 | case 2: |
jaume | 0:32b9bb5ffa61 | 29 | printf(" ESTE"); |
jaume | 0:32b9bb5ffa61 | 30 | break; |
jaume | 0:32b9bb5ffa61 | 31 | case 3: |
jaume | 0:32b9bb5ffa61 | 32 | printf(" SUR "); |
jaume | 0:32b9bb5ffa61 | 33 | break; |
jaume | 0:32b9bb5ffa61 | 34 | case 4: |
jaume | 0:32b9bb5ffa61 | 35 | printf(" SUR "); |
jaume | 0:32b9bb5ffa61 | 36 | break; |
jaume | 0:32b9bb5ffa61 | 37 | case 5: |
jaume | 0:32b9bb5ffa61 | 38 | printf("OESTE "); |
jaume | 0:32b9bb5ffa61 | 39 | break; |
jaume | 0:32b9bb5ffa61 | 40 | case 6: |
jaume | 0:32b9bb5ffa61 | 41 | printf("OESTE "); |
jaume | 0:32b9bb5ffa61 | 42 | break; |
jaume | 0:32b9bb5ffa61 | 43 | case 7: |
jaume | 0:32b9bb5ffa61 | 44 | printf(" NORTE "); |
jaume | 0:32b9bb5ffa61 | 45 | } |
jaume | 0:32b9bb5ffa61 | 46 | mleds = dat[0]/15; |
jaume | 0:32b9bb5ffa61 | 47 | printf (" \n"); |
jaume | 0:32b9bb5ffa61 | 48 | posicion =0.1*((dat[1]<<8)+dat[2]); // posicion de 9 a 3599 |
jaume | 0:32b9bb5ffa61 | 49 | printf("Posicion con 2 byte %.2f grados\n", posicion); |
jaume | 0:32b9bb5ffa61 | 50 | printf("---------------------------------------\n"); |
jaume | 0:32b9bb5ffa61 | 51 | wait(1); |
jaume | 0:32b9bb5ffa61 | 52 | } |
jaume | 0:32b9bb5ffa61 | 53 | } |