-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
85 lines (74 loc) · 2.17 KB
/
Copy pathmain.cpp
File metadata and controls
85 lines (74 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <cstdio>
#include "miosix.h"
#include "pedometer.h"
#include "gui.h"
#include "audio/slice-and-play.h"
#include "nrf24l01p/wifi_module.h"
using namespace std;
using namespace miosix;
/* BUTTON GPIO
* Gpio<GPIOE_BASE,13> btn_UP;
* Gpio<GPIOE_BASE,14> btn_OK;
* Gpio<GPIOE_BASE,15> btn_DOWN;
*
* LCD GPIO
* Gpio<GPIOE_BASE,7> rs; //pin4
* Gpio<GPIOE_BASE,8> e; //pin6
* Gpio<GPIOE_BASE,9> d4; //pin11
* Gpio<GPIOE_BASE,10> d5; //pin12
* Gpio<GPIOE_BASE,11> d6; //pin13
* Gpio<GPIOE_BASE,12> d7; //pin14
*
* WIFI GPIO
* GND //pin1
* 3v3 //pin2
* Gpio<GPIOB_BASE,11> CE; //pin3
* Gpio<GPIOB_BASE,12> CS; //pin4
* Gpio<GPIOB_BASE,13> SCK; //pin5
* Gpio<GPIOB_BASE,15> MOSI; //pin6
* Gpio<GPIOB_BASE,14> MISO; //pin7
* Gpio<GPIOA_BASE,1> IRQ; //pin8
*
* 0xE7E7E7E7E7 address
* channel 112
*/
#define SOUND_DELAY 30 //seconds
#define LCD_REFRESH 50000 //useconds
void pedometerTask(void *argv) {
Pedometer::instance().init(GUI::getHeight(), GUI::getWeight());
Pedometer::instance().start();
}
void audio_and_wifiTask(void *argv) {
char stepsCod[32];
for (;;) {
sleep(SOUND_DELAY);
int steps = Pedometer::instance().getSteps();
if (steps != 0) {
ring::instance().play_n_of_step(steps, 100);
sprintf(stepsCod, "%d", steps);
send(stepsCod);
}
}
}
int main() {
GUI::init();
wifi_init();
Thread *pedometer_t;
pedometer_t = Thread::create(pedometerTask, 2048, 1, NULL, Thread::JOINABLE);
Thread *audio_t;
audio_t = Thread::create(audio_and_wifiTask, 2048, 1, NULL, Thread::JOINABLE);
Pedometer& pedo = Pedometer::instance();
for (;;) {
//STEPS
GUI::steps(pedo.getSteps());
//MODE
GUI::mode(pedo.getMode());
//SPEED
GUI::speed(pedo.getSpeed());
//DISTANCE
GUI::distance(pedo.getDistance());
//CALORIES
GUI::calories(pedo.getCalories());
usleep(LCD_REFRESH);
}
}