/* 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();
  }
}