心拍センサーをサンプリングして、Ambientに送り、心拍波形を描くサンプルプログラムです。 https://ambidata.io
Dependencies: AmbientLib SimpleIoTBoardLib mbed
main.cpp
- Committer:
- AmbientData
- Date:
- 2016-06-13
- Revision:
- 0:5e73ce0d93af
File content as of revision 0:5e73ce0d93af:
/* * while (true) { * clear data. * sample heart pulse every 25m seconds, 28 times. * send data to Ambient. * wait 2 seconds. */ #include "mbed.h" #include "math.h" #include "ESP8266Interface.h" #include "TCPSocketConnection.h" #include "SoftSerialSendOnry.h" #include "Ambient.h" #define SAMPLING 25 // Sampling period in milliseconds // When BPM is 100, IBI is 600msec and we have 30 samples. #define NSAMPLES 35 // Number of Samples #define BUFSIZE 1050 ESP8266Interface wifi(dp16,dp15,dp4,"ssid","password",115200); // TX,RX,Reset,SSID,Password,Baud SoftSerialSendOnry pc(dp10); DigitalOut led(dp6); unsigned int channelId = 100; const char* userKey = "ユーザーキー"; const char* writeKey = "ライトキー"; Ambient ambient; AnalogIn pulsePin(dp13); Ticker t2; volatile int done = false; unsigned short signal[NSAMPLES]; char buffer[BUFSIZE]; volatile int sampleIndex = 0; void sampling() { led = 1; signal[sampleIndex++] = pulsePin.read_u16(); if (sampleIndex >= NSAMPLES) { done = true; } } int main() { TCPSocketConnection socket; pc.baud(9600); pc.printf("start\r\n"); wifi.init(); //Reset wifi.connect(); //Use DHCP pc.printf("IP Address is %s\r\n", wifi.getIPAddress()); ambient.init(channelId, writeKey, &socket); led = 0; while (true) { pc.printf("sampling start..."); done = false; sampleIndex = 0; t2.attach_us(&sampling, SAMPLING * 1000.0f); while (!done) { ; } t2.detach(); pc.printf("done\r\n"); led = 0; sprintf(buffer, "{\"writeKey\":\"%s\",\"data\":[", writeKey); for (int i = 0; i < NSAMPLES; i++) { sprintf(&buffer[strlen(buffer)], "{\"created\":%d,\"d%d\":%d},", SAMPLING * i, 2, signal[i]); } buffer[strlen(buffer)-1] = '\0'; sprintf(&buffer[strlen(buffer)], "]}\r\n"); ambient.delete_data(userKey); int sent = ambient.bulk_send(buffer); pc.printf("%d bytes sent\r\n", sent); wait(5); } }