Arudino(七)(灯塔)

一、目标实现:

需求:
a)光照与时间(系统的时间来代替-millis())控制探照灯                                                                      ①模拟早上七点 天亮 关灯
②模拟晚上七点 天黑 开灯
③模拟早上七点 天黑 依然保持开灯
Φ模拟晚上七点 天亮 依然保持关灯
PS:早上七点不一定天亮
晚上七点不一定天黑

b)地震报警
①倾斜度大于10度 蜂鸣器报警响起
②倾斜度为0度,蜂鸣器报警停止③设置报警开关,优先级最高可打开/关闭报警器

c)火灾报警

①当火焰探测器检验到火焰,消防灯亮起

二、前期准备:

软件准备:Arduino 18.8

硬件准备:Arduino开发板,面包板,杜邦线,220Ω电阻,1kΩ电阻,LED灯,火焰传感器,光敏电阻,倾斜传感器,蜂鸣器,按钮。

三、接线:

        如下图:

四、编写程序:

判断是否地震了


void loop()
{
  Light();
  if (analogRead(A2) < 900)   //确认是否地址了
  {
    earthquake = true;
    Earthquake();
  }
  else
  {
    noearthquake = true;
    noEarthquake();
  }


}

如果地震发生的情况下

static void Earthquake()  //地震发生的情况
{
  if (noearthquake  == true)
  {
    tone(buzzer, 1000);
  }


  if (digitalRead(button) == HIGH)  //按下按钮后
  {
    noearthquake = false;
    if (BuzzerReady == true)
    {
      tone(buzzer, 1000);
      BuzzerReady = false;
    }
    else
    {
      noTone(buzzer);
      BuzzerReady = true;
    }
    delay(200);
  }

}

如果地震没有发生的情况下

static void noEarthquake()  //地震没有发生的情况
{
  if (earthquake == true)
  {
    noTone(buzzer);
  }

  if (digitalRead(button) == HIGH)  //按下按钮后
  {
    earthquake = false;
    if (BuzzerReady == true)
    {
      tone(buzzer, 1000);
      BuzzerReady = false;
    }
    else
    {
      noTone(buzzer);
      BuzzerReady = true;
    }
    delay(200);
  }

}

探照灯

static void Light()   //探照灯
{
  if (analogRead(A0) < 200)
  {
    digitalWrite(LED, HIGH);
  }
  else
  {
    digitalWrite(LED, LOW);
  }
}

火灾报警器


static void Fire()
{
  if(1023 - analogRead(A5) >51)
  {
    digitalWrite(LED_FIRE,HIGH);
  }
  else
  {
    digitalWrite(LED_FIRE,LOW);
  }
}

总代码

const int LED = 6;
const int buzzer = 5;
const int button = 7;
const int LED_FIRE = 8;

bool BuzzerReady = false;
bool earthquake = false;
bool Buzzer = false;
bool noearthquake = false;

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(LED_FIRE,OUTPUT);
  pinMode(button, INPUT);
  Serial.begin(9600);
}

void loop()
{
  Light();
  if (analogRead(A2) < 900)   //确认是否地址了
  {
    earthquake = true;
    Earthquake();
  }
  else
  {
    noearthquake = true;
    noEarthquake();
  }


}


static void Earthquake()  //地震发生的情况
{
  if (noearthquake  == true)
  {
    tone(buzzer, 1000);
  }


  if (digitalRead(button) == HIGH)  //按下按钮后
  {
    noearthquake = false;
    if (BuzzerReady == true)
    {
      tone(buzzer, 1000);
      BuzzerReady = false;
    }
    else
    {
      noTone(buzzer);
      BuzzerReady = true;
    }
    delay(200);
  }

}


static void noEarthquake()  //地震没有发生的情况
{
  if (earthquake == true)
  {
    noTone(buzzer);
  }

  if (digitalRead(button) == HIGH)  //按下按钮后
  {
    earthquake = false;
    if (BuzzerReady == true)
    {
      tone(buzzer, 1000);
      BuzzerReady = false;
    }
    else
    {
      noTone(buzzer);
      BuzzerReady = true;
    }
    delay(200);
  }

}


static void Light()   //探照灯
{
  if (analogRead(A0) < 200)
  {
    digitalWrite(LED, HIGH);
  }
  else
  {
    digitalWrite(LED, LOW);
  }
}

static void Fire()
{
  if(1023 - analogRead(A5) >51)
  {
    digitalWrite(LED_FIRE,HIGH);
  }
  else
  {
    digitalWrite(LED_FIRE,LOW);
  }
}

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值