Robofun 機器人論壇
標題:
解決 arduion 怎麼把感測器的數據讀取成一個獨立的程式碼
[打印本頁]
作者:
tearouii
時間:
2019-1-12 19:48
標題:
解決 arduion 怎麼把感測器的數據讀取成一個獨立的程式碼
本帖最後由 tearouii 於 2019-1-15 18:46 編輯
#include <dht.h>
#define dht_dpin 2 溫溼度腳位定義
dht DHT;
int in1 = 5; //馬達腳位
int in2 = 6;
int in3 = 7;
int in4 = 8;
void setup(){
Serial.begin(9600);
delay(300);//Let system settle
Serial.println("Humidity and temperature\n\n");
delay(700);
pinMode(3, OUTPUT);//繼電器
pinMode(5, OUTPUT);//5~8馬達腳位輸出
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void motor(){
if(DHT.temperature>24)//馬達
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(260);
digitalWrite(in1,LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(100);
digitalWrite(in1,LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(250);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(1000);
}
else
{
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(300);
digitalWrite(in1,LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(300);
digitalWrite(in1,LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(250);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(1000);
}
}
void loop(){
DHT.read11(dht_dpin); //溫溼度
Serial.print("temperature = ");
Serial.print(DHT.temperature);
Serial.println("C ");
delay(1000); //每1000ms 更新一次
if(DHT.temperature>24)
{
digitalWrite(3, LOW); //繼電器
motor();
}
else
{
digitalWrite(3, HIGH);
motor();
}
}
想把DHT.temperature的數據再引導新的出來運用到上面的馬達 void motor 那個
目前他會跑完一次 連同馬達完 再更新程式
我想要做到馬達感應到溫溼度感測器的數據後 跑一次
而不是一直 更新 然後 跑 更新 跑 無限輪迴
請求論壇大大協助
感謝
作者:
超新手
時間:
2019-1-13 05:46
宣告一個變數去記錄是不是曾經做過,
如果做過,就不要做即可
unsigned char flag=2;
void motor(){
if(DHT.temperature>24)//馬達
{
if(flag !=1){
flag =1;
..........
}
} else {
if(flag !=0){
flag =0;
..........
}
}
作者:
tearouii
時間:
2019-1-13 21:43
本帖最後由 tearouii 於 2019-1-13 22:02 編輯
超新手 發表於 2019-1-13 05:46
宣告一個變數去記錄是不是曾經做過,
如果做過,就不要做即可
不是很了解unsigned char flag=2; 這串指令的使用
是這樣使用嗎?
void loop(){
//This is the "heart" of the program.
DHT.read11(dht_dpin);
Serial.print("temperature = ");
Serial.print(DHT.temperature);
Serial.println("C ");
delay(1000); //每1000ms 更新一次
if(DHT.temperature>24)
{
digitalWrite(3, LOW);
digitalWrite(flag,1);
}
else
{
digitalWrite(3, HIGH);
digitalWrite(flag,0);
}
}
當flag,1 觸發void motor?
作者:
超新手
時間:
2019-1-14 05:58
上面完全沒寫說要改 loop(),
為什麼你會去改 loop()?
只需要改 motor()
把 motor()改成上面的架構
其中.........的部份,換成你的馬達程式就可以了
第一個.......,就是temperature > 24 的馬達程式,
原封不動的把你的程式貼過去即可
第二個.......,就是 else (<=24)的馬達程式,
原封不動的貼過去即可
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2