ช่วยดูโปรแกรมที่ผมเขียนทีครับ วัดอุณหภูมิ

คือ ผมต้องการเขียนโปรแกรมให้อ่านอุณภูมิจาก จาก 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);
}
}









ขอบคุงครับ.......^^
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่