Vincent Belanger
/
APP
APP 1 S5.
Diff: APP.cpp
- Revision:
- 13:08ef55cd14c6
- Parent:
- 12:4961ec71bc8f
- Child:
- 14:d48d869ed365
--- a/APP.cpp Tue Jan 12 15:09:47 2016 +0000 +++ b/APP.cpp Tue Jan 12 15:17:21 2016 +0000 @@ -6,37 +6,39 @@ #include <stdint.h> #include "mbed.h" +#include "UART.h" #include "APP.h" +#include "LPC17xx.h" -static I2C i2c(p28, p27); -static Serial uart(p9, p10); +static I2C i2c(p28, p27); void setup() { + SystemCoreClockUpdate(); + // Setup UART and I2C. - uart.format(8, Serial::None, 1); - uart.baud(9600); + UARTInit(9600); i2c.frequency(100000); - + // Clear display - uart.putc(0x76); - + UARTSend(0x76); + // Decimal point for display - uart.putc(0x77); - uart.putc(0x02); + UARTSend(0x77); + UARTSend(0x02); // Maximum brightness - uart.putc(0x7A); - uart.putc(0xFF); + UARTSend(0x7A); + UARTSend(0xFF); } - + void activateAccelerometer() { uint8_t data[2] = {CTRL_REG, 0x01}; i2c.write(ACC_ADDRESS, (char*) data, 2); } - + uint8_t readStatus() { uint8_t result[1]; @@ -46,7 +48,7 @@ return result[0]; } - + int16_t convertToAcceleration(uint8_t hi, uint8_t lo) { int16_t value = (lo >> 2) | (hi << 6); @@ -57,7 +59,7 @@ return value; } - + int16_t readAndComputeAngle() { uint8_t result[6]; @@ -85,27 +87,21 @@ { uint8_t digits[4]; sprintf((char*) digits, "%d", angle); - + if (angle < 100) { - uart.putc(0); - uart.putc(0); - uart.putc(digits[0]); - uart.putc(digits[1]); + UARTSend('0'); + UARTSend('0'); + UARTSend(digits, 2); } else if (angle < 1000) { - uart.putc(0); - uart.putc(digits[0]); - uart.putc(digits[1]); - uart.putc(digits[2]); + UARTSend('0'); + UARTSend(digits, 3); } else { - uart.putc(digits[0]); - uart.putc(digits[1]); - uart.putc(digits[2]); - uart.putc(digits[3]); + UARTSend(digits, 4); } } @@ -123,11 +119,11 @@ { // Get accelerations, compute angle uint16_t angle = readAndComputeAngle(); - + // Update 7 segment display updateDisplay(angle); } - + wait(0.4); } }