Arduino应用开发:第十五章代码及练习答案

代码编号:smokeAlert_1

[code]

bool fireSta; //火情状态:false=有火情;true=无火情

void setup() {

  // put your setup code here, to run once:

  pinMode(7, OUTPUT); //设置7号管脚为输出模式

  pinMode(8, INPUT);  //设置8号管脚为输入模式

  for(int cnt=0; cnt <15; cnt++){ //重复15次,每次2秒钟

      digitalWrite(7, HIGH);

      delay(1000);

      digitalWrite(7, LOW);

      delay(1000);

  } //预热时间结束  

}

void loop() {

  // put your main code here, to run repeatedly:

  fireSta = digitalRead(8); //将8号管脚的状态读入

  if(fireSta == false) {  //有烟雾,2秒声音告警

      digitalWrite(7, HIGH); //蜂鸣器发声

      delay(2000);

  }

  else{

    digitalWrite(7, LOW);

  }

}

[/code]

=======================================================================

代码编号:smokeAlert_2

bool fireSta;  //火情状态:false=有火情;true=无火情

void setup() {

  // put your setup code here, to run once:

  Serial.begin(9600);                  //设置串口波特率

  pinMode(7, OUTPUT);                  //设置7号管脚为输出模式

  pinMode(8, INPUT);                   //设置8号管脚为输入模式

  for (int cnt = 0; cnt < 15; cnt++) {  //重复15次,每次2秒钟

    digitalWrite(7, HIGH);

    delay(1000);

    digitalWrite(7, LOW);

    delay(1000);

  }  //预热时间结束

}

void loop() {

  // put your main code here, to run repeatedly:

  fireSta = digitalRead(8);  //将8号管脚的状态读入

  if (fireSta == false) {    //有烟雾,2秒声音告警

    digitalWrite(7, HIGH);//蜂鸣器发声

    delay(2000);

  } else {

    digitalWrite(7, LOW);

  }

  //输出实时烟雾传感器值

  int vlt;  //原始输入电压值

  vlt = analogRead(A0);

  //计算烟雾浓度值

  int dnsty;

  dnsty = vlt  * (10000 - 300)/1023;  //根据线性函数计算

  Serial.print("当前烟雾浓度:");

  Serial.print(dnsty);

  Serial.println("ppm");

  delay(1000);

}

=======================================================================

代码编号:smokAlert_GYR

 
bool fireSta; //火情状态:false=有火情;true=无火情
//传感器AO端口与UNO的A0端口相连

void setup() {
  // put your setup code here, to run once:
  pinMode(7, OUTPUT);  //设置7号管脚为输出模式,连接蜂鸣器
  pinMode(6, OUTPUT);  //设置6号管脚为输出模式,连接绿灯
  pinMode(5, OUTPUT);  //设置5号管脚为输出模式,连接黄灯
  pinMode(4, OUTPUT);  //设置4号管脚为输出模式,连接红灯
  pinMode(8, INPUT);   //设置8号管脚为输入模式,连接传感器DO端口
  for(int cnt = 0; cnt < 15; cnt++ ){//重复15次,每次2秒钟
      digitalWrite(7, HIGH);
      delay(1000);
      digitalWrite(7, LOW);
      delay(1000);
  }//传感器预热
}

void loop() {
  // put your main code here, to run repeatedly:
  int vlt;//原始输入电压值
  vlt = analogRead(A0);
  //计算烟雾浓度值
  int dnsty;
  dnsty=vlt*(10000-300)/1023;  //根据线性函数计算
  if(dnsty <100) {// 安全状态
      digitalWrite(6, HIGH);  //绿灯亮起
      digitalWrite(5, LOW);  //黄灯灭
      digitalWrite(4, LOW);  //红灯灭
  }
  else if(dnsty < 300){       //提醒状态
      digitalWrite(6, LOW);  //绿灯灭
      digitalWrite(5, HIGH);  //黄灯亮起
      digitalWrite(4, LOW);  //红灯灭
  }
  else {                     //危险状态
      digitalWrite(6, LOW);  //绿灯灭
      digitalWrite(5, LOW);  //黄灯灭
      digitalWrite(4, HIGH);  //红灯亮起
  }

delay(1000);

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值