「夜明け」「朝」「昼」「夕方」「夜」「夜中」 この時刻帯は
夜明け dawn 4:00~6:00
朝 morning 6:00~9:00
昼 day 9:00~17:00
夕方 evening 17:00~19:00
夜 night 19:00~24:00
真夜中 midnight 24:00~4:00
季節によって感じが変化するかもしれません。
これをプログラムで使う予定で調べました。この時間帯でアラームのモードを変更するためです。プログラムに入れ込みました。下記がその時刻においての応答です。
「夜明け」から「朝」の時刻帯への境界の状況をCopyしました。
プログラムで例えば mornig_flag=1 などとフラグを立てその時刻帯である事を通知します。これによりプログラムが考え易くなります。
現在時刻 05:00
■--------------------↓
05:00
p_alarm
xx:x405:00
p_alarm
xx:x6_was not detected△
05:00
p_alarm
xx:x8_was not detected△
05:00
p_alarm
xx:x0_Detected time●◎xx:x0●
05:00
p_alarm
xx:30_was not detected△
05:00
p_alarm
xx:x2_was not detected△
05
00
△B―実験1 [偽 false] else動作です.
●◎A-dawn_夜明け [真 true] 動作です●
△B―Not morning [偽 false] else動作です.
△B―Not day [偽 false] else動作です.
△B―Not evning [偽 false] else動作です.
△B―Not night [偽 false] else動作です.
△B―Not midnight [偽 false] else動作です.
■■-------------------------↑
■■-------------------------↑
現在時刻 06:19
■--------------------↓
06:19
p_alarm
xx:x406:19
p_alarm
xx:x6_was not detected△
06:19
p_alarm
xx:x8_was not detected△
06:19
p_alarm
xx:x0_was not detected△
06:19
p_alarm
xx:30_was not detected△
06:19
p_alarm
xx:x2_was not detected△
06
19
△B―実験1 [偽 false] else動作です.
△B―Not dawn [偽 false] else動作です.
●◎A-mornig_朝 [真 true] 動作です●
△B―Not day [偽 false] else動作です.
△B―Not evning [偽 false] else動作です.
△B―Not night [偽 false] else動作です.
△B―Not midnight [偽 false] else動作です.
■■-------------------------↑
現在時刻 08:40
■--------------------↓
08:40
p_alarm
xx:x408:40
p_alarm
xx:x6_was not detected△
08:40
p_alarm
xx:x8_was not detected△
08:40
p_alarm
xx:x0_Detected time●◎xx:x0●
08:40
p_alarm
xx:30_was not detected△
08:40
p_alarm
xx:x2_was not detected△
08
40
△B―実験1 [偽 false] else動作です.
△B―Not dawn [偽 false] else動作です.
●◎A-mornig_朝 [真 true] 動作です●
△B―Not day [偽 false] else動作です.
△B―Not evning [偽 false] else動作です.
△B―Not night [偽 false] else動作です.
△B―Not midnight [偽 false] else動作です.
■■-------------------------↑
現在時刻 09:00
■--------------------↓
09:00
p_alarm
xx:x409:00
p_alarm
xx:x6_was not detected△
09:00
p_alarm
xx:x8_was not detected△
09:00
p_alarm
xx:x0_Detected time●◎xx:x0●
09:00
p_alarm
xx:30_was not detected△
09:00
p_alarm
xx:x2_was not detected△
09
00
△B―実験1 [偽 false] else動作です.
△B―Not dawn [偽 false] else動作です.
△B―Not morning [偽 false] else動作です.
●◎A-day_昼 [真 true] 動作です●
△B―Not evning [偽 false] else動作です.
△B―Not night [偽 false] else動作です.
△B―Not midnight [偽 false] else動作です.
■■-------------------------↑
現在時刻 17:00
■--------------------↓
17:00
p_alarm
xx:x417:00
p_alarm
xx:x6_was not detected△
17:00
p_alarm
xx:x8_was not detected△
17:00
p_alarm
xx:x0_Detected time●◎xx:x0●
17:00
p_alarm
xx:30_was not detected△
17:00
p_alarm
xx:x2_was not detected△
17
00
△B―実験1 [偽 false] else動作です.
△B―Not dawn [偽 false] else動作です.
△B―Not morning [偽 false] else動作です.
△B―Not day [偽 false] else動作です.
●◎A-evning_夕方 [真 true] 動作です●
△B―Not night [偽 false] else動作です.
△B―Not midnight [偽 false] else動作です.
■■-------------------------↑
現在時刻 19:07
■--------------------↓
19:07
p_alarm
xx:x4_was not detected△
19:07
p_alarm
xx:x6_was not detected△
19:07
p_alarm
xx:x8_was not detected△
19:07
p_alarm
xx:x0_was not detected△
19:07
p_alarm
xx:3019:07
p_alarm
xx:x2_was not detected△
19
07
△B―実験1 [偽 false] else動作です.
△B―実験2 [偽 false] else動作です.
△B―Not dawn [偽 false] else動作です.
△B―Not morning [偽 false] else動作です.
△B―Not day [偽 false] else動作です.
△B―Not evning [偽 false] else動作です.
●◎A-night_夜 [真 true] 動作です●
△B―Not midnight [偽 false] else動作です.
■■-------------------------↑
global_dawn_flag
0
global_morning_flag
0
global_day_flag
0
local_evening_flag
0
global_night_flag
1
global_midnight_flag
0
global_dawn_flag
0
global_morning_flag
0
global_day_flag
0
local_evening_flag
0
global_night_flag
1
global_midnight_flag
0
現在時刻 02:47
■--------------------↓
02:47
p_alarm
xx:x402:47
p_alarm
xx:x6_was not detected△
02:47
p_alarm
xx:x8_was not detected△
02:47
p_alarm
xx:x0_was not detected△
02:47
p_alarm
xx:30_was not detected△
02:47
p_alarm
xx:x2_was not detected△
02
47
△B―実験1 [偽 false] else動作です.
△B―Not dawn [偽 false] else動作です.
△B―Not morning [偽 false] else動作です.
△B―Not day [偽 false] else動作です.
△B―Not evning [偽 false] else動作です.
△B―Not night [偽 false] else動作です.
●◎A-midnight_真夜中 [真 true] 動作です●
■■-------------------------↑
* 各時刻帯域にflagを導入します。 C言語の広域(global)変数と局所(local)変数の扱いができる必要があります。
グローバル変数として扱うには、関数の外で定義します。
int global_midnight_flag = 0; //このように関数外で再宣言します ->グローバル変数。ここはglobal変数の位置です。
void loop() {//loop
int local_midnight_flag = 1; //
global_midnight_flag=local_midnight_flag;
このようにローカル変数の値をグローバル変数へ渡して、どこからでも参照できるようにします。
loopの先頭でLED緑、loopの最後でLED青を1回点滅動作をさせます。これにより、プログラム実行の様子が推測できます(ここでは見れません)。 このように時刻帯を識別させます。
●◎A-evning △B―Not night などの A、Bの意味について
A if の真の動作を意識するために付けました。
B は if の偽の動作を意識するために付けました。