Grove sensor component example for Seeed Wio 3G
Dependencies: Grove_LCD_RGB_Backlight Grove_temperature PixelArray Servo WS2812
Fork of Wio_3G_example by
main.cpp@70:cb6d36218441, 2018-08-03 (annotated)
- Committer:
- MACRUM
- Date:
- Fri Aug 03 05:22:15 2018 +0000
- Revision:
- 70:cb6d36218441
- Parent:
- 29:0b58d21e87d6
- Child:
- 71:7d17edde2e03
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jonathan Austin |
0:2757d7abb7d9 | 1 | #include "mbed.h" |
MACRUM | 70:cb6d36218441 | 2 | #include "DigitDisplay.h" |
MACRUM | 70:cb6d36218441 | 3 | |
MACRUM | 70:cb6d36218441 | 4 | #define D20 (PB_4) |
MACRUM | 70:cb6d36218441 | 5 | #define D19 (PB_3) |
MACRUM | 70:cb6d36218441 | 6 | |
MACRUM | 70:cb6d36218441 | 7 | DigitalOut GrovePower(PB_10, 1); |
MACRUM | 70:cb6d36218441 | 8 | DigitalOut led1(D38); |
MACRUM | 70:cb6d36218441 | 9 | AnalogIn ain(A6); |
MACRUM | 70:cb6d36218441 | 10 | InterruptIn btn(D20); |
MACRUM | 70:cb6d36218441 | 11 | |
MACRUM | 70:cb6d36218441 | 12 | DigitDisplay display(RXD, TXD); // 4-Digit Display connected to UART Grove connector |
MACRUM | 70:cb6d36218441 | 13 | |
MACRUM | 70:cb6d36218441 | 14 | Ticker ticker; |
MACRUM | 70:cb6d36218441 | 15 | volatile uint8_t second = 0; |
MACRUM | 70:cb6d36218441 | 16 | volatile uint8_t minute = 0; |
MACRUM | 70:cb6d36218441 | 17 | volatile uint8_t hour = 12; |
MACRUM | 70:cb6d36218441 | 18 | volatile bool colon_enable = false; |
MACRUM | 70:cb6d36218441 | 19 | |
MACRUM | 70:cb6d36218441 | 20 | |
MACRUM | 70:cb6d36218441 | 21 | /// |
MACRUM | 70:cb6d36218441 | 22 | |
MACRUM | 70:cb6d36218441 | 23 | float get_temp() |
MACRUM | 70:cb6d36218441 | 24 | { |
MACRUM | 70:cb6d36218441 | 25 | const int B = 4275; // B value of the thermistor |
MACRUM | 70:cb6d36218441 | 26 | const int R0 = 100000; // R0 = 100k |
MACRUM | 70:cb6d36218441 | 27 | AnalogIn temp(A4); |
MACRUM | 70:cb6d36218441 | 28 | |
MACRUM | 70:cb6d36218441 | 29 | float R = 1.0f/temp.read() - 1.0f; |
MACRUM | 70:cb6d36218441 | 30 | R = R0*R; |
Jonathan Austin |
0:2757d7abb7d9 | 31 | |
MACRUM | 70:cb6d36218441 | 32 | float temperature = 1.0/(log(R/R0)/B+1/298.15)-273.15; // convert to temperature via datasheet |
MACRUM | 70:cb6d36218441 | 33 | return temperature; |
MACRUM | 70:cb6d36218441 | 34 | } |
MACRUM | 70:cb6d36218441 | 35 | /// |
MACRUM | 70:cb6d36218441 | 36 | |
MACRUM | 70:cb6d36218441 | 37 | |
MACRUM | 70:cb6d36218441 | 38 | void tick() |
MACRUM | 70:cb6d36218441 | 39 | { |
MACRUM | 70:cb6d36218441 | 40 | colon_enable = !colon_enable; |
MACRUM | 70:cb6d36218441 | 41 | display.setColon(colon_enable); |
MACRUM | 70:cb6d36218441 | 42 | |
MACRUM | 70:cb6d36218441 | 43 | if (colon_enable) { |
MACRUM | 70:cb6d36218441 | 44 | second++; |
MACRUM | 70:cb6d36218441 | 45 | if (second >= 60) { |
MACRUM | 70:cb6d36218441 | 46 | second = 0; |
MACRUM | 70:cb6d36218441 | 47 | minute++; |
MACRUM | 70:cb6d36218441 | 48 | if (minute >= 60) { |
MACRUM | 70:cb6d36218441 | 49 | minute = 0; |
MACRUM | 70:cb6d36218441 | 50 | hour++; |
MACRUM | 70:cb6d36218441 | 51 | if (hour >= 24) { |
MACRUM | 70:cb6d36218441 | 52 | hour = 0; |
MACRUM | 70:cb6d36218441 | 53 | } |
MACRUM | 70:cb6d36218441 | 54 | } |
MACRUM | 70:cb6d36218441 | 55 | display.write(hour * 100 + minute); |
MACRUM | 70:cb6d36218441 | 56 | } |
MACRUM | 70:cb6d36218441 | 57 | } |
MACRUM | 70:cb6d36218441 | 58 | } |
MACRUM | 70:cb6d36218441 | 59 | |
MACRUM | 70:cb6d36218441 | 60 | void push() |
MACRUM | 70:cb6d36218441 | 61 | { |
MACRUM | 70:cb6d36218441 | 62 | printf("*"); |
MACRUM | 70:cb6d36218441 | 63 | } |
Jonathan Austin |
0:2757d7abb7d9 | 64 | |
Jonathan Austin |
1:846c97078558 | 65 | // main() runs in its own thread in the OS |
MACRUM | 70:cb6d36218441 | 66 | int main() |
MACRUM | 70:cb6d36218441 | 67 | { |
MACRUM | 70:cb6d36218441 | 68 | display.write(hour * 100 + minute); |
MACRUM | 70:cb6d36218441 | 69 | ticker.attach(tick, 0.5); |
MACRUM | 70:cb6d36218441 | 70 | |
MACRUM | 70:cb6d36218441 | 71 | btn.fall(push); |
MACRUM | 70:cb6d36218441 | 72 | |
MACRUM | 70:cb6d36218441 | 73 | int cnt = 0; |
MACRUM | 70:cb6d36218441 | 74 | printf("hello, Mbed world\n"); |
Jonathan Austin |
0:2757d7abb7d9 | 75 | while (true) { |
MACRUM | 70:cb6d36218441 | 76 | printf("count = %4d, analog = %f, temp = %f\n", cnt++, ain.read(), get_temp()); |
Jonathan Austin |
0:2757d7abb7d9 | 77 | led1 = !led1; |
mbed_official | 22:af9dcf379926 | 78 | wait(0.5); |
Jonathan Austin |
0:2757d7abb7d9 | 79 | } |
Jonathan Austin |
0:2757d7abb7d9 | 80 | } |
Jonathan Austin |
1:846c97078558 | 81 |