VNG bot battle
Dependencies: BLE_API mbed nRF51822
SensorController.cpp
- Committer:
- bintech91
- Date:
- 2016-09-05
- Revision:
- 0:122d7bf3bbf0
File content as of revision 0:122d7bf3bbf0:
/* * SensorController.cpp * * Created on: Aug 26, 2016 * Author: tanpt */ #include "SensorController.h" AnalogIn SensorController::sensorDistanceFront_(p1); DigitalIn SensorController::sensorFrontRight_(p2); DigitalIn SensorController::sensorFrontLeft_(p3); DigitalIn SensorController::sensorBack_(p4); AnalogIn SensorController::sensorDistanceRight_(p5); AnalogIn SensorController::sensorDistanceLeft_(p6); SensorController::SensorController() { } SensorController::~SensorController() { } void SensorController::init() { sensorFrontLeft_.mode(PullUp); sensorFrontRight_.mode(PullUp); sensorBack_.mode(PullUp); sensorIR_.mode(PullUp); } uint16_t SensorController::distanceSensorRight() { uint16_t adc; uint16_t cm; uint16_t sensor = 0, i; for (i = 0; i < SENSOR_NOISE; i++) { adc = sensorFrontRight_.read_u16(); adc = 750 - adc; if (adc > 60000) cm = 1; else if (adc > 600) cm = 0; else if (adc > 550) cm = adc / 8; else if (adc > 500) cm = adc / 10; else if (adc > 450) cm = adc / 12; else if (adc > 400) cm = adc / 14; else if (adc > 350) cm = adc / 16; else if (adc > 300) cm = adc / 18; else if (adc > 200) cm = adc / 16; else if (adc > 200) cm = adc / 14; else if (adc > 150) cm = adc / 12; else if (adc > 100) cm = adc / 10; else if (adc > 60) cm = adc / 9; else if (adc > 30) cm = adc / 8; else if (adc > 0) cm = adc / 7; wait(0.001); sensor = sensor + cm; if (cm == 0) break; cm = sensor / SENSOR_NOISE; } return cm; } uint16_t SensorController::distanceSensorLeft() { uint16_t adc; uint16_t cm; uint16_t sensor = 0, i; for (i = 0; i < SENSOR_NOISE; i++) { adc = sensorDistanceLeft_.read_u16(); adc = 750 - adc; if (adc > 60000) cm = 1; else if (adc > 600) cm = 0; else if (adc > 550) cm = adc / 8; else if (adc > 500) cm = adc / 10; else if (adc > 450) cm = adc / 12; else if (adc > 400) cm = adc / 14; else if (adc > 350) cm = adc / 16; else if (adc > 300) cm = adc / 18; else if (adc > 200) cm = adc / 16; else if (adc > 200) cm = adc / 14; else if (adc > 150) cm = adc / 12; else if (adc > 100) cm = adc / 10; else if (adc > 60) cm = adc / 9; else if (adc > 30) cm = adc / 8; else if (adc > 0) cm = adc / 7; wait(0.001); sensor = sensor + cm; if (cm == 0) break; cm = sensor / SENSOR_NOISE; } return cm; } uint16_t SensorController::distanceSensorFront() { uint16_t adc; uint16_t cm; uint16_t sensor = 0, i; for (i = 0; i < SENSOR_NOISE; i++) { adc = sensorDistanceFront_.read_u16(); adc = 750 - adc; if (adc > 60000) cm = 1; else if (adc > 600) cm = 0; else if (adc > 550) cm = adc / 8; else if (adc > 500) cm = adc / 10; else if (adc > 450) cm = adc / 12; else if (adc > 400) cm = adc / 14; else if (adc > 350) cm = adc / 16; else if (adc > 300) cm = adc / 18; else if (adc > 200) cm = adc / 16; else if (adc > 200) cm = adc / 14; else if (adc > 150) cm = adc / 12; else if (adc > 100) cm = adc / 10; else if (adc > 60) cm = adc / 9; else if (adc > 30) cm = adc / 8; else if (adc > 0) cm = adc / 7; wait(0.001); sensor = sensor + cm; if (cm == 0) break; cm = sensor / SENSOR_NOISE; } return cm; } uint8_t SensorController::frontRightSensor() { uint16_t i, sensor = 0; for (i = 0; i < SENSOR_NOISE; i++) { wait(0.001); sensor = sensor + sensorFrontRight_; } if (sensor > SENSOR_NOISE / 2) return SENSOR_OFF; else return SENSOR_ON; } uint8_t SensorController::frontLeftSensor() { uint16_t i, sensor = 0; for (i = 0; i < SENSOR_NOISE; i++) { wait(0.001); sensor = sensor + sensorFrontLeft_; } if (sensor > SENSOR_NOISE / 2) return SENSOR_OFF; else return SENSOR_ON; } uint8_t SensorController::backSensor() { uint16_t i, sensor = 0; for (i = 0; i < SENSOR_NOISE; i++) { wait(0.001); sensor = sensor + sensorBack_; } if (sensor > SENSOR_NOISE / 2) return SENSOR_OFF; else return SENSOR_ON; }