之前用的esp8266,做到后面发现引脚不够了,就改成用esp32,
这是之前用的代码
const int ledPin = 23; //led接D0引脚
int ledState = LOW; //led引脚状态变量
int hw = 15; //设置红外传感器的引脚为D6
int MQ = 4; //设置烟雾传感器的引脚为D5
int fmq= 2; //蜂鸣器接D3引脚
int keyt=5; //复位按键接D1引脚
int x = 0; //转换紧急状态和正常状态的变量
unsigned long previousMillis = 0; //上一次100毫秒的millis值
const long interval = 100; //定时100毫秒
void setup() {
//设置各引脚的工作方式
pinMode(ledPin ,OUTPUT);
pinMode(fmq,OUTPUT);
pinMode(keyt,INPUT);
//设置波特率
Serial.begin(115200);
Serial.println(digitalRead(hw));
Serial.println(digitalRead(MQ));
//初始化各引脚
digitalWrite(ledPin, LOW);
digitalWrite(fmq,LOW);
}
void loop() {
unsigned long currentMillis = millis(); //将Arduino开机后运行的毫秒数赋给currentMillis
Serial.println(digitalRead(hw));
if(digitalRead(hw)==LOW){ // 如果红外传感器输出高电平
x = 1;
digitalWrite(ledPin, HIGH);//灯1亮
digitalWrite(fmq,HIGH);
}
Serial.println(digitalRead(MQ));
if(digitalRead(MQ)==LOW){ // 如果烟雾传感器输出高电平
x = 1;
digitalWrite(ledPin, HIGH);//灯1亮
digitalWrite(fmq,HIGH);
}
Serial.println(digitalRead(keyt));
if(digitalRead(keyt)==HIGH){
x = 0;
digitalWrite(fmq,LOW);
digitalWrite(ledPin, LOW);
}
else {
digitalWrite(ledPin, LOW);}
//每100毫秒led状态反转
if (currentMillis - previousMillis >= interval&&x) {
previousMillis = currentMillis; // 每100毫秒将currentMillis值赋给previousMillis
if (ledState == LOW) { //led状态反转
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite(ledPin, ledState);
}
else if (millis() - previousMillis <= 0) //防止millis函数溢出
{
previousMillis = millis();
}
}
现在只能给信号灯亮,不能闪灯,想要闪灯,和蜂鸣器搭配做声光报警。