Arduinoで曜日を計算する方法: ツェラーの公式を使用したコード例

C言語関連

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で特定の日付の曜日を計算するために、ツェラーの公式を使うことは非常に便利です。このコードを参考に、特定の日が何曜日かを計算し、様々なプロジェクトに活用してみてください。コードの改良や別の機能を追加することで、さらに便利に利用できるでしょう。

コメント

タイトルとURLをコピーしました