Practical Robotics Modular Robot Library
sensors.cpp@0:8a2dd255c508, 2016-11-26 (annotated)
- Committer:
- jah128
- Date:
- Sat Nov 26 17:28:53 2016 +0000
- Revision:
- 0:8a2dd255c508
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jah128 | 0:8a2dd255c508 | 1 | #include "robot.h" |
jah128 | 0:8a2dd255c508 | 2 | |
jah128 | 0:8a2dd255c508 | 3 | char adc_data_messages [8] = {0x84,0xC4,0x94,0xD4,0xA4,0xE4,0xB4,0xF4}; |
jah128 | 0:8a2dd255c508 | 4 | |
jah128 | 0:8a2dd255c508 | 5 | char adc_stored_values [8]; |
jah128 | 0:8a2dd255c508 | 6 | |
jah128 | 0:8a2dd255c508 | 7 | char sensor_ticker_current_sensor = 0; |
jah128 | 0:8a2dd255c508 | 8 | Ticker sensor_ticker; |
jah128 | 0:8a2dd255c508 | 9 | |
jah128 | 0:8a2dd255c508 | 10 | void Sensors::start_sensor_ticker(){ |
jah128 | 0:8a2dd255c508 | 11 | sensor_ticker.attach(this,&Sensors::sensor_ticker_routine,SENSOR_TICKER_PERIOD); |
jah128 | 0:8a2dd255c508 | 12 | } |
jah128 | 0:8a2dd255c508 | 13 | |
jah128 | 0:8a2dd255c508 | 14 | void Sensors::sensor_ticker_routine(){ |
jah128 | 0:8a2dd255c508 | 15 | read_adc_value(sensor_ticker_current_sensor); |
jah128 | 0:8a2dd255c508 | 16 | sensor_ticker_current_sensor ++; |
jah128 | 0:8a2dd255c508 | 17 | if(sensor_ticker_current_sensor == 8) sensor_ticker_current_sensor = 0; |
jah128 | 0:8a2dd255c508 | 18 | } |
jah128 | 0:8a2dd255c508 | 19 | |
jah128 | 0:8a2dd255c508 | 20 | char Sensors::get_adc_value(char channel){ |
jah128 | 0:8a2dd255c508 | 21 | return adc_stored_values[channel]; |
jah128 | 0:8a2dd255c508 | 22 | } |
jah128 | 0:8a2dd255c508 | 23 | |
jah128 | 0:8a2dd255c508 | 24 | char Sensors::read_adc_value(char channel){ |
jah128 | 0:8a2dd255c508 | 25 | char return_value = 0; |
jah128 | 0:8a2dd255c508 | 26 | if(channel < 8 && i2c_lock == 0){ |
jah128 | 0:8a2dd255c508 | 27 | char command[1]; |
jah128 | 0:8a2dd255c508 | 28 | char ret_data[1]; |
jah128 | 0:8a2dd255c508 | 29 | command[0] = adc_data_messages[channel]; |
jah128 | 0:8a2dd255c508 | 30 | i2c_lock = 1; |
jah128 | 0:8a2dd255c508 | 31 | primary_i2c.write(ADC_ADDRESS,command,1); |
jah128 | 0:8a2dd255c508 | 32 | primary_i2c.read(ADC_ADDRESS,ret_data,1); |
jah128 | 0:8a2dd255c508 | 33 | i2c_lock = 0; |
jah128 | 0:8a2dd255c508 | 34 | return_value = ret_data[0]; |
jah128 | 0:8a2dd255c508 | 35 | adc_stored_values[channel]=return_value; |
jah128 | 0:8a2dd255c508 | 36 | } |
jah128 | 0:8a2dd255c508 | 37 | return return_value; |
jah128 | 0:8a2dd255c508 | 38 | } |