คือ ผมต้องการเขียนโปรแกรมให้อ่านอุณภูมิจาก จาก temperature อ่ะครับ โดยเง่อนใขคือ ถ้าอุณหภูมิไม่ถึง20 ให้ คอล์ยความร้อนทำงาน(5)+เครื่องปั่นทำงาน(6) แต่ถ้าหากถึง 20 ให้ทำงานต่ออีก 15 นาที จากนั้นให้หยุดรอการกดปุ่มเพื่อเริ่มทำงานใหม่อีกครั้ง โดยกระบวนการทั้งหมด จะโชว์อุณหภูมิไปด้วยทุกขั้นตอน
ตอนนี้ปัญหาของผมคือ void loop ด้วยที่ผมมีdelayเยอะ ทำให้มันอ่านค่าอุณหภูมิช้าไปด้วยครับ แล้วโปรแกรมก็จะวนไม่จบสักที คือควรแก้ตรงไหนบ้างครับ
(ยังไม่ได้เขียนโปรแกรมสวิตน่ะครับ^^)
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2//ใช้Pin2
OneWire oneWire(ONE_WIRE_BUS);
float temp;
DallasTemperature sensors(&oneWire);
void setup(void)
{
// กำหนดพอตที่ใช้
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
// เริ่มทำงาน
sensors.begin();
digitalWrite(3,HIGH); //เริ่มปั่น1 15นาที
delay(900000);
digitalWrite(3,LOW); //หยุดปั่น1
delay(1000);
digitalWrite(4,HIGH); //โซรีนอยวาวเปิด20วิ
delay(20000);
digitalWrite(4,LOW); //โซรีนอยวาวปิด
delay(1000);
}
void loop(void)
{
sensors.requestTemperatures();
Serial.println("");
Serial.print("Temperature for Device 1 is: ");//ส่งอุณหภูมิที่รับค่ามาจากtermomiterเข้าสู้โปรแกรม
Serial.print(sensors.getTempCByIndex(0));
temp = sensors.getTempCByIndex(0);
HG();
}
void HG() //อุณหภูมิที่กำหนด55
{
if(temp<=65)
{
digitalWrite(5,HIGH); //คอยทำความร้อนทำงาน
digitalWrite(6,HIGH); //ปั่น
}
else
{
digitalWrite(5,HIGH);//คอยทำความร้อนทำงาน
delay(1000);
// digitalWrite(6,HIGH); //เครื่องปั่นทำงาน
// delay(5000);
digitalWrite(6,LOW);
delay(900000);
}
}
ขอบคุงครับ.......^^
ช่วยดูโปรแกรมที่ผมเขียนทีครับ วัดอุณหภูมิ
ตอนนี้ปัญหาของผมคือ void loop ด้วยที่ผมมีdelayเยอะ ทำให้มันอ่านค่าอุณหภูมิช้าไปด้วยครับ แล้วโปรแกรมก็จะวนไม่จบสักที คือควรแก้ตรงไหนบ้างครับ
(ยังไม่ได้เขียนโปรแกรมสวิตน่ะครับ^^)
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2//ใช้Pin2
OneWire oneWire(ONE_WIRE_BUS);
float temp;
DallasTemperature sensors(&oneWire);
void setup(void)
{
// กำหนดพอตที่ใช้
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
// เริ่มทำงาน
sensors.begin();
digitalWrite(3,HIGH); //เริ่มปั่น1 15นาที
delay(900000);
digitalWrite(3,LOW); //หยุดปั่น1
delay(1000);
digitalWrite(4,HIGH); //โซรีนอยวาวเปิด20วิ
delay(20000);
digitalWrite(4,LOW); //โซรีนอยวาวปิด
delay(1000);
}
void loop(void)
{
sensors.requestTemperatures();
Serial.println("");
Serial.print("Temperature for Device 1 is: ");//ส่งอุณหภูมิที่รับค่ามาจากtermomiterเข้าสู้โปรแกรม
Serial.print(sensors.getTempCByIndex(0));
temp = sensors.getTempCByIndex(0);
HG();
}
void HG() //อุณหภูมิที่กำหนด55
{
if(temp<=65)
{
digitalWrite(5,HIGH); //คอยทำความร้อนทำงาน
digitalWrite(6,HIGH); //ปั่น
}
else
{
digitalWrite(5,HIGH);//คอยทำความร้อนทำงาน
delay(1000);
// digitalWrite(6,HIGH); //เครื่องปั่นทำงาน
// delay(5000);
digitalWrite(6,LOW);
delay(900000);
}
}
ขอบคุงครับ.......^^