#include "Wire.h"
#include <SoftwareSerial.h>
#include "EBYTE22.h"
#include "MPU6050.h"
#define PIN_TX 2
#define PIN_RX 3
#define PIN_M0 4
#define PIN_M1 5
#define PIN_AX 6
MPU6050 mpu;
SoftwareSerial E22Serial(PIN_TX, PIN_RX, false);
EBYTE22 E22(&E22Serial, PIN_M0, PIN_M1, PIN_AX);
int16_t ax, ay, az;
int16_t gx, gy, gz;
long ACC, GYR;
long maxACC, maxGYR, trACC, trGYR;
unsigned long timing;
unsigned long N = 1000;
long maxCount = 100; //max = 548
long count = 0;
byte sig = 0x01010101;//менять здесь для разных звуков
void setup() {
Wire.begin();
E22Serial.begin(9600);
Serial.begin(9600);
delay(200);
if (E22.init()) {
Serial.println("init OK");
} else {
Serial.println("init Error");
}
mpu.initialize();
mpu.setFullScaleAccelRange(0x00);
delay(2000);
// "калибровка" максимальных значений
for (int i = 0; i < 30; i++) {
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
ACC = abs(ax) + abs(ay) + abs(az);
GYR = abs(gx) + abs(gy) + abs(gz);
if (ACC > maxACC) maxACC = ACC;
if (GYR > maxGYR) maxGYR = GYR;
delay(5);
}
maxACC = maxACC + trACC;
maxGYR = maxGYR + trGYR;
}
void loop() {
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
// сумма модулей
ACC = abs(ax) + abs(ay) + abs(az);
GYR = abs(gx) + abs(gy) + abs(gz);
if (ACC > maxACC || GYR > maxGYR) {
count++;
if (millis() - timing >= N && count >= maxCount) {
Serial.print(count);
timing = millis();
count = 0;
Serial.println(" KEK!");
if (E22.getBusy()) {
E22.completeTask(500);
}
E22.sendByte(sig);
E22.flush();
delay(500);
}
}
}
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:GND.2
uno:RESET.2
uno:0
uno:1
uno:13
uno:3.3V
uno:AREF
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
uno:A6
uno:A7
uno:5V
uno:RESET
uno:GND.1
uno:VIN
uno:12.2
uno:5V.2
uno:13.2
uno:11.2
uno:RESET.3
uno:GND.3
mpu1:INT
mpu1:AD0
mpu1:XCL
mpu1:XDA
mpu1:SDA
mpu1:SCL
mpu1:GND
mpu1:VCC