Local library
Dependencies: WakeUp PinDetect
Dependents: Inductive_Sensor Inductive_Sensor_Jasper Inductive_Sensor_3
Bob.cpp@7:0b23995256e7, 2016-09-07 (annotated)
- Committer:
- bobgiesberts
- Date:
- Wed Sep 07 09:58:19 2016 +0000
- Revision:
- 7:0b23995256e7
- Parent:
- 6:0e7c0ad0508b
- Child:
- 9:3fe744aca1c0
No big changes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bobgiesberts | 0:17943815800f | 1 | /** |
bobgiesberts | 0:17943815800f | 2 | * @file Bob.cpp |
bobgiesberts | 6:0e7c0ad0508b | 3 | * @brief just some functions to communicate with the |
bobgiesberts | 6:0e7c0ad0508b | 4 | * processor board for the LDC1614 |
bobgiesberts | 0:17943815800f | 5 | * |
bobgiesberts | 0:17943815800f | 6 | * @author Bob Giesberts |
bobgiesberts | 0:17943815800f | 7 | * |
bobgiesberts | 6:0e7c0ad0508b | 8 | * @date 2016-08-24 |
bobgiesberts | 0:17943815800f | 9 | */ |
bobgiesberts | 0:17943815800f | 10 | |
bobgiesberts | 0:17943815800f | 11 | #include "Bob.h" |
bobgiesberts | 0:17943815800f | 12 | #include "mbed.h" |
bobgiesberts | 4:9c3c8eb56a2b | 13 | #include "mbed_debug.h" |
bobgiesberts | 2:681ecede6dcb | 14 | #include "WakeUp.h" |
bobgiesberts | 0:17943815800f | 15 | |
bobgiesberts | 2:681ecede6dcb | 16 | |
bobgiesberts | 6:0e7c0ad0508b | 17 | void keyPressed( void ) |
bobgiesberts | 6:0e7c0ad0508b | 18 | { |
bobgiesberts | 6:0e7c0ad0508b | 19 | // do something |
bobgiesberts | 6:0e7c0ad0508b | 20 | debug( "button pressed\r\n" ); |
bobgiesberts | 6:0e7c0ad0508b | 21 | } |
bobgiesberts | 6:0e7c0ad0508b | 22 | |
bobgiesberts | 6:0e7c0ad0508b | 23 | |
bobgiesberts | 6:0e7c0ad0508b | 24 | |
bobgiesberts | 7:0b23995256e7 | 25 | Bob::Bob(PinName process_led, PinName error_led, PinName button, PinName enable, PinName sd_present, PinName battery) : _led_process(process_led), _led_error(error_led), _button(button), _enable(enable) |
bobgiesberts | 0:17943815800f | 26 | { |
bobgiesberts | 6:0e7c0ad0508b | 27 | // setup leds |
bobgiesberts | 6:0e7c0ad0508b | 28 | _led_process = 0; // green |
bobgiesberts | 6:0e7c0ad0508b | 29 | _led_error = 0; // red |
bobgiesberts | 5:c2468a69aacb | 30 | |
bobgiesberts | 6:0e7c0ad0508b | 31 | // setup I/O button |
bobgiesberts | 6:0e7c0ad0508b | 32 | _button.mode( PullUp ); |
bobgiesberts | 6:0e7c0ad0508b | 33 | wait_ms(1); |
bobgiesberts | 6:0e7c0ad0508b | 34 | _button.attach_asserted( &keyPressed ); |
bobgiesberts | 6:0e7c0ad0508b | 35 | _button.setSampleFrequency(); |
bobgiesberts | 2:681ecede6dcb | 36 | |
bobgiesberts | 6:0e7c0ad0508b | 37 | // setup SD card system |
bobgiesberts | 2:681ecede6dcb | 38 | _sd_card_detect = new DigitalIn( sd_present ); |
bobgiesberts | 2:681ecede6dcb | 39 | _sd_card_detect->mode( PullUp ); |
bobgiesberts | 0:17943815800f | 40 | |
bobgiesberts | 6:0e7c0ad0508b | 41 | // setup battery |
bobgiesberts | 2:681ecede6dcb | 42 | _batt = new AnalogIn( battery ); |
bobgiesberts | 2:681ecede6dcb | 43 | |
bobgiesberts | 0:17943815800f | 44 | } |
bobgiesberts | 0:17943815800f | 45 | |
bobgiesberts | 6:0e7c0ad0508b | 46 | Bob::~Bob() {} |
bobgiesberts | 6:0e7c0ad0508b | 47 | |
bobgiesberts | 6:0e7c0ad0508b | 48 | |
bobgiesberts | 6:0e7c0ad0508b | 49 | |
bobgiesberts | 0:17943815800f | 50 | bool Bob::checkSD(void) |
bobgiesberts | 0:17943815800f | 51 | { |
bobgiesberts | 7:0b23995256e7 | 52 | // TODO: this should first check if _enable is on. if not, return false either way! |
bobgiesberts | 7:0b23995256e7 | 53 | |
bobgiesberts | 7:0b23995256e7 | 54 | _enable.write(1); |
bobgiesberts | 7:0b23995256e7 | 55 | wait_ms(3); |
bobgiesberts | 2:681ecede6dcb | 56 | return !_sd_card_detect->read(); |
bobgiesberts | 2:681ecede6dcb | 57 | } |
bobgiesberts | 2:681ecede6dcb | 58 | |
bobgiesberts | 7:0b23995256e7 | 59 | void Bob::wakeup_periphery(void) |
bobgiesberts | 2:681ecede6dcb | 60 | { |
bobgiesberts | 7:0b23995256e7 | 61 | _enable.write(1); // power SD-card |
bobgiesberts | 7:0b23995256e7 | 62 | wait_ms(3); |
bobgiesberts | 4:9c3c8eb56a2b | 63 | // wait(0.3); // this shouldn't be necessary because loading the LDC library already takes 0.81 s |
bobgiesberts | 0:17943815800f | 64 | } |
bobgiesberts | 0:17943815800f | 65 | |
bobgiesberts | 7:0b23995256e7 | 66 | void Bob::shutdown_periphery(void) |
bobgiesberts | 3:68c005d410e1 | 67 | { |
bobgiesberts | 7:0b23995256e7 | 68 | _enable.write(0); |
bobgiesberts | 3:68c005d410e1 | 69 | } |
bobgiesberts | 3:68c005d410e1 | 70 | |
bobgiesberts | 4:9c3c8eb56a2b | 71 | void Bob::sleep(uint32_t ms) |
bobgiesberts | 3:68c005d410e1 | 72 | { |
bobgiesberts | 4:9c3c8eb56a2b | 73 | WakeUp::calibrate(); // calibration takes 100 ms |
bobgiesberts | 4:9c3c8eb56a2b | 74 | WakeUp::set_ms( ms - 100 ); // substract this from the total sleep time |
bobgiesberts | 4:9c3c8eb56a2b | 75 | deepsleep(); |
bobgiesberts | 3:68c005d410e1 | 76 | } |
bobgiesberts | 1:2234e0b31d94 | 77 | |
bobgiesberts | 2:681ecede6dcb | 78 | // battery voltage should be 3.1V (min) < 3.7V (typ) < 4.22V (max) |
bobgiesberts | 2:681ecede6dcb | 79 | float Bob::battery(void) |
bobgiesberts | 2:681ecede6dcb | 80 | { |
bobgiesberts | 2:681ecede6dcb | 81 | return (float)_batt->read() * 3.0 * 2.0; |
bobgiesberts | 2:681ecede6dcb | 82 | } |
bobgiesberts | 2:681ecede6dcb | 83 | |
bobgiesberts | 0:17943815800f | 84 | void Bob::flash( int n ) |
bobgiesberts | 0:17943815800f | 85 | { |
bobgiesberts | 6:0e7c0ad0508b | 86 | _led_process = 0; |
bobgiesberts | 0:17943815800f | 87 | for(int i=0; i<n*2; i++){ |
bobgiesberts | 6:0e7c0ad0508b | 88 | _led_process = 1-_led_process; |
bobgiesberts | 5:c2468a69aacb | 89 | wait(0.2); |
bobgiesberts | 0:17943815800f | 90 | } |
bobgiesberts | 0:17943815800f | 91 | } |
bobgiesberts | 0:17943815800f | 92 | |
bobgiesberts | 7:0b23995256e7 | 93 | void Bob::processing(void) { _led_process = 1; } |
bobgiesberts | 7:0b23995256e7 | 94 | void Bob::no_processing(void) { _led_process = 0; } |
bobgiesberts | 7:0b23995256e7 | 95 | |
bobgiesberts | 7:0b23995256e7 | 96 | void Bob::error(void) { _led_error = 1; } |
bobgiesberts | 7:0b23995256e7 | 97 | void Bob::no_error(void) { _led_error = 0; } |