//以下为发出机代码
#include<SoftwareSerial.h>
#include<SPI.h>
#include<nRF24L01.h>
#include<RF24.h>
#include <FastLED.h>//引入第三方库
#define ledpin 9 // LED灯带连接的Arduino引脚
#define num_leds 30 // 灯带上LED的数量
#define led_type WS2812
uint8_t brightness=0; // LED的亮度
CRGB leds[num_leds];
int IN1=10;
int IN2=5;
long time=pow(2,30);
string close;
int q=0;
SoftwareSerial.BT05(2,3);
RF24.radio(4,6);//先CSN(控制spi通信,低电平时开始,高电平时结束);后CE(高电平时接收,低电平时待机)
const byte address[][6]={"00001","00002"};
void setup() {
Serial.begin(9600);
BT05.begin(9600);
radio.begin();
radio.openWritingPipe(address[1]);
radio.openReadingPipe(1,address[0]);
radio.setPALevel(RF24_PA_MIN);
Serial.print("HC-05 DEMO/TEST");
BT05.print("AT");
analogWrite(11,0);//此处只是象征性的定义铃声大小,具体还得等模块回来以后搞
digitalWrite(12,LOW);
pinMode(11, OUTPUT);
LEDS.addLeds<led_type,ledpin,GRB>(leds,num_leds);//初始化灯带
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
//使IN1和IN2处于输出状态;
}
void loop() {
if (BT05.available()) {
if(BT05.parseInt()>0)
time=BT05.parseInt(); //输入整数时将倒计时赋值给time;
else{
close=BT05.readStringUntil();
if(close=="close"){
analogWrite(IN1,1);
analogWrite(IN2,1);
time=pow(2,30);
brightness=0;
q=0;
}
analogWrite(11,q);
} //输入值为close时将风扇急停、响铃停止、灯泡关闭,且只有在外界输入倒计时时才能开始运转;
}
if(time<=300&&time>=0){
if(digitalRead(12)==HIGH){
analogWrite(IN1,1);
analogWrite(IN2,1);
time=pow(2,30);
brightness=0;}
analogWrite(IN1, 255-time/300*255);
analogWrite(IN1, 0);
if(brightness<=254)brightness+=8;
}//倒数计时小于5分钟开始逐渐提高风速,增强亮度
CHSV HSVcolor(60,255,brightness);
fill_solid(leds,num_leds,HSVcolor);
FastLED.show();
if(time<=120&&time>=0){
if(digitalRead(12)==HIGH){
analogWrite(IN1,1);
analogWrite(IN2,1);
time=pow(2,30);
brightness=0;
q=0;
}
analogWrite(11,q);++q;
}
if(time<=60&&time>=0){
radio.stopListening();
char str[2]={'0'};
radio.write(&str,1);
}
if(time>0){
delay(1000);
time=time-1;
}//实现倒计时且只有在输入close时停下;
}
//从本行开始,为接收机代码
#include<SPI.h>
#include<nRF24L01.h>
#include<RF24.h>
#include<Servo.h>
RF24.radio(5,6);
const byte address[][6]={"00001","00002"};
void setup(){
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(address[0]);
radio.openReadingPipe(1,address[1]);
radio.setPALevel(RF24_PA_MIN);
pinMode(9,OUTPUT);pinMode(10,OUTPUT);pinMode(11,OUTPUT);
digitalWrite(9, LOW);digitalWrite(10, LOW);digitalWrite(11, LOW);
digitalWrite(12,LOW);
int N=3;//震动片数量
int i=9;//最初的震动片接口
}
char rece2[2]={};
void loop(){
radio.startlistening();
radio.read(&rece2,1);
if(i=12) break;
if(digitalRead(12)==HIGH) {
for(int s=9;s<12;++s){digitalWrite(s,LOW);}
break;
}
if(rece2[0]=='0'){
digitalWrite(i, HIGH);
++i;
delay(20*1000);
}
}