Orefatoi
/
afero_poc15_171201
POC1.5 prototype 2 x color sensor 2 x LM75B 3 x AnalogIn 1 x accel
edge_sensor/edge_accel.cpp@8:5590f55bdf41, 2017-12-07 (annotated)
- Committer:
- Rhyme
- Date:
- Thu Dec 07 10:13:13 2017 +0000
- Revision:
- 8:5590f55bdf41
- Parent:
- 0:f0de320e23ac
- Child:
- 9:f958fa2cdc74
commit at the end of 7-Dec-2017
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rhyme | 0:f0de320e23ac | 1 | #include "mbed.h" |
Rhyme | 0:f0de320e23ac | 2 | #include "afLib.h" |
Rhyme | 0:f0de320e23ac | 3 | #include "edge_sensor.h" |
Rhyme | 0:f0de320e23ac | 4 | #include "edge_accel.h" |
Rhyme | 0:f0de320e23ac | 5 | #include "MMA8451Q.h" |
Rhyme | 0:f0de320e23ac | 6 | |
Rhyme | 0:f0de320e23ac | 7 | edge_accel::edge_accel(MMA8451Q *accel) : edge_sensor() |
Rhyme | 0:f0de320e23ac | 8 | { |
Rhyme | 0:f0de320e23ac | 9 | _accel = accel ; |
Rhyme | 0:f0de320e23ac | 10 | _sample_count = 0 ; |
Rhyme | 0:f0de320e23ac | 11 | _accumulation = 0 ; |
Rhyme | 0:f0de320e23ac | 12 | _prev_x = 0 ; |
Rhyme | 0:f0de320e23ac | 13 | _prev_y = 0 ; |
Rhyme | 0:f0de320e23ac | 14 | _prev_z = 0 ; |
Rhyme | 0:f0de320e23ac | 15 | |
Rhyme | 0:f0de320e23ac | 16 | _interval = 10 ; |
Rhyme | 0:f0de320e23ac | 17 | } |
Rhyme | 0:f0de320e23ac | 18 | |
Rhyme | 0:f0de320e23ac | 19 | edge_accel::~edge_accel(void) |
Rhyme | 0:f0de320e23ac | 20 | { |
Rhyme | 0:f0de320e23ac | 21 | delete _accel ; |
Rhyme | 0:f0de320e23ac | 22 | } |
Rhyme | 0:f0de320e23ac | 23 | |
Rhyme | 0:f0de320e23ac | 24 | void edge_accel::reset(void) |
Rhyme | 0:f0de320e23ac | 25 | { |
Rhyme | 0:f0de320e23ac | 26 | clear_value() ; |
Rhyme | 0:f0de320e23ac | 27 | edge_sensor::reset() ; |
Rhyme | 0:f0de320e23ac | 28 | } |
Rhyme | 0:f0de320e23ac | 29 | |
Rhyme | 0:f0de320e23ac | 30 | void edge_accel::prepare(void) |
Rhyme | 0:f0de320e23ac | 31 | { |
Rhyme | 0:f0de320e23ac | 32 | // printf("accel prepare\n") ; |
Rhyme | 0:f0de320e23ac | 33 | } |
Rhyme | 0:f0de320e23ac | 34 | |
Rhyme | 0:f0de320e23ac | 35 | void edge_accel::sample(void) |
Rhyme | 0:f0de320e23ac | 36 | { |
Rhyme | 0:f0de320e23ac | 37 | // printf("accel sample\n") ; |
Rhyme | 0:f0de320e23ac | 38 | } |
Rhyme | 0:f0de320e23ac | 39 | |
Rhyme | 0:f0de320e23ac | 40 | int edge_accel::deliver(void) |
Rhyme | 0:f0de320e23ac | 41 | { |
Rhyme | 0:f0de320e23ac | 42 | int result ; |
Rhyme | 0:f0de320e23ac | 43 | float value ; |
Rhyme | 8:5590f55bdf41 | 44 | char timestr[16] ; |
Rhyme | 0:f0de320e23ac | 45 | print_time(_sampled_time) ; |
Rhyme | 0:f0de320e23ac | 46 | value = get_value() ; |
Rhyme | 0:f0de320e23ac | 47 | printf(" accel = %.3f [%d samples]\n", value, _sample_count) ; |
Rhyme | 8:5590f55bdf41 | 48 | time2seq(_sampled_time, timestr) ; |
Rhyme | 0:f0de320e23ac | 49 | sprintf(_str_buf, |
Rhyme | 8:5590f55bdf41 | 50 | "{\"DEVICE\":\"ACCEL\",\"PN\":\"MMA8451Q\",\"VAL_X\":\"%.3f\",\"VAL_Y\":\"0\",\"VAL_Z\":\"0\",\"UNIT\":\"g\",\"S\":\"%s\",\"E\":\"%d\"}", |
Rhyme | 8:5590f55bdf41 | 51 | value, timestr, _error_count) ; |
Rhyme | 0:f0de320e23ac | 52 | result = afero->setAttribute(1, _str_buf) ; |
Rhyme | 0:f0de320e23ac | 53 | if (result == afSUCCESS) { |
Rhyme | 0:f0de320e23ac | 54 | clear_value() ; |
Rhyme | 0:f0de320e23ac | 55 | } |
Rhyme | 0:f0de320e23ac | 56 | return( result == afSUCCESS ) ; |
Rhyme | 0:f0de320e23ac | 57 | } |
Rhyme | 0:f0de320e23ac | 58 | |
Rhyme | 0:f0de320e23ac | 59 | int edge_accel::accum(void) |
Rhyme | 0:f0de320e23ac | 60 | { |
Rhyme | 0:f0de320e23ac | 61 | int16_t value[3] ; |
Rhyme | 0:f0de320e23ac | 62 | |
Rhyme | 0:f0de320e23ac | 63 | if (_enable) { |
Rhyme | 0:f0de320e23ac | 64 | _accel->getAllRawData(value) ; |
Rhyme | 0:f0de320e23ac | 65 | |
Rhyme | 0:f0de320e23ac | 66 | _sample_count++ ; |
Rhyme | 0:f0de320e23ac | 67 | |
Rhyme | 0:f0de320e23ac | 68 | _accumulation += |
Rhyme | 0:f0de320e23ac | 69 | abs(_prev_x - value[0]) |
Rhyme | 0:f0de320e23ac | 70 | + abs(_prev_y - value[1]) |
Rhyme | 0:f0de320e23ac | 71 | + abs(_prev_z - value[2]) ; |
Rhyme | 0:f0de320e23ac | 72 | |
Rhyme | 0:f0de320e23ac | 73 | _prev_x = value[0] ; |
Rhyme | 0:f0de320e23ac | 74 | _prev_y = value[1] ; |
Rhyme | 0:f0de320e23ac | 75 | _prev_z = value[2] ; |
Rhyme | 0:f0de320e23ac | 76 | } |
Rhyme | 0:f0de320e23ac | 77 | |
Rhyme | 0:f0de320e23ac | 78 | return( _sample_count ) ; |
Rhyme | 0:f0de320e23ac | 79 | } |
Rhyme | 0:f0de320e23ac | 80 | |
Rhyme | 0:f0de320e23ac | 81 | void edge_accel::clear_value(void) |
Rhyme | 0:f0de320e23ac | 82 | { |
Rhyme | 0:f0de320e23ac | 83 | _sample_count = 0 ; |
Rhyme | 0:f0de320e23ac | 84 | _accumulation = 0 ; |
Rhyme | 0:f0de320e23ac | 85 | _prev_x = 0 ; |
Rhyme | 0:f0de320e23ac | 86 | _prev_y = 0 ; |
Rhyme | 0:f0de320e23ac | 87 | _prev_z = 0 ; |
Rhyme | 0:f0de320e23ac | 88 | } |
Rhyme | 0:f0de320e23ac | 89 | |
Rhyme | 0:f0de320e23ac | 90 | float edge_accel::get_value(void) |
Rhyme | 0:f0de320e23ac | 91 | { |
Rhyme | 0:f0de320e23ac | 92 | float result = 0.0 ; |
Rhyme | 0:f0de320e23ac | 93 | if (_sample_count > 0) { |
Rhyme | 0:f0de320e23ac | 94 | result = (float)_accumulation / (float)_sample_count ; |
Rhyme | 0:f0de320e23ac | 95 | } |
Rhyme | 0:f0de320e23ac | 96 | _sampled_time = edge_time ; |
Rhyme | 0:f0de320e23ac | 97 | return( result / 4096.0 ) ; |
Rhyme | 0:f0de320e23ac | 98 | } |
Rhyme | 0:f0de320e23ac | 99 | |
Rhyme | 0:f0de320e23ac | 100 | void edge_accel::send_config(void) |
Rhyme | 0:f0de320e23ac | 101 | { |
Rhyme | 0:f0de320e23ac | 102 | afero->setAttributeBool(100, true) ; /* accel present */ |
Rhyme | 0:f0de320e23ac | 103 | afero->setAttributeBool(101, true) ; /* accel enable */ |
Rhyme | 0:f0de320e23ac | 104 | } |
Rhyme | 0:f0de320e23ac | 105 | |
Rhyme | 0:f0de320e23ac | 106 | void edge_accel::recv_config(void) |
Rhyme | 0:f0de320e23ac | 107 | { |
Rhyme | 0:f0de320e23ac | 108 | } |
Rhyme | 0:f0de320e23ac | 109 | |
Rhyme | 0:f0de320e23ac | 110 |