Local library

Dependencies:   WakeUp PinDetect

Dependents:   Inductive_Sensor Inductive_Sensor_Jasper Inductive_Sensor_3

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?

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