工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino RTCLEDクロック

コンポーネントと消耗品

>
Arduino UNO
× 1
リアルタイムクロック(RTC)
× 1
抵抗1kオーム
× 15
スルーホール抵抗、120オーム
× 15
リニアレギュレータ(7805)
× 1
コンデンサ22pF
× 1
16MHzクリスタル
× 1
コンデンサ10µF
× 1
コイン型電池CR2032
× 1
バッテリーホルダー、リチウムCR2032
× 1
5 mm LED:緑
× 190
バイポーラ-RFトランジスタ、NPN
× 10
汎用トランジスタPNP
× 12
触覚スイッチ、上部作動
× 4
Digilent 60W PCIe 12V 5A Power Supply
× 1

必要なツールとマシン

>
はんだごて(汎用)
はんだワイヤー、鉛フリー
Digitent Mastech MS8217 Autorange Digital Multimeter

このプロジェクトについて

まず、次のライブラリをダウンロードする必要があります(リンクはこのページの最後にあります) 1. Wire.h

2. RTClib.h パーツリスト

<図>

ビデオを見る

これはRTCクロックモジュールです

<図>

これはArduinoサーキットです

<図>

RTC配線接続

<図>

RTCスイッチ

<図>

アノードとカソードを特定する

<図>

回路図(コモンアノード)

<図> <図> <図>

<図>

共通のカソードLEDを使用する場合は、次のように変更してください

<図> <図> <図> <図>

<図>

電源

<図>

<図>

<図>

<図>

<図>

<図>

<図>

<図> <図> <図> <図> <図>

コード

  • LEDクロックコード
LEDクロックコード Arduino
このコードをダウンロードしてプロジェクトにアップロード
 / * 4桁7セグメントディスプレイ:http://www.sparkfun.com/products/9483データセット:http://www.sparkfun.com/datasheets/Components/LED/ 7-Segment / YSD-439AR6B-35.pdf * /// http://nicuflorica.blogspot.com// dataseetのniq_roによる接続の変更:http://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298ea2655/KW4 -563XSA.pdf // BMIAKBasnayakaによって変更されたコード//http://www.setnfix.comint digit1 =11; int Digit2 =10; int Digit3 =9; int Digit4 =6; int Digit5 =5; int digit6 =3; //必要に応じてArduinoからATmegaDIP28へのピンマッピング//http://www.arduino.cc/en/Hacking/PinMappingintsegA =0; //ピン11を表示しますintsegB =1; //ピン7を表示しますintsegC =2; //ピン4を表示しますintsegD =4; //ピン2を表示しますintsegE =7; //ピン1を表示しますintsegF =8; //ピン10を表示しますintsegG =12; //ピン5を表示しますintsegDP =13; //ディスプレイピン3#include  #include "RTClib.h" RTC_DS1307 RTC; // I2CおよびWirelibを介して接続されたDS1307RTCを使用した日付と時刻の関数//http://learn.adafruitの元のスケッチ.com / ds1307-real-time-clock-breakout-board-kit ///http://tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the-からSQW =1Hzのパーツを追加i2c-bus ///手動調整でパーツを追加http://www.bristolwatch.com/arduino/arduino_ds1307.htmbyteSW0 =A0; byte SW1 =A2; byte SW2 =A1; byte SWT =A3; int Adhr =0; int Admnt =0; int D =0; int Z =0; //ゼシマル変換でヘキサに使用longzh、uh、ore; long zm、um、miniti; void setup(){// Serial.begin(57600); Wire.begin(); RTC.begin(); // RTC.adjust(DateTime(F(__ DATE __)、F(__ TIME __))); //時計を設定する必要がある場合... //この上の行から//LEDWire.beginTransmission(0x68)を点滅させるためのパーツコードを削除します; Wire.write(0x07); //ポインタをSQWアドレスに移動します//Wire.write(0x00); // SQWピンをオフにしますWire.write(0x10); // 0x10(hex)00010000(binary)を制御レジスタに送信します-1Hzで方形波をオンにします// Wire.write(0x13); // 0x13(hex)00010011(binary)32kHzWire.endTransmission();を送信しますpinMode(segA、OUTPUT); pinMode(segB、OUTPUT); pinMode(segC、OUTPUT); pinMode(segD、OUTPUT); pinMode(segE、OUTPUT); pinMode(segF、OUTPUT); pinMode(segG、OUTPUT); pinMode(segDP、OUTPUT); pinMode(digit1、OUTPUT); pinMode(digit2、OUTPUT); pinMode(digit3、OUTPUT); pinMode(digit4、OUTPUT); pinMode(digit5、OUTPUT); pinMode(digit6、OUTPUT); // Serial.begin(9600); pinMode(SW0、INPUT); // いいえ。プッシュボタンswitchpinMode(SW1、INPUT); // いいえ。プッシュボタンswitchpinMode(SW2、INPUT); // いいえ。プッシュボタンswitchpinMode(SWT、INPUT); // いいえ。プッシュボタンswitchdigitalWrite(SW0、HIGH); //プルアップondigitalWrite(SW1、HIGH); digitalWrite(SW2、HIGH); digitalWrite(segDP、LOW);} void loop(){DateTime now =RTC.now(); long HR =now.hour()* 1000;長いティンプ=(HR * 10)+ now.minute()* 100 + now.second(); Adhr =now.hour(); Admnt =now.minute(); int DIM =0; if(timp>
 =250000)timp =timp-240000; // ---------------------- -------------------------------- /// 12/24時間のクソ// --------- --------------------------------------------- if(timp <130000 ){digitalWrite(segDP、LOW);} if(digitalRead(SWT)==0){delay(300); if(D ==0){D =1; delay(200);} else {D =0;}} if(D ==0){if(timp>
 =130000){timp =timp-120000; digitalWrite( segDP、HIGH);}} if(timp>
 =130000){digitalWrite(segDP、LOW);} if((D ==1)&(timp <130000))digitalWrite(segDP、LOW); // --- -------------------------------------------------- -// int timp =(now.minute()、DEC); // displayNumber(12); //これは表示する数値ですfor(int i =100; i> 0; i-){if(timp>
 =100000)displayNumber01(timp); else displayNumber02(timp); } for(int i =100; i> 0; i-){if(timp>
 =100000)displayNumber03(timp); else displayNumber04(timp); } for(int i =100; i> 0; i-){if(timp>
 =100000)displayNumber05(timp); else displayNumber06(timp); } if(digitalRead(SW0)==0){delay(100); Z =1; set_time(); } //スイッチを押したまま時刻を設定} void set_time(){byte minutes1 =0;バイト時間1 =0;バイト分=0;バイト時間=0;時間=Adhr;分=Admnt; if((hours&0x0f)> 9)時間=時間+ 6; if(hours> 0x24)hours =1; //真夜中の12.00は、12:00(PM LEDがオンの場合)または24:00として表示されます// if(hours> 0x24)hours =1; //深夜12.00は0:00と表示されますif((minutes&0x0f)> 9)minutes =minutes + 6; if(minutes> 0x59)minutes =0; while(!(Z ==0)){//終了するには、設定された時間スイッチを放す必要がありますint TST =digitalRead(SW2); while(TST ==0)//時間を設定{hours ++; //ヘキサをzecimalに変換します:zh =hours / 16; uh =時間-16 * zh;鉱石=10 * zh + uh; zm =分/ 16; um =分-16 * zm; miniti =10 * zm + um; if((hours&0x0f)> 9)時間=時間+ 6; if(hours> 0x24)hours =1; //真夜中の12.00は、12:00(PM LEDがオンの場合)または24:00として表示されます// if(hours> 0x24)hours =1; //深夜12.00は0:00として表示されますif(hours <=9)delay(1); for(int i =400; i> 0; i-){displayNumber01(ore * 10000 + miniti * 100); } TST =digitalRead(SW2); } while(!(digitalRead(SW1)))//分を設定{minutes ++; //ヘキサをzecimalに変換します:zh =hours / 16; uh =時間-16 * zh;鉱石=10 * zh + uh; zm =分/ 16; um =分-16 * zm; miniti =10 * zm + um; for(int i =400; i> 0; i-){displayNumber01(ore * 10000 + miniti * 100); } if((minutes&0x0f)> 9)minutes =minutes + 6; if(minutes> 0x59)minutes =0; if(minutes> =9)delay(1); } Wire.beginTransmission(0x68); // DS1307をアクティブにしますWire.write(0); //どこから開始するWire.write(0x00); //秒Wire.write(minutes); //分Wire.write(0x80 |時間); //時間(24時間)Wire.write(0x06); // 01-07日目Wire.write(0x01); //日付0-31Wire.write(0x05); // 0〜12か月Wire.write(0x09); // 00-99年Wire.write(0x10); //コントロール0x10は、ピン7に1HZの方形波を生成します。Wire.endTransmission(); //ヘキサをzecimalに変換します:zh =hours / 16; uh =時間-16 * zh;鉱石=10 * zh + uh; zm =分/ 16; um =分-16 * zm; miniti =10 * zm + um; for(int i =400; i> 0; i-){displayNumber01(ore * 10000 + miniti * 100); } delay(100); //Serial.print(digitalRead(SW0)); if(digitalRead(SW0)==0)Z =0; delay(300); } // Serial.print(SW2);} void displayNumber01(long toDisplay){#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int Digit =6; Digit> 0; Digit-){//オン短時間の数字switch(digit){ケース1:digitalWrite(digit1、DIGIT_ON);壊す;ケース2:digitalWrite(digit2、DIGIT_ON); // digitalWrite(segDP、LOW);壊す;ケース3:digitalWrite(digit3、DIGIT_ON);壊す;ケース4:digitalWrite(digit4、DIGIT_ON);壊す;ケース5:digitalWrite(digit5、DIGIT_ON);壊す;ケース6:digitalWrite(digit6、DIGIT_ON);壊す; } lightNumber(toDisplay%10); toDisplay / =10; delayMicroseconds(DISPLAY_BRIGHTNESS); //すべてのセグメントをオフにしますlightNumber(10); //すべての数字をオフにしますdigitalWrite(digit1、DIGIT_OFF); digitalWrite(digit2、DIGIT_OFF); digitalWrite(digit3、DIGIT_OFF); digitalWrite(digit4、DIGIT_OFF); digitalWrite(digit5、DIGIT_OFF); digitalWrite(digit6、DIGIT_OFF);}} void displayNumber02(long toDisplay){#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int Digit =6; Digit> 0; Digit-){//数字をオンにする短時間スイッチ(数字){ケース1:lightNumber(10);壊す;ケース2:digitalWrite(digit2、DIGIT_ON); // digitalWrite(segDP、LOW);壊す;ケース3:digitalWrite(digit3、DIGIT_ON);壊す;ケース4:digitalWrite(digit4、DIGIT_ON);壊す;ケース5:digitalWrite(digit5、DIGIT_ON);壊す;ケース6:digitalWrite(digit6、DIGIT_ON);壊す; } lightNumber(toDisplay%10); toDisplay / =10; delayMicroseconds(DISPLAY_BRIGHTNESS); //すべてのセグメントをオフにしますlightNumber(10); //すべての数字をオフにしますdigitalWrite(digit1、DIGIT_OFF); digitalWrite(digit2、DIGIT_OFF); digitalWrite(digit3、DIGIT_OFF); digitalWrite(digit4、DIGIT_OFF); digitalWrite(digit5、DIGIT_OFF); digitalWrite(digit6、DIGIT_OFF);}} void displayNumber03(long toDisplay){#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int Digit =6; Digit> 0; Digit-){//数字をオンにする短時間switch(digit){ケース1:digitalWrite(digit1、DIGIT_ON);壊す;ケース2:digitalWrite(digit2、DIGIT_ON);壊す;ケース3:digitalWrite(digit3、DIGIT_ON);壊す;ケース4:digitalWrite(digit4、DIGIT_ON);壊す;ケース5:digitalWrite(digit5、DIGIT_ON);壊す;ケース6:digitalWrite(digit6、DIGIT_ON);壊す; } lightNumber(toDisplay%10); toDisplay / =10; delayMicroseconds(DISPLAY_BRIGHTNESS); //すべてのセグメントをオフにしますlightNumber(10); //すべての数字をオフにしますdigitalWrite(digit1、DIGIT_OFF); digitalWrite(digit2、DIGIT_OFF); digitalWrite(digit3、DIGIT_OFF); digitalWrite(digit4、DIGIT_OFF); digitalWrite(digit5、DIGIT_OFF); digitalWrite(digit6、DIGIT_OFF);}} void displayNumber04(long toDisplay){#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int Digit =6; Digit> 0; Digit-){//数字をオンにする短時間スイッチ(数字){ケース1:lightNumber(10);壊す;ケース2:digitalWrite(digit2、DIGIT_ON);壊す;ケース3:digitalWrite(digit3、DIGIT_ON);壊す;ケース4:digitalWrite(digit4、DIGIT_ON);壊す;ケース5:digitalWrite(digit5、DIGIT_ON);壊す;ケース6:digitalWrite(digit6、DIGIT_ON);壊す; } lightNumber(toDisplay%10); toDisplay / =10; delayMicroseconds(DISPLAY_BRIGHTNESS); //すべてのセグメントをオフにしますlightNumber(10); //すべての数字をオフにしますdigitalWrite(digit1、DIGIT_OFF); digitalWrite(digit2、DIGIT_OFF); digitalWrite(digit3、DIGIT_OFF); digitalWrite(digit4、DIGIT_OFF); digitalWrite(digit5、DIGIT_OFF); digitalWrite(digit6、DIGIT_OFF);}} void displayNumber05(long toDisplay){#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int Digit =6; Digit> 0; Digit-){//数字をオンにする短時間switch(digit){ケース1:digitalWrite(digit1、DIGIT_ON);壊す;ケース2:digitalWrite(digit2、DIGIT_ON);壊す;ケース3:digitalWrite(digit3、DIGIT_ON);壊す;ケース4:digitalWrite(digit4、DIGIT_ON);壊す;ケース5:digitalWrite(digit5、DIGIT_ON);壊す;ケース6:digitalWrite(digit6、DIGIT_ON);壊す; } lightNumber(toDisplay%10); toDisplay / =10; delayMicroseconds(DISPLAY_BRIGHTNESS); //すべてのセグメントをオフにしますlightNumber(10); //すべての数字をオフにしますdigitalWrite(digit1、DIGIT_OFF); digitalWrite(digit2、DIGIT_OFF); digitalWrite(digit3、DIGIT_OFF); digitalWrite(digit4、DIGIT_OFF); digitalWrite(digit5、DIGIT_OFF); digitalWrite(digit6、DIGIT_OFF);}} void displayNumber06(long toDisplay){#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int Digit =6; Digit> 0; Digit-){//数字をオンにする短時間switch(digit){ケース1:// digitalWrite(digit1、DIGIT_ON);壊す;ケース2:digitalWrite(digit2、DIGIT_ON);壊す;ケース3:digitalWrite(digit3、DIGIT_ON);壊す;ケース4:digitalWrite(digit4、DIGIT_ON);壊す;ケース5:digitalWrite(digit5、DIGIT_ON);壊す;ケース6:digitalWrite(digit6、DIGIT_ON);壊す; } lightNumber(toDisplay%10); toDisplay / =10; delayMicroseconds(DISPLAY_BRIGHTNESS); //すべてのセグメントをオフにしますlightNumber(10); //すべての数字をオフにしますdigitalWrite(digit1、DIGIT_OFF); digitalWrite(digit2、DIGIT_OFF); digitalWrite(digit3、DIGIT_OFF); digitalWrite(digit4、DIGIT_OFF); digitalWrite(digit5、DIGIT_OFF); digitalWrite(digit6、DIGIT_OFF);}} //数値を指定して、それらのセグメントをオンにします//数値==10の場合、数値をオフにしますvoid lightNumber(int numberToDisplay){//共通アノード********* ****************#define SEGMENT_ON HIGH#define SEGMENT_OFF LOW / *共通カソード*****************#define SEGMENT_ON LOW# SEGMENT_OFF HIGH * / switch(numberToDisplay){case 0:digitalWrite(segA、SEGMENT_ON);を定義します。 digitalWrite(segB、SEGMENT_ON); digitalWrite(segC、SEGMENT_ON); digitalWrite(segD、SEGMENT_ON); digitalWrite(segE、SEGMENT_ON); digitalWrite(segF、SEGMENT_ON); digitalWrite(segG、SEGMENT_OFF);壊す;ケース1:digitalWrite(segA、SEGMENT_OFF); digitalWrite(segB、SEGMENT_ON); digitalWrite(segC、SEGMENT_ON); digitalWrite(segD、SEGMENT_OFF); digitalWrite(segE、SEGMENT_OFF); digitalWrite(segF、SEGMENT_OFF); digitalWrite(segG、SEGMENT_OFF);壊す;ケース2:digitalWrite(segA、SEGMENT_ON); digitalWrite(segB、SEGMENT_ON); digitalWrite(segC、SEGMENT_OFF); digitalWrite(segD、SEGMENT_ON); digitalWrite(segE、SEGMENT_ON); digitalWrite(segF、SEGMENT_OFF); digitalWrite(segG、SEGMENT_ON);壊す;ケース3:digitalWrite(segA、SEGMENT_ON); digitalWrite(segB、SEGMENT_ON); digitalWrite(segC、SEGMENT_ON); digitalWrite(segD、SEGMENT_ON); digitalWrite(segE、SEGMENT_OFF); digitalWrite(segF、SEGMENT_OFF); digitalWrite(segG、SEGMENT_ON);壊す;ケース4:digitalWrite(segA、SEGMENT_OFF); digitalWrite(segB、SEGMENT_ON); digitalWrite(segC、SEGMENT_ON); digitalWrite(segD、SEGMENT_OFF); digitalWrite(segE、SEGMENT_OFF); digitalWrite(segF、SEGMENT_ON); digitalWrite(segG、SEGMENT_ON);壊す;ケース5:digitalWrite(segA、SEGMENT_ON); digitalWrite(segB、SEGMENT_OFF); digitalWrite(segC、SEGMENT_ON); digitalWrite(segD、SEGMENT_ON); digitalWrite(segE、SEGMENT_OFF); digitalWrite(segF、SEGMENT_ON); digitalWrite(segG、SEGMENT_ON);壊す;ケース6:digitalWrite(segA、SEGMENT_ON); digitalWrite(segB、SEGMENT_OFF); digitalWrite(segC、SEGMENT_ON); digitalWrite(segD、SEGMENT_ON); digitalWrite(segE、SEGMENT_ON); digitalWrite(segF、SEGMENT_ON); digitalWrite(segG、SEGMENT_ON);壊す;ケース7:digitalWrite(segA、SEGMENT_ON); digitalWrite(segB、SEGMENT_ON); digitalWrite(segC、SEGMENT_ON); digitalWrite(segD、SEGMENT_OFF); digitalWrite(segE、SEGMENT_OFF); digitalWrite(segF、SEGMENT_OFF); digitalWrite(segG、SEGMENT_OFF);壊す;ケース8:digitalWrite(segA、SEGMENT_ON); digitalWrite(segB、SEGMENT_ON); digitalWrite(segC、SEGMENT_ON); digitalWrite(segD、SEGMENT_ON); digitalWrite(segE、SEGMENT_ON); digitalWrite(segF、SEGMENT_ON); digitalWrite(segG、SEGMENT_ON);壊す;ケース9:digitalWrite(segA、SEGMENT_ON); digitalWrite(segB、SEGMENT_ON); digitalWrite(segC、SEGMENT_ON); digitalWrite(segD、SEGMENT_ON); digitalWrite(segE、SEGMENT_OFF); digitalWrite(segF、SEGMENT_ON); digitalWrite(segG、SEGMENT_ON);壊す; //すべてのセグメントがオンの場合10:digitalWrite(segA、SEGMENT_OFF); digitalWrite(segB、SEGMENT_OFF); digitalWrite(segC、SEGMENT_OFF); digitalWrite(segD、SEGMENT_OFF); digitalWrite(segE、SEGMENT_OFF); digitalWrite(segF、SEGMENT_OFF); digitalWrite(segG、SEGMENT_OFF);壊す; } //コーディングの終わり、BUDHUSARANAI、幸運を祈ります。 } 

回路図

これはLED付きSSDの配線です

製造プロセス

  1. Arduinoハメ撮りビジョンクロック
  2. Simple Word Clock(Arduino)
  3. Nokia 5110LCDのDIYシンプル20kHzArduinoオシロスコープ
  4. マスタークロック
  5. スマートブラインド
  6. イタリア語の単語時計
  7. LEDを制御するBluetoothを搭載したArduino!
  8. Arduino Quadruped
  9. 7セグメントアレイクロック
  10. SigfoxkWhメーター
  11. Arduino用の絶縁アナログ入力