์ค๋์ ์๊ฐ ๋ณํ์ ์คํ์ ํ๊ฒ ์ต๋๋ค. ์ด๋ฅผ ์ ๋ ฅํ์ฌ ์/๋ถ/์ด๋ก ๋ณํํ๋ ์คํ๊ณผ ๋ฌธ์์ด ์/๋ถ/์ด๋ฅผ ์ ๋ ฅํ์ฌ ์๊ฐ, ๋ถ, ์ด๋ก ๋ถ๋ฆฌํด๋ด๋ ์คํ์ ํ๊ฒ์ต๋๋ค ์ด ์๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์/๋ถ/์ด๋ฅผ ์ด๋ก ๋ณํ์ํค ํ ๋ณํ ์ํจ ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์/๋ถ/์ด๋ก ๋ค์ ์์ ๋ณต๊ตฌํ์ฌ ์๊ฐ ๋ณํ ์ฝ๋ฉ์ด ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋์ง ์คํ ํ๊ฒ ์ต๋๋ค.
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์คํ์ ํด๋ณผ๊น์.
์ด๋ฅผ ์/๋ถ/์ด๋ก ๋ณํ์ :
readTime = ์ ๋ ฅSec;
sec = ์ ์ฒด์ % 60;
min = (์ ์ฒด์/60)%60;
hour = (์ ์ฒด์/(60x60)%24;
day = (์ ์ฒด์/(60x60x24)%365;
...
1๋ถ = 60์ด
1์๊ฐ = 60x60์ด
1day = 60x60x24์ด
์๋ฆฌ์ผ๋ชจ๋ํฐ์์ ์ด๋ฅผ ์ ๋ ฅํ๋ฉด,
if(Serial.available()){
unsigned long readTime = Serial.parseInt();
}
์๋์ด๋ ธ์์ parseInt()๋ก ๊ฐ๋จํ ์ฝ๋๋ค. ์ด 15์๋ฆฌ ์๊น์ง ์ ๋ ฅ๋ฐ์ ์ ์๋ค.
๊ณ์ฐ์,
sec = readTime%60;
min = (readTime/60)%60;
hour = (readTime/(60*60))%24;
์/๋ถ/์ด๋ง ์ถ๋ ฅํ๊ฒ ํ๊ธฐ ์ํด์๋ ์ ์ฝ๋ฉ๊ณผ ๊ฐ์ด ํํํ์๋ฉด ๋ฉ๋๋ค. ์ฐธ๊ณ ๋ก, 24์๊ฐ ์ด์์ด๋ฉด day๊น์ง ๊ตฌํ๋ฉด ์ข์ง๋ง ๊ทธ๋ฅ day์ ๋ฌด์ํ๊ณ ์๊ณ์ฒ๋ผ ์/๋ถ/์ด๋ง ์ถ๋ ฅํฉ๋๋ค.
[์์ค]
int hour, min, sec;
void setup()
{
Serial.begin(9600);
}
void loop()
{
//์ด ์
๋ ฅ
if(Serial.available()){
unsigned long readTime = Serial.parseInt();
sec = readTime%60;
min = (readTime/60)%60;
hour = (readTime/(60*60))%24;
Serial.print(hour);
Serial.print(" : ");
Serial.print(min);
Serial.print(" : ");
Serial.println(sec);
}
}
[๊ฒฐ๊ณผ]
์ ๋ ฅ => "์:๋ถ:์ด"
์์๊ฐ์ด ์/๋ถ/์ด๋ก ์ ๋ ฅ ๋ฐ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ํํ ํ ๊น์. ์์ ์ฌ์ ํ์ต์์ String์ ๋ํด ์ฌ์ ํ์ต์ ๋ฏธ๋ฆฌ ํด ์ฃผ์ธ์.
์๊ฐ ๋ฌธ์์ด์ ๋ถ๋ฆฌํด ๋ด๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ๋ณต์ตํด ๋ด ์๋ค.
String inString = "10:11:22"
์ ๋ฌธ์์ด์ "์:๋ถ:์ด"๋ฅผ ์ด๋ป๊ฒ ๋ถ๋ฆฌํด ๋ผ๊น์. ์/๋ถ/์ด์ ๋ฌธ์์ด์ ๋๋๋ ๊ธฐํธ๊ฐ ':'์ ๋๋ค. ์ฆ, ':'์ ์์น๋ฅผ ์๊ณ ์์ผ๋ฉด ์ด ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์/๋ถ/์ด๋ฅผ ์ฝ์ผ๋ฉด ๋ฉ๋๋ค.
int index1 = inString.indexOf(':');
int index2 = inString.indexOf(':',index1+1);
int index3 = inString.length();
์ด๋ ๊ฒ index๋ค์ ๊ตฌํ๋ฉด ์ฆ, ๋ฌธ์์ด์์ ์์๋ฅผ ์ฝ์ ๋ง์ง๋ง ์์น๊ฐ์ ์ง์ ํ ์ ์์ต๋๋ค.
"10:11:22"
index1 = 2
index2 = 5
index3 = 8
index3์ด 7์ด ์๋๊ณ 8์ธ ์ด์ ๋ ๋ฌธ์์ด์ ๋ง์ง๋ง ๋์ ๋ํ๋ด๋ ๋ฌธ์๊ธฐํธ๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ index๊ฐ 8์ ๋๋ค.
์ด์ ์์น๊ฐ์ ์์์ผ๋๊น ์/๋ถ/์ด๋ฅผ ๊ตฌํด ๋ณผ๊น์.
hour = inString.substring(0, index1).toInt();
min = inString.substring(index1+1,index2).toInt();
sec = inString.substring(index2+1,index3).toInt();
inString.substring(0, index1).toInt();
์ ๋ช ๋ น์ ์ ์ฒด๋ฌธ์์ด์์ ํน์ ๋ถ๋ถ๋ฌธ์์ด์ ์ถ์ถํ๊ณ ๊ทธ ์ถ์ถ๋ ๋ฌธ์์ด์ ์ ์ํ์ผ๋ก ๋ณํ์ํจ๋ค๋ ๋ช ๋ น์ ๋๋ค. hour, min, sec๋ฅผ ์ด ๋ช ๋ น์ผ๋ก ์/๋ถ/์ด๋ฅผ ๊ตฌํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ ํํ ์/๋ถ/์ด๊ฐ ๋ถ๋ฆฌ๋์๋์ง ์ดํด ๋ณผ๊น์.
void setup()
{
Serial.begin(9600);
}
void loop()
{
// ์:๋ถ:์ด ์
๋ ฅ
if(Serial.available()){
String inString = Serial.readStringUntil('\n');
int index1 = inString.indexOf(':');
int index2 = inString.indexOf(':',index1+1);
int index3 = inString.length();
int hour = inString.substring(0, index1).toInt();
int min = inString.substring(index1+1,index2).toInt();
int sec = inString.substring(index2+1,index3).toInt();
Serial.print(hour);
Serial.print(" : ");
Serial.print(min);
Serial.print(" : ");
Serial.println(sec);
}
}
[๊ฒฐ๊ณผ]
์ ๊ทธ๋ฆผ์ฒ๋ผ ์/๋ถ/์ด๋ฅผ ์ ๋ ฅํ ๋ฌธ์์ด์ด ์ ๋๋ก ๋ถ๋ฆฌ๋์ด ์ ํํ ์/๋ถ/์ด๊ฐ ์ถ๋ ฅ ๋ฉ๋๋ค.
์ด๋ฒ์๋ ์/๋ถ/์ด๋ฅผ ์ ๋ ฅ ๋ฐ์ ํ์ ๊ทธ ๊ฐ์ ์ด๋ก ๋ณํ ์ํต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ด ๊ฐ์ ๋ค์ ์/๋ถ/์ด๋ก ๋ณํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๊ฐ ๋ณํ์ ์ ์ด๋ฃจ์ด์ง๋ ์ดํด๋ณด๊ธฐ ์ํ ์คํ์ ๋๋ค.
์/๋ถ/์ด๋ฅผ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ์ด๋ก ๋ณํํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
totalSec = ์*3600 + ๋ถ*60 + ์ด;
์๊ฐ ๋ฌธ์์ด์ ์ฝ์ด์ hour, min, sec ๊ฐ์ ๋ถ๋ฆฌ ํด๋ด๊ณ ์ด๋ก ๋ณํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋ฉ์ ํ๋ฉด ๋๊ฒ ์ฃ .
if(Serial.available()){
String inString = Serial.readStringUntil('\n');
int index1 = inString.indexOf(':');
int index2 = inString.indexOf(':',index1+1);
int index3 = inString.length();
hour = inString.substring(0, index1).toInt();
min = inString.substring(index1+1,index2).toInt();
sec = inString.substring(index2+1,index3).toInt();
readTime = (long)hour*3600+min*60+sec;
}
์ ์ฝ๋ฉ ์์ ์ํด์ readTime ์ด sec ๊ฐ์ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค.
๋ค์, readTime ์/๋ถ/์ด ๋ณํ์ ์์ผ์ ๊ณ์ฐ ์ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํด ๋ด ์๋ค.
readTime = (long)hour*3600+min*60+sec;
sec = readTime%60;
min = (readTime/60)%60;
hour = (readTime/(60*60))%24;
์ด๋ ๊ฒ ๋ค์ hour, min, sec ๊ตฌํ์ฌ ์ด ๊ฐ์ด ์๋ฆฌ์ผ๋ชจ๋ํฐ๋ก ์ถ๋ ฅ์ํค๋ฉด ํ์ธ์ด ๊ฐ๋ฅํด ์ง๋๋ค.
[์์ค]
unsigned long readTime;
int hour, min, sec;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if(Serial.available()){
String inString = Serial.readStringUntil('\n');
int index1 = inString.indexOf(':');
int index2 = inString.indexOf(':',index1+1);
int index3 = inString.length();
hour = inString.substring(0, index1).toInt();
min = inString.substring(index1+1,index2).toInt();
sec = inString.substring(index2+1,index3).toInt();
readTime = (long)hour*3600+min*60+sec;
Serial.print("Total Sec : ");
Serial.println(readTime);
sec = readTime%60;
min = (readTime/60)%60;
hour = (readTime/(60*60))%24;
Serial.print(hour);
Serial.print(" : ");
Serial.print(min);
Serial.print(" : ");
Serial.println(sec);
}
}
[๊ฒฐ๊ณผ]
์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด "11:22:33" ์๊ฐ์ด ์ ๋ ฅ๋๋ฉด ์๊ฐ์ ๋ํ ์ด ๋ณํ ๊ฐ '40953'๊ฐ์ด ๋์๊ณ ์ด ๊ฐ์ ๋ค์ ์/๋ถ/์ด๋ก ๋ณํํ๋ฉด "11:22:33" ์๊ฐ์ด ๋์ต๋๋ค. ์๊ฐ ๋ณํ์ด ๊น๋ํ๊ฒ ๋์๋ค์.
์ค๋์ ์๊ฐ์ ๋ํ ์ฝ๋ฉ ํธ๋ ์ด๋์ ํ์์ต๋๋ค. ์๋์ด๋ ธ์์ ์๊ฐ๋ฅผ ๋ค๋ฃฐ ์ค ์๋ฉด ์๊ฐ์ ๊ดํ ๋ค์ํ ํํ์ ํ ์ ์์ต๋๋ค. ์ค๋ ๋ฐฐ์ด ์๋ฆฌ๋ฅผ ์ดํดํ์๋ฉด ์๋์ด๋ ธ ์๊ณ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์๋์ด๋ ธ์ ์ ์์ ๊ณต๊ธํ๊ณ ํ์ฌ ์๊ฐ๊ฐ์ ์ ๋ ฅํ์ฌ millis()ํจ์๋ฅผ ์ด์ฉํ๋ฉด ์๋์ด๋ ธ ์๊ณ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ง๋ ์๊ฐ์๋ millis()ํจ์๋ก ์๊ฐ๊ฐ์ ๋ถ๋ฆฌํ๊ณ ์นด์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์์ผ๋ฉฐ ์ค๋์ ์๊ฐ ๋ณํ์ ์ดํด๋ณด์์ต๋๋ค. ํ๋ฒ ์ง๋๊น์ง ๋ฐฐ์ด ์๋ฆฌ๋ฅผ ์ข ํฉํ์ฌ ์๋์ด๋ ธ ์๊ณ๋ฅผ ๋ง๋ค์ด ๋ณด์ธ์.