欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
Arduino調(diào)度器計(jì)時(shí),怎么改成秒?
[打印本頁]
作者:
rh902999
時(shí)間:
2021-5-26 14:35
標(biāo)題:
Arduino調(diào)度器計(jì)時(shí),怎么改成秒?
調(diào)度器用毫秒,計(jì)時(shí)超過60000毫秒就不正常,怎么改成秒!
#include <Wire.h>
#include <DS1302.h>
#include "TaskScheduler.h" //包含此頭文件,才能使用調(diào)度器
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS A0 //數(shù)據(jù)總線
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; //多少任務(wù)變量(水泵)
//boolean g_led2State=0; //多少任務(wù)變量
String outa=""; //讀取溫度值存入變量
String outb=""; //讀取日期值存入變量
String outc=""; //讀取時(shí)間值存入變量
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); //設(shè)置為非阻塞模式
Sch.init(); //初始化調(diào)度器
Sch.addTask(led1Update,0, 20000,1); //從第 0 毫秒開始閃爍 LED,每隔 1s, 狀態(tài)改變一次,溫度
Sch.addTask(led2Update,20,3600000,1); //從第 20 毫秒開始閃爍 LED,每隔 1s,狀態(tài)改變一次,水泵
Sch.addTask(led3Update,30,20000,1); //從第 20 毫秒開始閃爍 LED,每隔 1s,狀態(tài)改變一次,時(shí)間
Sch.addTask(led4Update,40,20000,1); //從第 20 毫秒開始閃爍 LED,每隔 1s,狀態(tài)改變一次,氣壓
Sch.addTask(led100Update,100,60000,1); //從第 20 毫秒開始閃爍 LED,每隔 1s,狀態(tài)改變一次,上傳
Sch.start();//啟動(dòng)調(diào)度器
}
void loop() {
Sch.dispatchTasks(); // 執(zhí)行被調(diào)度的任務(wù).
}
//溫度代碼
void led1Update()
{
float tempC = sensors.getTempCByIndex(0); //獲取索引號(hào)0的傳感器攝氏溫度數(shù)據(jù)
if (tempC != DEVICE_DISCONNECTED_C) //如果獲取到的溫度正常
{
Serial.print("\n當(dāng)前溫度是: ");
Serial.print(tempC);
Serial.println(" ℃");
}
//Serial.println("發(fā)起溫度轉(zhuǎn)換");
sensors.requestTemperatures(); //發(fā)起新的溫度轉(zhuǎn)換
//Serial.print(tempC); //打印當(dāng)前溫度值
outa=String(tempC)+"℃";
//delay(1000);
//溫度代碼結(jié)束
}
void led2Update()
{
if(g_led1State==0)
{
g_led1State=1;
digitalWrite(x5, HIGH); // 打開水泵
//delay(1000); // 等待1秒鐘
}
else
{
g_led1State=0;
digitalWrite(x5, LOW); // 關(guān)閉水泵
//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");
}
//時(shí)間函數(shù)
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 測(cè)試"));
if (!bmp.begin()) {
// Serial.println(F("找不到對(duì)應(yīng)的傳感器"));
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;
}
復(fù)制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1