Practical Robotics Modular Robot Library

Dependents:   ModularRobot

sensors.cpp

Committer:
jah128
Date:
2017-01-13
Revision:
6:732aa91eb555
Parent:
0:8a2dd255c508

File content as of revision 6:732aa91eb555:

#include "robot.h"

char adc_data_messages [8] = {0x84,0xC4,0x94,0xD4,0xA4,0xE4,0xB4,0xF4};

char adc_stored_values [8];

char sensor_ticker_current_sensor = 0;
Ticker sensor_ticker;

void Sensors::start_sensor_ticker(){
    sensor_ticker.attach(this,&Sensors::sensor_ticker_routine,SENSOR_TICKER_PERIOD);
}

void Sensors::sensor_ticker_routine(){
     read_adc_value(sensor_ticker_current_sensor);
     sensor_ticker_current_sensor ++;
     if(sensor_ticker_current_sensor == 8) sensor_ticker_current_sensor = 0;
}

char Sensors::get_adc_value(char channel){
    return adc_stored_values[channel];   
}

char Sensors::read_adc_value(char channel){
    char return_value = 0;
    if(channel < 8 && i2c_lock == 0){
    char command[1];
    char ret_data[1];
    command[0] =  adc_data_messages[channel];
    i2c_lock = 1;
    primary_i2c.write(ADC_ADDRESS,command,1);
    primary_i2c.read(ADC_ADDRESS,ret_data,1);
    i2c_lock = 0;
    return_value = ret_data[0];
    adc_stored_values[channel]=return_value;
    }
    return return_value;
}