調度器用毫秒,計時超過60000毫秒就不正常,怎么改成秒!
- #include <Wire.h>
- #include <DS1302.h>
- #include "TaskScheduler.h" //包含此頭文件,才能使用調度器
- #include <SoftwareSerial.h>
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #define ONE_WIRE_BUS A0 //數據總線
- OneWire oneWire(ONE_WIRE_BUS); //聲明
- DallasTemperature sensors(&oneWire); //聲明溫度變量
- SoftwareSerial esp8266(5, 6); //rx,tx
- DS1302 rtc(9, 8, 7); // RST, DAT, CLK
- #include <Wire.h>
- #include <SPI.h>
- #include <Adafruit_Sensor.h>
- #include <Adafruit_BMP280.h>
- #define BMP_SCK 13
- #define BMP_MISO 12
- #define BMP_MOSI 11
- #define BMP_CS 10
- Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);
- int x5 = A5;
- boolean g_led1State=0; //多少任務變量(水泵)
- //boolean g_led2State=0; //多少任務變量
- String outa=""; //讀取溫度值存入變量
- String outb=""; //讀取日期值存入變量
- String outc=""; //讀取時間值存入變量
- String outd=""; //讀取氣壓值存入變量
- String oute=""; //讀取海拔值存入變量
- //String outf=""; //讀取溫度值存入變量
- String AP = "padavan-2x";
- String PASS = "12345678";
- String Data;
- int countTrueCommand;
- int countTimeCommand;
- boolean found = false;
- //*******************************
- void setup() {
- pinMode(x5, OUTPUT);
- sensors.begin(); //初始化總線
- sensors.setWaitForConversion(false); //設置為非阻塞模式
- Sch.init(); //初始化調度器
- Sch.addTask(led1Update,0, 20000,1); //從第 0 毫秒開始閃爍 LED,每隔 1s, 狀態改變一次,溫度
- Sch.addTask(led2Update,20,3600000,1); //從第 20 毫秒開始閃爍 LED,每隔 1s,狀態改變一次,水泵
- Sch.addTask(led3Update,30,20000,1); //從第 20 毫秒開始閃爍 LED,每隔 1s,狀態改變一次,時間
- Sch.addTask(led4Update,40,20000,1); //從第 20 毫秒開始閃爍 LED,每隔 1s,狀態改變一次,氣壓
- Sch.addTask(led100Update,100,60000,1); //從第 20 毫秒開始閃爍 LED,每隔 1s,狀態改變一次,上傳
- Sch.start();//啟動調度器
- }
- void loop() {
- Sch.dispatchTasks(); // 執行被調度的任務.
- }
- //溫度代碼
- void led1Update()
- {
- float tempC = sensors.getTempCByIndex(0); //獲取索引號0的傳感器攝氏溫度數據
- if (tempC != DEVICE_DISCONNECTED_C) //如果獲取到的溫度正常
- {
- Serial.print("\n當前溫度是: ");
- Serial.print(tempC);
- Serial.println(" ℃");
- }
- //Serial.println("發起溫度轉換");
- sensors.requestTemperatures(); //發起新的溫度轉換
- //Serial.print(tempC); //打印當前溫度值
- outa=String(tempC)+"℃";
- //delay(1000);
- //溫度代碼結束
- }
- void led2Update()
- {
- if(g_led1State==0)
- {
- g_led1State=1;
- digitalWrite(x5, HIGH); // 打開水泵
- //delay(1000); // 等待1秒鐘
- }
- else
- {
- g_led1State=0;
- digitalWrite(x5, LOW); // 關閉水泵
- //delay(1000); // 等待1秒鐘
- }
- }
- void led100Update()
- {
- Serial.begin(9600);
- esp8266.begin(115200);
- sendCommand("AT", 5, "OK");
- sendCommand("AT+CWMODE=1", 5, "OK");
- sendCommand("AT+CWJAP=\"" + AP + "\",\"" + PASS + "\"", 20, "OK");
- Data = "GET /crzz.php?aa=1&ab="+outd+"&ac="+outc+"&ad="+outb+"&ae="+outa;
- sendCommand("AT+CIPMUX=1",5,"OK");
- sendCommand("AT+CIPSTART=0,\"TCP\",\"192.168.10.204\",80",4,"OK");
- sendCommand("AT+CIPSEND=0," +String(Data.length()+4),2,">");
- esp8266.println(Data);delay(100);countTrueCommand++;
- sendCommand("AT+CIPCLOSE=0",2,"OK");
- }
- //時間函數
- void led3Update()
- {
- Serial.begin(9600);
- //Serial.println(rtc.getDateStr(FORMAT_LONG, FORMAT_LITTLEENDIAN, '-'));
- //Serial.print(rtc.getDOWStr());
- //Serial.print(" ");
- //Serial.println(rtc.getTimeStr());
- outb=String(rtc.getDateStr(FORMAT_LONG, FORMAT_LITTLEENDIAN, '-'))+"-"+String(rtc.getTimeStr());
- }
- void led4Update()
- {
- Serial.begin(9600);
- //Serial.println(F("BMP280 測試"));
- if (!bmp.begin()) {
- // Serial.println(F("找不到對應的傳感器"));
- while (1);
- }
- //Serial.print(F("溫度 = "));
- //Serial.print(bmp.readTemperature());
- //Serial.println(" *C");
- //Serial.print(F("氣壓 = "));
- //Serial.print(bmp.readPressure());
- //Serial.println(" Pa");
- //Serial.print(F("海拔 = "));
- //Serial.print(bmp.readAltitude(1013.25));
- //Serial.println(" m");
- outc=String(Serial.print(F("")))+String(bmp.readPressure())+"Pa";
- outd=String(bmp.readAltitude(1013.25))+"m";
- //delay(2000);
- }
- void sendCommand(String command, int maxTime, char readReplay[]) {
- Serial.print(countTrueCommand);
- Serial.print(". at command => ");
- Serial.print(command);
- Serial.print(" ");
- while (countTimeCommand < (maxTime * 1))
- {
- esp8266.println(command);//at+cipsend
- if (esp8266.find(readReplay)) //ok
- {
- found = true;
- break;
- }
- countTimeCommand++;
- }
- if (found == true)
- {
- Serial.println("Yes");
- countTrueCommand++;
- countTimeCommand = 0;
- }
- if (found == false)
- {
- Serial.println("Fail");
- countTrueCommand = 0;
- countTimeCommand = 0;
- }
- found = false;
- }
復制代碼
|