/* Hello Wokwi! */
/*----------------*/
int sig=A1;
int AO=A0;
int led1=7;
int led2=8;
int led3=9;
int led4=10;
int led5=11;
int led[5]={7,8,9,10,11};
int buttonled[5]={0,1,2,3,4};
bool buttonflag[5]={false,false,false,false,false};
int corridorled=6; //楼道灯
int buttonlightcon=5;//光控使能按键
/**********************/
void setup() {
Serial.begin(115200);
for(int i=0;i<5;i++)
{
pinMode(led[i], OUTPUT);
}
pinMode(corridorled, OUTPUT);//楼道灯设置
pinMode(buttonlightcon, INPUT_PULLUP); //光控使能按键
}
void loop() {
/*for(int i=0;i<5;i++)
{
digitalWrite(led[i], HIGH);
}*/
buttonflagtest();//按键状态检测
buttonconled( );//按键控制led灯
voiceconled();//声控灯光系统
lightpart() ;//外部灯光感应
delay(1000);
}
void partledon()//部分灯打开
{
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
void partledoff()//部分灯关闭
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
void ledon(int n)// 参数n为具体控制的灯ledx
{
digitalWrite(n, HIGH);
}
void ledoff(int n)
{
digitalWrite(n, LOW);
}
/**********************/
void buttonflagtest()//该函数监控按键是否按下
{
for(int i=0;i<=5;i++)
{
if(digitalRead(buttonled[i])==LOW)
{
buttonflag[i]=!buttonflag[i];
}
}
}
/**********************/
void buttonconled( )
{
for(int i=0;i<=5;i++)
{
if(buttonflag[i]==true)
{
ledon(led[i]);
}
if(buttonflag[i]==false)
{
ledoff(led[i]);
}
}
}
/*********声控灯光系统*******/
void voiceconled()
{
int val;
val=analogRead(A1);
if(val>=500)
{
digitalWrite(corridorled, HIGH);
}
if(val<500 )
{
digitalWrite(corridorled, LOW);
}
}
/***********外部灯光感应********************/
void lightpart()
{
int val;
val=analogRead(A0);
if(val>=300 && digitalRead(buttonlightcon)==LOW)
{
partledon();
}
if(val<300 && digitalRead(buttonlightcon)==LOW)
{
partledoff();
}
}