#include <CurieIMU.h> #include <CuriePME.h> #include <CurieBLE.h> #include <SerialFlash.h> #include <SPI.h> #include "buzzer.h" #include "loadIMU.h" //#include "saveLoad.h" //#include "loadIMUa.h" //#include "SaveAndLoad.h" Buzzer buzzer(6); int buttonPin = 8; void setup() { pinMode(buttonPin, INPUT_PULLUP); Serial.begin(115200); while (!Serial); CurieIMU.begin(); CuriePME.begin(); // pinMode(buttonPin, INPUT_PULLUP); // if (digitalRead(buttonPin)==HIGH) // { // //加载数据,并进入识别模式 // // restoreNetworkKnowledge(); // }else // { // //学习数据,并存入Flash // // saveNetworkKnowledge(); // } Serial.println("test test"); CurieIMU.begin(); CuriePME.begin(); CurieIMU.setAccelerometerRate(1600); CurieIMU.setAccelerometerRange(2); // while (digitalRead(buttonPin) == HIGH); Serial.println("Training begin==============================="); Serial.println("3"); delay(1000); Serial.println("2"); delay(1000); Serial.println("1"); delay(1000); Serial.println("Training begin"); training1(5); Serial.println("Training begin==============================="); Serial.println("3"); delay(1000); Serial.println("2"); delay(1000); Serial.println("1"); delay(1000); Serial.println("Training begin"); training2(5); Serial.println("Training begin==============================="); Serial.println("3"); delay(1000); Serial.println("2"); delay(1000); Serial.println("1"); delay(1000); Serial.println("Training begin"); training3(5); } byte vector[128]; void loop() { // while(digitalRead(buttonPin)==HIGH); // delay(10); readVectorFromIMU(vector); unsigned int category = CuriePME.classify(vector, 128); if (category == CuriePME.noMatch) { Serial.println("noMatch"); } else { Serial.println(category); } } //连续动作识别 void training1(int trainingReps) { unsigned int currentTraining = 0; unsigned int actionsLen = 3; while (currentTraining < trainingReps) { buzzer.bbb(); currentTraining++; Serial.println(currentTraining); unsigned int currentAction = 0; byte vector1[128]; byte vector2[128]; byte vector3[128]; // byte vector4[128]; readVectorFromIMU(vector1); readVectorFromIMU(vector2); readVectorFromIMU(vector3); // readVectorFromIMU(vector4); CuriePME.learn(vector1, 128, 1); CuriePME.learn(vector2, 128, 2); CuriePME.learn(vector3, 128, 3); // CuriePME.learn(vector4, 128, 4); Serial.println("Got it!"); buzzer.end(); } } void training2(int trainingReps) { unsigned int currentTraining = 0; unsigned int actionsLen = 3; while (currentTraining < trainingReps) { buzzer.bbb(); currentTraining++; Serial.println(currentTraining); unsigned int currentAction = 0; byte vector1[128]; byte vector2[128]; byte vector3[128]; // byte vector4[128]; readVectorFromIMU(vector1); readVectorFromIMU(vector2); readVectorFromIMU(vector3); // readVectorFromIMU(vector4); CuriePME.learn(vector1, 128, 5); CuriePME.learn(vector2, 128, 6); CuriePME.learn(vector3, 128, 7); // CuriePME.learn(vector4, 128, 8); Serial.println("Got it!"); buzzer.end(); } } void training3(int trainingReps) { unsigned int currentTraining = 0; unsigned int actionsLen = 3; while (currentTraining < trainingReps) { buzzer.bbb(); currentTraining++; Serial.println(currentTraining); unsigned int currentAction = 0; byte vector1[128]; byte vector2[128]; byte vector3[128]; // byte vector4[128]; readVectorFromIMU(vector1); readVectorFromIMU(vector2); readVectorFromIMU(vector3); // readVectorFromIMU(vector4); CuriePME.learn(vector1, 128, 9); CuriePME.learn(vector2, 128, 10); CuriePME.learn(vector3, 128, 11); // CuriePME.learn(vector4, 128, 12); Serial.println("Got it!"); buzzer.end(); } }