Arduino:目覚まし時計の作成-仕組み
この実践的なヒントでは、Arduinoで目覚まし時計を作成する方法を学びます。 適切なコードで簡単です。
Arduino:目覚まし時計の作成-仕組み
Arduinoの目覚まし時計には、電源、リモコン付きIRレシーバー、ブザー、DS3231リアルタイムモジュール、サーミスタ、LCD、そしてもちろんブレッドボードとジャンパーケーブル付きのArduinoが必要です。
- 最初に電源をブレッドボードに正しい方法で差し込み、両側で5ボルトに設定されていることを確認します。
- 赤外線レシーバーをプラスバーとマイナスバー、およびピン3に接続します。
- アクティブなブザーをピン13とアース(マイナスバー)に接続します。
- DS3231モジュールは、プラスバーとマイナスバーにも接続されています。 また、ArduinoでSDAをSDAに、SCLをSCLに接続します。
- ここで、サーミスタが必要になります。サーミスタも5ボルトに接続され、10kΩ抵抗を介してアナログ0に接続されます。
- 最後に、LCDを接続する必要があります。 Kは-に、Aは+に接続されます。 ピンD4〜D7は、Arduinoのピン9〜12に接続します。 ここで、Eをピン8に、RWをマイナスバーに、RSをピン7に接続する必要があります。 ピンV0を5Vとグランドに接続されている10kポテンショメータに接続します。 最後に、VDDを5Vに、VSSをグランドに接続します。
Arduino目覚まし時計をプログラムする
すべてを正しく設定したら、Arduinoの目覚まし時計をプログラムできます。 このための小さなサンプルコードを作成しました。
- #include #include #include #include "IRremote.h" int tempPin = 0; DS3231クロック。 RTCDateTime dt; LiquidCrystal lcd(7、8、9、10、11、12); intレシーバー= 3; IRrecv irrecv(受信機); decode_results結果; intアラーム; boolean alarm_state = false; ストリングアワー。 文字列destination_time; ストリング分。 文字列current_time; intブザー= 13; void translateIR(){switch(results.value){case 0xFFA25D:alarm_state =!alarm_state; 休憩; // POWER case 0xFFE21D:break; // FUNC / STOP case 0xFF629D:break; // VOL + case 0xFF22DD:break; // FAST BACK case 0xFF02FD:break; // PAUSE case 0xFFC23D:break; //早送りの場合0xFFE01F:break; // DOWN case 0xFFA857:break; // VOL- case 0xFF906F:break; // UPケース0xFF9867:break; // EQケース0xFFB04F:break; // ST / REPTケース0xFF6897:アラーム= 0; 追加(); 休憩; // 0ケース0xFF30CF:アラーム= 1; 追加(); 休憩; // 1つのケース0xFF18E7:アラーム= 2; 追加(); 休憩; // 2ケース0xFF7A85:アラーム= 3; 追加(); 休憩; // 3ケース0xFF10EF:アラーム= 4; 追加(); 休憩; // 4ケース0xFF38C7:アラーム= 5; 追加(); 休憩; // 5 case 0xFF5AA5:alarm = 6; 追加(); 休憩; // 6 case 0xFF42BD:alarm = 7; 追加(); 休憩; // 7ケース0xFF4AB5:アラーム= 8; 追加(); 休憩; // 8ケース0xFF52AD:アラーム= 9; 追加(); 休憩; // 9 case 0xFFFFFFFF:break; デフォルト:break; }遅延(500); } void add(){destination_time + =文字列(アラーム); } void setup(){pinMode(ブザー、出力); lcd.begin(16、2); clock.begin(); clock.setDateTime(__ DATE__、__TIME__); irrecv.enableIRIn(); } void loop(){int tempReading = analogRead(tempPin); double tempK = log(10000.0 *((1024.0 / tempReading-1))); tempK = 1 /(0.001129148 +(0.000234125 +(0.0000000876741 * tempK * tempK))* tempK); float tempC = tempK-273.15; float tempF =(tempC * 9.0)/ 5.0 + 32.0; dt = clock.getDateTime(); lcd.setCursor(0、0); lcd.print(clock.date形式( "dmY H:i:s"、dt)); lcd.setCursor(0、1); lcd.print(String(tempC)+ "" + String((char)223)+ "C"); if(irrecv.decode(&results)){translateIR(); irrecv.resume(); } hour = clock.dateFormat( "H"、dt); 分= clock.dateFormat( "i"、dt); current_time =時間+分; if(current_time == destination_time && alarm_state == true){pinMode(ブザー、HIGH); } else {pinMode(ブザー、LOW); } if(alarm_state == true){lcd.setCursor(10、1); lcd.print( "!"); } else {lcd.setCursor(10、1); lcd.print( ""); } if(destination_time.length()== 4){lcd.setCursor(11、1); lcd.print(destination_time)。 } else if(destination_time.length()<4){lcd.setCursor(11、1); lcd.print( "TYPE"); } else {lcd.setCursor(11、1); lcd.print( "TYPE"); destination_time = ""; }遅延(1000); }
- ヒント:このコードをIDEにコピーし、必要に応じて調整します。 画像ギャラリーでコード行の詳細な説明を見つけることができます。
次の記事では、ArduinoでGSMモジュールを制御する方法を説明します。