實驗七
溫度警報器


溫度警報器

//项目七 – 温度报警器
float sinVal;            
int toneVal;
unsigned long tepTimer ;    

void setup(){ 
    pinMode(8, OUTPUT);        // 蜂鸣器引脚设置 
    pinMode(9, OUTPUT);
    pinMode(10, OUTPUT);
    pinMode(11, OUTPUT);
    Serial.begin(9600);        //设置波特率为9600 bps
}

void loop(){ 
    int val;               // 用于存储LM35读到的值
    double data;          //用于存储已转换的温度值
    val= analogRead(0) ;   //LM35连到模拟口,并从模拟口读值
    data = (double) val * (5/10.24);  // 得到电压值,通过公式换成温度

    if( 35<data ){             
          for(int x=0; x<180; x++){
            //将sin函数角度转化为弧度
            sinVal = (sin(x*(3.1412/180)));
            //用sin函数值产生声音的频率
            toneVal = 2000+(int(sinVal*1000));
            //给引脚8一个
            tone(8, toneVal);
            delay(2); 
            digitalWrite(11,HIGH);
             digitalWrite(10,LOW);
              digitalWrite(9,LOW);

     }   
    }
   else  if(35>data>25){             
          for(int x=0; x<180; x++){
            //将sin函数角度转化为弧度
            sinVal = (sin(x*(3.1412/180)));
            //用sin函数值产生声音的频率
            toneVal = 1000+(int(sinVal*1000));
            //给引脚8一个
            tone(8, toneVal);
            delay(2); 
            digitalWrite(10,HIGH);
             digitalWrite(11,LOW);
              digitalWrite(9,LOW);
          }
   }
  else if( 10>data ){             
          for(int x=0; x<180; x++){
            //将sin函数角度转化为弧度
            sinVal = (sin(x*(3.1412/180)));
            //用sin函数值产生声音的频率
            toneVal = 2000+(int(sinVal*1000));
            //给引脚8一个
            tone(8, toneVal);
            delay(2); 
            digitalWrite(11,HIGH);
             digitalWrite(10,LOW);
              digitalWrite(9,LOW);

     }   
    }
    else{             
               noTone(8);          //关闭蜂鸣器 
           digitalWrite(9,HIGH);
           digitalWrite(11,LOW);
            digitalWrite(10,LOW);

     }   


    if(millis() - tepTimer > 500){     // 每500ms,串口输出一次温度值
             tepTimer = millis();
             Serial.print("temperature: ");     // 串口输出“温度”
             Serial.print(data);               // 串口输出温度值
             Serial.println("C");              // 串口输出温度单位
       } 
}

results matching ""

    No results matching ""