jaume bros
/
i2ccmps03
Diff: main.cpp
- Revision:
- 0:32b9bb5ffa61
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Feb 26 18:58:47 2011 +0000 @@ -0,0 +1,53 @@ +/* Proyecto: cmps03 Jaume */ + +#include "mbed.h" +BusOut mleds(LED1, LED2, LED3, LED4); +I2C i2c(p9, p10); // sda, scl +Serial pc(USBTX, USBRX); // tx, rx a 9600 + +const int addr = 0xC0; // define direccion CMPS03 + +int main() { + char cmd[2]; + char dat[3]; + while (1) { + cmd[0] = 0x01; // puntero registro 1 + + i2c.write(addr, cmd, 1); + i2c.read(addr, dat, 3); // lee posicion 1byte y 2bytesHL + float posicion = 360*dat[0]/255; // posicion max 255 0 359.9 + printf("Posicion con 1 byte %.2f grados\n", posicion); + int p = dat[0]/31; + switch (p) { + case 0: + printf(" NORTE "); + break; + case 1: + printf(" ESTE"); + break; + case 2: + printf(" ESTE"); + break; + case 3: + printf(" SUR "); + break; + case 4: + printf(" SUR "); + break; + case 5: + printf("OESTE "); + break; + case 6: + printf("OESTE "); + break; + case 7: + printf(" NORTE "); + } + mleds = dat[0]/15; + printf (" \n"); + posicion =0.1*((dat[1]<<8)+dat[2]); // posicion de 9 a 3599 + printf("Posicion con 2 byte %.2f grados\n", posicion); + printf("---------------------------------------\n"); + wait(1); + } +}