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

Dependencies:   mbed vt100

Committer:
Rhyme
Date:
Fri Dec 01 06:16:31 2017 +0000
Revision:
0:f0de320e23ac
Child:
8:5590f55bdf41
OLED display for GAS pressure started working

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 0:f0de320e23ac 44 print_time(_sampled_time) ;
Rhyme 0:f0de320e23ac 45 value = get_value() ;
Rhyme 0:f0de320e23ac 46 printf(" accel = %.3f [%d samples]\n", value, _sample_count) ;
Rhyme 0:f0de320e23ac 47 sprintf(_str_buf,
Rhyme 0:f0de320e23ac 48 "{\"DEVICE\":\"ACCEL\",\"PN\":\"MMA8451Q\",\"VAL_X\":\"%.3f\",\"VAL_Y\":\"0\",\"VAL_Z\":\"0\",\"UNIT\":\"g\",\"S\":\"%06d\",\"E\":\"%d\"}",
Rhyme 0:f0de320e23ac 49 value, time2seq(_sampled_time), _error_count) ;
Rhyme 0:f0de320e23ac 50 result = afero->setAttribute(1, _str_buf) ;
Rhyme 0:f0de320e23ac 51 if (result == afSUCCESS) {
Rhyme 0:f0de320e23ac 52 clear_value() ;
Rhyme 0:f0de320e23ac 53 }
Rhyme 0:f0de320e23ac 54 return( result == afSUCCESS ) ;
Rhyme 0:f0de320e23ac 55 }
Rhyme 0:f0de320e23ac 56
Rhyme 0:f0de320e23ac 57 int edge_accel::accum(void)
Rhyme 0:f0de320e23ac 58 {
Rhyme 0:f0de320e23ac 59 int16_t value[3] ;
Rhyme 0:f0de320e23ac 60
Rhyme 0:f0de320e23ac 61 if (_enable) {
Rhyme 0:f0de320e23ac 62 _accel->getAllRawData(value) ;
Rhyme 0:f0de320e23ac 63
Rhyme 0:f0de320e23ac 64 _sample_count++ ;
Rhyme 0:f0de320e23ac 65
Rhyme 0:f0de320e23ac 66 _accumulation +=
Rhyme 0:f0de320e23ac 67 abs(_prev_x - value[0])
Rhyme 0:f0de320e23ac 68 + abs(_prev_y - value[1])
Rhyme 0:f0de320e23ac 69 + abs(_prev_z - value[2]) ;
Rhyme 0:f0de320e23ac 70
Rhyme 0:f0de320e23ac 71 _prev_x = value[0] ;
Rhyme 0:f0de320e23ac 72 _prev_y = value[1] ;
Rhyme 0:f0de320e23ac 73 _prev_z = value[2] ;
Rhyme 0:f0de320e23ac 74 }
Rhyme 0:f0de320e23ac 75
Rhyme 0:f0de320e23ac 76 return( _sample_count ) ;
Rhyme 0:f0de320e23ac 77 }
Rhyme 0:f0de320e23ac 78
Rhyme 0:f0de320e23ac 79 void edge_accel::clear_value(void)
Rhyme 0:f0de320e23ac 80 {
Rhyme 0:f0de320e23ac 81 _sample_count = 0 ;
Rhyme 0:f0de320e23ac 82 _accumulation = 0 ;
Rhyme 0:f0de320e23ac 83 _prev_x = 0 ;
Rhyme 0:f0de320e23ac 84 _prev_y = 0 ;
Rhyme 0:f0de320e23ac 85 _prev_z = 0 ;
Rhyme 0:f0de320e23ac 86 }
Rhyme 0:f0de320e23ac 87
Rhyme 0:f0de320e23ac 88 float edge_accel::get_value(void)
Rhyme 0:f0de320e23ac 89 {
Rhyme 0:f0de320e23ac 90 float result = 0.0 ;
Rhyme 0:f0de320e23ac 91 if (_sample_count > 0) {
Rhyme 0:f0de320e23ac 92 result = (float)_accumulation / (float)_sample_count ;
Rhyme 0:f0de320e23ac 93 }
Rhyme 0:f0de320e23ac 94 _sampled_time = edge_time ;
Rhyme 0:f0de320e23ac 95 return( result / 4096.0 ) ;
Rhyme 0:f0de320e23ac 96 }
Rhyme 0:f0de320e23ac 97
Rhyme 0:f0de320e23ac 98 void edge_accel::send_config(void)
Rhyme 0:f0de320e23ac 99 {
Rhyme 0:f0de320e23ac 100 afero->setAttributeBool(100, true) ; /* accel present */
Rhyme 0:f0de320e23ac 101 afero->setAttributeBool(101, true) ; /* accel enable */
Rhyme 0:f0de320e23ac 102 }
Rhyme 0:f0de320e23ac 103
Rhyme 0:f0de320e23ac 104 void edge_accel::recv_config(void)
Rhyme 0:f0de320e23ac 105 {
Rhyme 0:f0de320e23ac 106 }
Rhyme 0:f0de320e23ac 107
Rhyme 0:f0de320e23ac 108