1#include "DFRobot_GR10_30.h"
2#include "DFRobot_DF2301Q.h"
3#if defined(ARDUINO_AVR_UNO) || defined(ESP8266)
4#include <SoftwareSerial.h>
5#endif
6
7const int relayPins[] = {2, 3, 4, 5};
8int relayStates[] = {0, 0, 0, 0};
9
10#if defined(ARDUINO_AVR_UNO)||defined(ESP8266)
11SoftwareSerial softSerialGesture(4, 5);
12DFRobot_GR10_30 gr10_30(GR10_30_DEVICE_ADDR, &Wire);
13#else
14DFRobot_GR10_30 gr10_30(GR10_30_DEVICE_ADDR, &Wire);
15#endif
16
17#if (defined(ARDUINO_AVR_UNO) || defined(ESP8266))
18SoftwareSerial softSerialVoice(6, 7);
19DFRobot_DF2301Q_UART asr(&softSerialVoice);
20#elif defined(ESP32)
21DFRobot_DF2301Q_UART asr(&Serial1, D3, D2);
22#else
23DFRobot_DF2301Q_UART asr(&Serial1);
24#endif
25
26void setup() {
27Serial.begin(115200);
28for (int i = 0; i < 4; i++) {
29pinMode(relayPins[i], OUTPUT);
30digitalWrite(relayPins[i], HIGH);
31}
32
33while (gr10_30.begin() != 0) {
34Serial.println("Gesture Sensor failed!!");
35delay(1000);
36}
37
38while (!(asr.begin())) {
39Serial.println("Voice Module failed!!");
40delay(3000);
41}
42
43asr.settingCMD(DF2301Q_UART_MSG_CMD_SET_VOLUME, 7);
44}
45
46void loop() {
47if (gr10_30.getDataReady()) {
48uint16_t gestures = gr10_30.getGesturesState();
49if (gestures & GESTURE_RIGHT) Serial.println("Swiped Right - Changing relay");
50if (gestures & GESTURE_LEFT) Serial.println("Swiped Left - Changing relay");
51if (gestures & GESTURE_UP) Serial.println("Swiped Up - Turning ON relay");
52if (gestures & GESTURE_DOWN) Serial.println("Swiped Down - Turning OFF relay");
53}
54
55uint8_t CMDID = asr.getCMDID();
56switch (CMDID) {
57case 5: relayStates[0] = 1; Serial.println("Relay 1 ON"); break;
58case 6: relayStates[0] = 0; Serial.println("Relay 1 OFF"); break;
59}
60}
keep2share
19 days ago
thanks nice project