POC1.5 prototype 2 x color sensor 2 x LM75B 3 x AnalogIn 1 x accel

Dependencies:   mbed vt100

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?

UserRevisionLine numberNew 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