時間設定とアラーム機能を備えたTM1637デジタル時計
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
これは、次のデジタル時計プロジェクトで使用する予定の時間とアラームの設定メカニズムのプロトタイプです。お役に立てば幸いです。改善点があればお知らせください。それらを調べて、コードに組み込むことができれば幸いです。
チュートリアル全体は
で見ることができますこのコンテンツが気に入って、同様のビデオの作成をサポートしたい場合は、私のPatreonWebページにアクセスしてください
https://www.patreon.com/MariosIdeas
または
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7PD67JWZ9S3EJ&source=url
コード
- RTCモジュールからの時刻の表示に加えて、時刻設定とアラーム設定機能
RTCモジュールからの時刻の表示に加えて、時刻設定とアラーム設定機能 Arduino
このコードは、RTCモジュールから現在の時刻を読み取っています。次に、現在の時刻を更新したり、アラーム時刻を設定したりすることもできます。セットアップアクションは3つのボタンを使用して実行されます。
//マリオのアイデア//セットアップとアラーム機能を備えたTM1637デジタル時計#include#include #include //// RTCモジュール宣言// PINS CLK、DAT、RSTvirtuabotixRTC myRTC(A1、A2、A3); //以前の値を保存する変数RTCmoduleint分; int時間; //アラームがオフになる時間を保存する変数int Alarm_minutes =05; int Alarm_hours =18; uint8_t Blank [] ={0x0}; int POSITION =0; //時間とアラームのセットアップ手順で使用される4桁を格納するテーブルintdigits [3]; int interval =0; #defineアラーム9 //アラームモードをオンまたはオフに切り替えるボタン#defineBuzer 13#define Led 8 // Statusesboolean Alarm_set =false; boolean Alarm_in_progress =false; boolean Setup_on =false; // 4桁のディスプレイ接続ピン(デジタルピン)#defineCLK 4#define DIO 5 // 4桁の表示宣言TM1637Display clock(CLK、DIO); void setup(){attachInterrupt(digitalPinToInterrupt(2)、Press_A_Button、RISING); attachInterrupt(digitalPinToInterrupt(3)、Press_B_Button、RISING); pinMode(Alarm、INPUT); pinMode(Buzer、OUTPUT); pinMode(Led、OUTPUT); digitalWrite(Buzer、LOW); clock.setBrightness(0x0f); Serial.begin(9600);} void Press_A_Button(){if(interval> 3){if(Setup_on ==false){Setup_on =true; if(Alarm_set ==true){digits [0] =(int)Alarm_hours / 10; Digits [1] =Alarm_hours-((int)Alarm_hours / 10)* 10; Digits [2] =(int)Alarm_minutes / 10; Digits [3] =Alarm_minutes-((int)Alarm_minutes / 10)* 10; } else {digits [0] =(int)myRTC.hours / 10; Digits [1] =myRTC.hours-((int)myRTC.hours / 10)* 10; Digits [2] =(int)myRTC.minutes / 10; Digits [3] =myRTC.minutes-((int)myRTC.minutes / 10)* 10; }} else {POSITION ++; if(POSITION ==4){if(Alarm_set ==true){Alarm_minutes =Digits [3] + Digits [2] * 10; Alarm_hours =数字[1] +数字[0] * 10; } else {myRTC.setDS1302Time(0、Digits [3] + Digits [2] * 10、Digits [1] + Digits [0] * 10、myRTC.dayofweek、myRTC.dayofmonth、myRTC.month、myRTC.year); clock.showNumberDec(digits [0]、false、1,0); clock.showNumberDec(digits [1]、false、1,1); clock.showNumberDec(digits [2]、false、1,2); clock.showNumberDec(digits [3]、false、1,3); } POSITION =0; Setup_on =false; }}} interval =0;} void Press_B_Button(){if(interval> 3){if(Setup_on){digits [POSITION] =Digits [POSITION] +1; if(POSITION ==0 and Digits [POSITION] ==3)digits [POSITION] =0; if(POSITION!=0 and Digits [POSITION] ==10)digits [POSITION] =0;間隔=0; }} interval =0;} void loop(){if(digitalRead(Alarm)==HIGH and Alarm_set ==false){if(interval> 30){digitalWrite(Led、HIGH); Alarm_set =true; delay(300); }} else {if(digitalRead(Alarm)==HIGH and Alarm_set ==true){if(interval> 30){Alarm_set =false; Alarm_in_progress =false; digitalWrite(Led、LOW); delay(300); }}} myRTC.updateTime(); if(Setup_on ==true){clock.showNumberDec(digits [0]、false、1,0); clock.showNumberDec(digits [1]、false、1,1); clock.showNumberDec(digits [2]、false、1,2); clock.showNumberDec(digits [3]、false、1,3); delay(200); clock.setSegments(Blank、1、POSITION); delay(200); clock.showNumberDec(digits [0]、false、1,0); clock.showNumberDec(digits [1]、false、1,1); clock.showNumberDec(digits [2]、false、1,2); clock.showNumberDec(digits [3]、false、1,3); } else {if(myRTC.minutes ==Alarm_minutes and myRTC.hours ==Alarm_hours and Alarm_set ==true and Setup_on ==false){Alarm_in_progress =true; } if(Alarm_in_progress){digitalWrite(Buzer、HIGH); delay(1000); digitalWrite(Buzer、LOW); delay(1000); } if(myRTC.minutes!=minutes){clock.showNumberDecEx((int)myRTC.hours / 10 * 1000 +(myRTC.hours-((int)myRTC.hours / 10)* 10)* 100 +(int) myRTC.minutes / 10 * 10 + myRTC.minutes-((int)myRTC.minutes / 10)* 10、(0x80>> 1)、true); minutes =myRTC.minutes; hours =myRTC.hours; }} if(interval <200)interval ++;}
回路図
製造プロセス
- アプリケーションを備えたアナログおよびデジタルセンサーの種類
- tコブラープラス付きラズベリーパイ2ウォーターアラーム
- RaspberryPiとPythonを使用したロボットの構築
- FiixとIDCによるデジタルトランスフォーメーションの調査
- 状態監視による時間とお金の節約
- メンテナンスソフトウェアでメンテナンスコストを削減し、収益を増やす8つの方法
- Portentaおよび熱電対センサー(MAX6675を使用)
- シスコとIBMのおかげで、IoTデータによるデジタルトランスフォーメーションの加速
- 単語単位の時間の分分解能を備えた世界時計
- DS1302RTCを備えたシンプルな目覚まし時計
- ベアリングの機能と進化