forked from ANTBOT001/ANTBOTKITS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ABT2Flash.ino
100 lines (95 loc) · 2.12 KB
/
ABT2Flash.ino
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <ABTKITS.h>
#include <dht11.h>
#define NOTE_CS5 554 //3
#define NOTE_D5 587 //4
#define NOTE_E5 659 //5
#define DHT11PIN 6//温湿度数据管脚
dht11 DHT11;
ABTKITS abtKits;
int stuD4=1;
int stuD5=1;
void setup() {
// put your setup code here, to run once:
abtKits.ABTINIT();
delay(200);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(7,OUTPUT);
pinMode(13,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
int i;
char scmd[32];
i = digitalRead(4);
if(stuD4!=i)
{
stuD4 = i;
sprintf(scmd,"ABTDR04,%d#",stuD4);
sendStringToFlash(scmd);
}
i = digitalRead(5);
if(stuD5!=i)
{
stuD5 = i;
sprintf(scmd,"ABTDR05,%d#",stuD5);
sendStringToFlash(scmd);
}
int chk = DHT11.read(DHT11PIN);//读温湿度
if(chk==DHTLIB_OK)
{
sprintf(scmd,"ABTSR00,%d#",DHT11.temperature);//温度
sendStringToFlash(scmd);delay(20);
sprintf(scmd,"ABTSR01,%d#",DHT11.humidity);//湿度
sendStringToFlash(scmd);delay(20);
}
abtKits.ABTGetBleCmd();
delay(20);
abtKits.ABTHandleBleCmd();
if(abtKits.curInfo.cRW=='W')
{
abtKits.curInfo.cRW = 'N';//避免下一次重复进入
if(abtKits.curInfo.sID==7)
{
WarnSound();
}
}
delay(100);
}
void sendStringToFlash (char *s)
{
while (*s) {
Serial.write(*s ++);
}
Serial.write(0);
}
void WarnSound()
{
int tonePin = 7;
int melody[] = {
NOTE_CS5,//
NOTE_D5,//
NOTE_D5,//
NOTE_CS5,//
0,
};
int noteDurations[] = {
8,8,4,8,
4,
};
for (int thisNote = 0; thisNote < 4; thisNote++) {
// to calculate the note duration, take one second
// divided by the note type.
//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
int noteDuration = 1000/noteDurations[thisNote];
tone(tonePin, melody[thisNote],noteDuration);
// to distinguish the notes, set a minimum time between them.
// the note's duration + 30% seems to work well:
int pauseBetweenNotes = noteDuration * 1.20;
delay(pauseBetweenNotes);
// stop the tone playing:
noTone(tonePin);
}
}