ขอถามเกี่ยวกับการใช้งานคำสั่งฟังก์ชั่นครับ จากตัวอย่างด้านล่างซึ่งเป็น Code ของ Real time clock
(ผมขอไม่กล่าวถึงรายละเอียดการประกาศ include หรือส่วนที่ไม่เกี่ยวข้องนะครับ ขอยกประเด็นมาเลย)
ถ้าผมต้องการค่าจากตัวแปร monthDay ที่อยู่ใน void setDateTime() มาเขียนเงื่อนไขใน void loop() ผมจะต้องโยนค่ามายังไงหรอครับ?
void setDateTime(){
byte second = 00; //0-59
byte minute = 00; //0-59
byte hour = 00; //0-23
byte weekDay = 0; //1-7
byte monthDay = 0; //1-31
byte month = 0; //1-12
byte year = 0; //0-99
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); //stop Oscillator
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(weekDay));
Wire.write(decToBcd(monthDay));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.write(zero); //start
Wire.endTransmission();
}
byte decToBcd(byte val){
// Convert normal decimal numbers to binary coded decimal
return ( (val/10*16) + (val) );
}
byte bcdToDec(byte val) {
// Convert binary coded decimal to normal decimal numbers
return ( (val/16*10) + (val) );
}
void printDate(){
// Res
gister pointer
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
int second = bcdToDec(Wire.read());
int minute = bcdToDec(Wire.read());
int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
int monthDay = bcdToDec(Wire.read());
int month = bcdToDec(Wire.read());
int year = bcdToDec(Wire.read());
//print the date EG 3/1/11 23:59:59
Serial.print("Day: ");
Serial.print(monthDay);
Serial.print(" ");
Serial.print("Time: ");
Serial.print(hour);
Serial.print(":");
Serial.print(minute);
Serial.print(":");
Serial.println(second);
}
void loop()
{
if(monthDay<3)
{
print("OK");
}
}
ขอถามเกี่ยวกับการเขียนโปรแกรมArduino
(ผมขอไม่กล่าวถึงรายละเอียดการประกาศ include หรือส่วนที่ไม่เกี่ยวข้องนะครับ ขอยกประเด็นมาเลย)
ถ้าผมต้องการค่าจากตัวแปร monthDay ที่อยู่ใน void setDateTime() มาเขียนเงื่อนไขใน void loop() ผมจะต้องโยนค่ามายังไงหรอครับ?
void setDateTime(){
byte second = 00; //0-59
byte minute = 00; //0-59
byte hour = 00; //0-23
byte weekDay = 0; //1-7
byte monthDay = 0; //1-31
byte month = 0; //1-12
byte year = 0; //0-99
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); //stop Oscillator
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(weekDay));
Wire.write(decToBcd(monthDay));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.write(zero); //start
Wire.endTransmission();
}
byte decToBcd(byte val){
// Convert normal decimal numbers to binary coded decimal
return ( (val/10*16) + (val) );
}
byte bcdToDec(byte val) {
// Convert binary coded decimal to normal decimal numbers
return ( (val/16*10) + (val) );
}
void printDate(){
// Resgister pointer
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
int second = bcdToDec(Wire.read());
int minute = bcdToDec(Wire.read());
int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
int monthDay = bcdToDec(Wire.read());
int month = bcdToDec(Wire.read());
int year = bcdToDec(Wire.read());
//print the date EG 3/1/11 23:59:59
Serial.print("Day: ");
Serial.print(monthDay);
Serial.print(" ");
Serial.print("Time: ");
Serial.print(hour);
Serial.print(":");
Serial.print(minute);
Serial.print(":");
Serial.println(second);
}
void loop()
{
if(monthDay<3)
{
print("OK");
}
}