|
我用arduino控制烟雾传感器、火焰传感器、温度传感器收集周围环境的数据,如果传感器返回的模拟电压值超出预先设定的阈值,就触发蜂鸣器报警,GSM也自动发短信通知用户。但程序好像运行不了。
- #include <U8g2lib.h>
- #include <DallasTemperature.h>
- #include <OneWire.h>
- #define ONE_WIRE_BUS A1//定义温度引脚
- #include <SoftwareSerial.h> // 采用软件的串口
- SoftwareSerial A9G(0,1); // Serial RX, TX
- U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);
- /*这是定义oled屏幕的信息*/
- OneWire onewire(ONE_WIRE_BUS);
- DallasTemperature sensors(&onewire);
- //定义温度串口
- float Gas = 0;
- float Fire = 0;
- float T = 0;
- float val=0;//定义浮点 二氧化碳;空气质量;温度
- int buzzer = 8; //设置蜂鸣器的数字引脚为8
- int LED = 13; //设置LED灯的数字引脚为13
- void setup()
- {
- u8g2.begin();
- sensors.begin();
- Serial.begin(9600);
- A9G.begin(9600);
- A9G.listen();
- }
- void loop()
- {
- Gas = analogRead(A3);
- Fire = analogRead(A2); //这两个数据直接读取数值就好
- val=analogRead(A1);
- sensors.requestTemperatures();
- T = (val*0.0048828125*100-6); //获取温度
- u8g2.clearBuffer();//清除缓存
- u8g2.firstPage();
- u8g2.setFont(u8g2_font_ncenB14_tr);//字体
- //火焰
- u8g2.drawStr(0, 15, "Fire:");
- u8g2.setCursor(55, 15); //位置
- u8g2.print(Fire);
- //空气中有害气体
- u8g2.drawStr(0, 35, "Gas:");
- u8g2.setCursor(50, 35);
- u8g2.print(Gas);
- //温度
- u8g2.drawStr(0, 55, "T:");
- u8g2.setCursor(20, 55);
- u8g2.print(T);
- u8g2.drawCircle(75, 45, 2, U8G2_DRAW_ALL);
- u8g2.setCursor(80, 55);
- u8g2.print("C");
- u8g2.sendBuffer();//显示
- if(Fire>200||T>30||Gas>70){
- digitalWrite(buzzer, HIGH);
- tone(8,1000);//将8号数字引脚的输出设置为1000Hz频率,蜂鸣器触发
- digitalWrite(LED, HIGH);
- A9G.println("AT");
- delay(2000);
- A9G.println("AT+CMGF=1");
- delay(2000);
- A9G.println("AT+CMGS="19120714409"");//这里改成你的号码
- delay(2000);
- A9G.print("Danger!your house is on fire!");//这里写内容
- delay(2000);
- A9G.write(0x1A);
- }
- else
- {
- digitalWrite(buzzer, LOW);
- noTone(8);
- digitalWrite(LED, LOW);
- }
- delay(1000);
- }
复制代码
|
|