緑の中に

緑の中に
国立天文台

9/21/2023

「夜明け」「朝」「昼」「夕方」「夜」「夜中」 この時刻帯は

 「夜明け」「朝」「昼」「夕方」「夜」「夜中」 この時刻帯は

夜明け 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 の偽の動作を意識するために付けました。