ใครพอรู้วิธีเขียนโปรแกรมตั้งเวลาการทำงานมั่งคับ

พอดีผมได้ทำการซึกษาเขียน code เก็บข้อมูลจาก input(คือจะเอาไปวัดโซล่าเซลล์) เก็บข้อมูลใส่ SDcard แบบ realtime โดยมีโมดุล RTC ที่ใช้กับ Arduino มาช่วยอะคับ
** ปัญหาคือ ผมอยากให้มันเริ่มบันทึกข้อมูลเองเวลาประมาณ ตี 5 ถึง 6 โมงเย็นของทุกๆวันอะคับโดยที่เราจะใส่ไฟเลี้ยงไว้ตลอดเวลา ผมเขียนไม่เป็น ตอนนี้เขียนได้แค่ delay ให้เก็บค่าเป็นวินาทีและทันทำงานไปเรื่อยๆอะคับ ใครพอรู้ช่วยเติมให้หน่อยได้มั่ยคับ ร้องไห้  



#include <DS1307RTC.h>
#include <Time.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>

File myFile;
const int chipSelect = 10;
String time ;
tmElements_t tm;

int volt = A0;
int datavolt = 0;
boolean present =0;
int i=0;

int val11;
float val2;

float amp ;

void setup()
  {
  Serial.begin(9600);
  while(!Serial) {
    ;
   } // wait for serial
  pinMode(SS, OUTPUT);
  
  pinMode(volt,INPUT);
  pinMode(3,OUTPUT);
  pinMode(10,OUTPUT);
  
  checkSD();
  //write label excel = หัวข้อของตารางใน Excel
     myFile = SD.open("arduino.csv", FILE_WRITE);
     if(myFile)
     {
        myFile.print("time:date");
        myFile.print(",");
        myFile.print("   volt");
        myFile.print(",");
        myFile.print("   AMP");
        myFile.print(",");
        myFile.println("   line");
        myFile.close();
     }
}

void loop() {
   time = Now();
  
  //WriteText(time);
  {
      float temp;
      val11=analogRead(A1);
      temp=val11/4.092;
      val11=(int)temp;//
      val2=((val1100)/10);
      
      int sensorValue = analogRead(A2);            
       amp = (( 520-sensorValue ) * 27.03/1023);
      Serial.print(time);
      Serial.print(" : ");    
      Serial.print(val2);
      Serial.print(" volt");
      Serial.print("   ");
      Serial.print(amp);
      Serial.println("A");
  }
   if(present==1)
  
    {
      //ถ้าเท่ากับ 1 เมื่อไหร่ให้มันทำงาน
      i++;
      writeSD();
     }
    delay(3000); //////// เนี่ยคับทำได้แค่ให้มัน delay ร้องไห้
}


void ReadText(){
  // re-open the file for reading:
  myFile = SD.open("arduino.csv");
  if (myFile) {
    Serial.println("arduino.csv:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  }
  else {
    // if the file didn't open, print an error:
    Serial.println("error opening arduino.csv");
  }
}
void checkSD()  
  {
    Serial.println("sheck SD card");
    if (!SD.begin(chipSelect)) {
    Serial.println("Card failed");
    return;
    }
    Serial.println("Card OK");
    present=1;
    delay(2000);  
  }
  
void writeSD()
  {
     myFile = SD.open("arduino.csv", FILE_WRITE);
     if(myFile)
     {
        myFile.print(time);
        myFile.print(",");
        myFile.print(val2);
        myFile.print(",");
        myFile.print(amp);
        myFile.print(",");
        myFile.println(i);
        myFile.close();
     }
  }
String Now(){
  String time = "";
  if (RTC.read(tm)) {
    //    time = String(tm.Hour+":"+tm.Minute+":"+tm.Secnd+" DAY : "+tm.Day+"/"+tm.Month+"/"+tmYearToCalendar(tm.Year));
    time+=tm.Hour;
    time+=":";

    time+=tm.Minute;
    time+=":";

    time+=tm.Second;
    time+=" DAY : ";

    time+=tm.Day;
    time+="/";

    time+=tm.Month;
    time+="/";

    time+=tmYearToCalendar(tm.Year);
  }
  else {
    time = "NO";
    if (RTC.chipPresent()) {
      Serial.println("The DS1307 is stopped.  Please run the SetTime");
      Serial.println("example to initialize the time and begin running.");
      Serial.println();
    }
    else {
      Serial.println("DS1307 read error!  Please check the circuitry.");
      Serial.println();
    }
  }
  return time;
}
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่