Arduinoで特定の日付の曜日を計算したい場合、ツェラーの公式を使うことができます。この記事では、ツェラーの公式を使って曜日を計算するArduinoのコードを解説し、正しく動作させる方法を紹介します。
ツェラーの公式とは?
ツェラーの公式は、特定の日付に対応する曜日を計算するための公式です。これにより、年、月、日を入力することで、その日が何曜日であるかを求めることができます。公式は次のようになります。
w = (d + (13 * (m + 1)) / 5 + (y % 100) * 2 / 4 + y / 400 – 2 * y / 100 + 5) % 7
コード例と解説
質問者が示したコードは、ツェラーの公式を使用して曜日を計算し、結果をシリアルモニタに表示するものです。このコードを使うと、特定の年、月、日を入力して、その曜日を計算することができます。以下にそのコードの例を示します。
void weekday() {
int y = 2026;
int m = 2;
int d = 1;
if (m < 3) {
m += 12;
y--;
}
int w = (d + (13 * (m + 1)) / 5 + (y % 100) * 2 / 4 + y / 400 - 2 * y / 100 + 5) % 7;
Serial.println(w);
}
コードの説明
このコードでは、特定の年、月、日を設定し、ツェラーの公式を使って曜日を計算しています。まず、月が1月か2月の場合、年を1年減らし、月を12月、13月として処理しています。次に、公式に基づいて計算を行い、その結果をシリアルモニタに表示します。
曜日の番号とその対応
ツェラーの公式では、曜日は0から6の番号で表示されます。具体的には、次のように対応しています。
- 0: 土曜日
- 1: 日曜日
- 2: 月曜日
- 3: 火曜日
- 4: 水曜日
- 5: 木曜日
- 6: 金曜日
質問者のコードでは、例えば2026年2月1日の曜日を計算すると、`w` の値が対応する曜日の番号になります。
改善方法とヒント
もしコードが動作しない場合や曜日が期待通りに表示されない場合、まず入力した年、月、日が正しいか確認してください。また、シリアルモニタが正しく表示されているかも確認してください。必要に応じて、シリアルモニタのボーレート(通常は9600)を設定することもお忘れなく。
まとめ
Arduinoで特定の日付の曜日を計算するために、ツェラーの公式を使うことは非常に便利です。このコードを参考に、特定の日が何曜日かを計算し、様々なプロジェクトに活用してみてください。コードの改良や別の機能を追加することで、さらに便利に利用できるでしょう。


コメント