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

Arduino Nano + DS3231 + LDRを備えた7セグメントクロック

コンポーネントと消耗品

>
Arduino Nano R3
ArduinoUnoまたはElegooUnoでうまく機能します
× 1
>
Adafruit7セグメントバックパック-1.2 "トールディジット
-1.2 "私の場合はトールディジット(バンドルを購入する場合はオプション)
× 1
Adafruit 1.2 4-Digit 7-Segment Display w / I2C Backpack -緑
× 1
Adafruit DS3231
または必要に応じてDS1307
× 1
抵抗100kオーム
× 1
フォトレジスター
× 1
ブレッドボード(汎用)
× 1
ジャンパー線(汎用)
10〜14個
× 1
コイン型電池CR1220
× 1

アプリとオンラインサービス

>
Arduino IDE

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

イントロ

手首に時計を置いているときでも、手首に時計を置いているときでも、スマートフォンを持っているときでも、Arduino Uno / Nanoは少し退屈です。それ以外の場合は、この記事の外部にNTPサーバー同期デバイスがあり、インターネット接続を介して常にオンラインになっています。

ストーリー

私の友人の一人が個人的な理由で彼の寝室にWiFi接続のあるデバイスを拒否したので、私はArduinoに別の時計を装備しています。

適切な製品を選択してください

Adafruitでさえ、希望する張力に応じて、また精度も異なる、さまざまな製品が利用できることに驚きました。ここで私は2つの製品を決定しました:より安い DS1307 そしておそらくもっと正確な DS3231

明確にするために:両方の製品はこの時計で使用できます。 DS1307を使用するには、正しいPINの割り当てと、温度表示オプションの制限に注意してください。備考 "//" displayTemp(); loop()内の関数。

スケッチを適応させる

スケッチを探しに行って、他のメンバーと一緒に何かを見つけました。私はこのスケッチを再構築して適合させましたが、チェコ語のコメントを保持し、英語のコメントを追加しました。

広告はできるだけ大きくすることになっていたので、7セグメント広告に決めました。結局のところ、私は時間を念頭に置いておくだけでした。

スケッチを確認しているときに私が経験した次の前向きな驚き:ここで、DS3231は温度を使用するオプションを提供します 、DS1307-その不正確さに加えて-欠落しています。

時計を初期化する

CR1220ボタン電池をお持ちの場合は、時計の設定に関するAdafruitの短いチュートリアルに従うことができます。要約すると、時間はインターネットからダウンロードされるのではなく、時間の経過とともにローカルPCからダウンロードされます。アップロードのタイムスタンプがタイマーに転送されます。

関数

その後、時間と温度の出力のためにLEDマトリックスを回路に追加しました 。時間と温度の変化の期間は、変数を介して設定できます。

特に、LEDマトリックス上の個々の(点滅する)ドットと数字の制御がどのように機能し、制御されるかは、スケッチで詳しく説明されています。

ここでは、より多くのAdafruitソースを参照します。

スケッチは、夏/冬時間の調整によって四捨五入されます。 および周囲光に応じたLEDマトリックスの明るさ (夜間は、日中よりもディスプレイを暗くする必要があります。)

ビデオでは、確かに時間と温度の変化に気づきました。写真左のポイントに注目しましたか?これにより、秒に応じて位置(上または下)が変わります。

クロックに障害が発生した場合にLEDマトリックスに「ERR」を発行する方法を知っている場合は、フィードバックをお寄せください。現時点では「bEEF」が表示されます:

<図>
  //ああ、データはありません! Serial.println( "DS3231センサーエラー-温度を読み取れません"); matrix.print(0xBEEF、HEX); // BEEF matrix.writeDisplay();でユーザーに通知しますdelay(5000);  

拡張

アラームまたはアラーム時間もまだ統合されていません。

おそらく、BluetoothモジュールとBlynkを介した拡張も成功します。

2019年2月1日更新:

ブレッドボードからパンチカードのパーマネントベットへの転送は本日完了しました。興味のある人のためのいくつかの写真:

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

添付ファイルには更新されたコードv1.1と、カスタマイズされたフリーズ画像があります。

コード

  • MyClock v1.0
  • MyClock v1.1
MyClock v1.0 C / C ++
 // MyClock v1.0 // Ingo Lohs //ハードウェア:Arduino IDE v1.8.8 / *を使用してArduinoUnoおよびArduinoNano(ATmega328P [Old Bootloader])でテスト済みマトリックスht16k33の理論最も簡単なのはprint-Serialprint(variable、HEX)の場合と同じように、これは0000からFFFFprint(variable、DEC)またはprint(variable)までの16進数を出力します-これは0000から9999までの10進数を出力しますさらに制御が必要な場合は、writeDigitNum(location、number)を呼び出すことができます-これにより、番号(0-9)が単一の場所に書き込まれます。場所#0は左端にあり、場所#2はコロンドットであるため、おそらくスキップしたい場合は、位置#4が右端にあります。コロンと小数点を制御するには、writeDigitRaw(location、bitmap)関数を使用します(中央のコロンの両方のドットがディスプレイの内部で一緒に配線されていることに注意してください)。 、したがって、それらを個別にアドレス指定することはできません。)場所に2を指定すると、ビットは次のようにマップされます:0x02-中央のコロン(両方のd ots)0x04-左コロン-下ドット0x08-左コロン-上ドット0x10-小数点必要な場合は、writeDigitNum(location、number、true)を呼び出して小数点を描画します。コロンを描画するには、drawColon(trueまたはfalse)すべての桁のセグメントを完全に制御する場合は、writeDigitRaw(location、bitmask)を呼び出して、生の8ビットマスク(uint8_tに格納されている)を任意の場所に描画できます。すべての描画ルーチンは、表示を変更するだけです。 Arduinoによって保持されるメモリ。 I2Cを介してメモリをマトリックスに「保存」するために描画した後、writeDisplay()を呼び出すことを忘れないでください。出典:https://www.mouser.com/ds/2/737/adafruit-led-backpack-932846。 pdf * /#include  // Arduino Uno、Megaなどを使用している場合はこの行を有効にします。#include  #include "Adafruit_LEDBackpack.h" #define DS3231_I2C_ADDRESS 0x68int ldr_sensor =A0; // GNDに対して100kオームのLDRフォトレジスタ、他のレッグ5Vint ldr_value =0; // LDR値-varstore valueint bright_matrix; // LEDマトリックスの明るさ-varstore valueint threshold_brightness =400; // Thresholdint brightrate_value =0; // LEDマトリックスの点滅率intdelay_matrix_time =20; //表示時間(20秒)int delay_matrix_temp =2000; //表示温度の長さ(2秒)intblinky_dot =2; //何も点滅しません-左側に2つの単一ドットAdafruit_7segmentmatrix =Adafruit_7segment(); byte decToBcd(byte val){return((val / 10 * 16)+(val%10));} byte bcdToDec(byte val){ return((val / 16 * 10)+(val%16));} void setup(){Serial.begin(9600); Wire.begin(); matrix.begin(0x70);} void loop(){lightBrightness(); //マトリックス-明るさJustierungmatrixBlinkrate(); // Mattrix-Blinkrate Jusitierung displayTime(); //リアルタイムクロックデータを表示しますdisplayTemp(); //温度を表示します} void lightBrightness(){// setBrightness(brighness)-ディスプレイ全体の全体的な明るさを変更できます。 0は最も明るく、15は最も明るく、ldr_value =analogRead(ldr_sensor);を開始したときにディスプレイによって初期化されるものです。 Serial.print( "LDR:"); Serial.println(ldr_value); if(ldr_value <=threshold_brightness){//明るさの測定としきい値brightness_matrix =0; //日光の下で明るい} else {brightness_matrix =15; //夜は暗い}} void matrixBlinkrate(){// brightRate(rate)-ディスプレイ全体を点滅させることができます。 0は点滅していません。 1、2、または3は、ディスプレイの点滅用です。 matrix.blinkRate(blinkrate_value);} void displayTime(){matrix.setBrightness(brightness_matrix); matrix.clear(); //マトリックスの表示時間(秒)for(uint16_t i =0; i >夏時間に変更-3月の最後の日曜日の2時if((dayOfWeek ==7)&&(dayOfMonth> =25)&&(month ==3)&&(hour ==2)){//nastaveníhodinna3 hodinu //時計を3時間に設定setDS3231time(se、mi、3、we、dm、mo、ye); } //změnačanazimní//>>冬時間に変更if((dayOfWeek ==7)&&(dayOfMonth> =25)&&(month ==10)&&(hour ==1)&&(year!=1 )){//rokpoužitjakoindikace、žebyloléto//夏のことを示すために使用される年setDS3231time(se、mi、ho、we、dm、mo、1); } if((dayOfWeek ==7)&&(dayOfMonth> =25)&&(month ==10)&&(hour ==3)&&(year ==1)){//nastaveníhodinna2hodinuapříznakna0 //時計を2時間に設定し、年に0をフラグ付けしますsetDS3231time(se、mi、2、we、dm、mo、0); } / *場所に2を指定すると、ビットは次のようにマップされます。0x02-中央のコロン(両方のドット)0x04-左のコロン-下のドット0x08-左のコロン-上のドット0x10-小数点* / / *場所#2のコントロールまた、左の2つの単一ポイントは次のようになります(=blinky_dot):2 =何も点滅しない3 =何も点滅しない4 =左上に点滅(単一の上部ドット)5 =左上に点滅(単一の上部ドット)6 =左上に点滅(単一の上部ドット) )+ 7の中央の両方のコロン=左上の点滅(1つの上のドット)+ 8の中央の両方のコロン=左下の点滅(1つの下のドット)9 =左下の点滅(1つの下のドット)10 =左下の点滅(1つの下のドット) )+11の半ばに両方のコロン=左下に点滅(単一の下のドット)+ 12の中央に両方のコロン=中央に両方のコロンなしで両方のコロン(両方の単一のドットが左)を点滅* / //フォーマット時間:_0:mm if(hour> 9){matrix.writeDigitNum(0、(hour / 10)、false); matrix.writeDigitNum(1、(時間%10)、false); //これは、モジュロhttps://www.arduino.cc/reference/en/language/structure/arithmetic-operators/modulo/} else {matrix.writeDigitNum( 1、時間、false); } // matrix.drawColon(true); //両方のコロンがアクティブになっている:左のドットを点滅させたくない場合は、ここで両方のコロンをアクティブにすることができます//秒に左の位置にドットを表示する機会を与えますif(se <=30){blinky_dot =10; //左下を点滅します(単一の下のドット)+中央に両方のコロン} else if(se> 30){blinky_dot =6; //左上を点滅します(単一の上部ドット)+中央の両方のコロン} matrix.writeDigitRaw(2、blinky_dot); matrix.writeDigitNum(3、(分/ 10)、false); matrix.writeDigitNum(4、(分%10)、false); matrix.writeDisplay(); //点滅する二重ドットで0.5秒delay(500); matrix.drawColon(false); matrix.writeDisplay(); delay(500); }} void displayTemp(){matrix.setBrightness(brightness_matrix); matrix.clear();バイト温度=get3231Temp(); int abs_temp =abs(temp); //値の絶対数matrix.writeDigitNum(1、(abs_temp%10)、false); //位置1、値9、小数点以下を表示)if(temp <0)matrix.writeDigitRaw(0,64); if(temp <=-10)matrix.writeDigitRaw(2,12); //温度が負の場合、マイナス記号を最初にプロットします。 if(temp>
 =10)matrix.writeDigitNum(0、(abs_temp / 10)、false); //位置0、値1、小数点以下を表示)if(temp <=-10)matrix.writeDigitNum(0、(abs_temp / 10)、false); //位置0、値1、小数点以下を表示)// matrix.writeDigitRaw(2,0x10); // 10進数のドットmatrix.writeDigitRaw(3,99); // 99 ="°" matrix.writeDigitRaw(4,57); // 57 ="C" matrix.writeDisplay(); //シリアルラインに温度値を表示します//zobrazíhodnotyteplotynaseriove lince Serial.print( "Temperatur in C:"); Serial.println(get3231Temp()); // +/- 3 Grad Celsius //マトリックスの表示温度の長さ(秒)delay(delay_matrix_temp);} void setDS3231time(byte second、byte minutes、byte hour、byte dayOfWeek、byte dayOfMonth、byte month、byte year){/ /日時データをDS3231に設定Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); //次の入力を秒レジスタで開始するように設定しますWire.write(decToBcd(second)); //秒を設定しますWire.write(decToBcd(minute)); //分を設定しますWire.write(decToBcd(hour)); //時間を設定しますWire.write(decToBcd(dayOfWeek)); //曜日を設定します(1 =日曜日、7 =土曜日)Wire.write(decToBcd(dayOfMonth)); //日付を設定します(1から31)Wire.write(decToBcd(month)); //月を設定しますWire.write(decToBcd(year)); //年を設定(0〜99)Wire.endTransmission();} void getDateDs3231(byte * second、byte * minutes、byte * hour、byte * dayOfWeek、byte * dayOfMonth、byte * month、byte * year){Wire。 beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS、7); *秒=bcdToDec(Wire.read()&0x7f); *分=bcdToDec(Wire.read()); *時間=bcdToDec(Wire.read()&0x3f); * dayOfWeek =bcdToDec(Wire.read()); * dayOfMonth =bcdToDec(Wire.read()); *月=bcdToDec(Wire.read()); * year =bcdToDec(Wire.read());} float get3231Temp(){byte tMSB、tLSB;フロートtemp3231; Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0x11); Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS、2); if(Wire.available()){tMSB =Wire.read(); // 2の補数int部分tLSB =Wire.read(); //小数部temp3231 =(tMSB&B01111111); // Tmsbで2の計算を行いますtemp3231 + =((tLSB>> 6)* 0.25); //ビット7と8のみを気にしますreturntemp3231; } else {//ああ、データはありません! Serial.println( "DS3231センサーエラー-温度を読み取れません"); matrix.print(0xBEEF、HEX); // BEEF matrix.writeDisplay();でユーザーに通知しますdelay(5000); }} 
MyClock v1.1 C / C ++
Summer / Winter-Time
 // MyClock v1.1 // Ingo Lohs //ハードウェアの更新:Arduino IDE v1.8.8 // Changev1.0を使用してArduinoUnoおよびArduinoNano(ATmega328P [Old Bootloader])でテスト済み> v1.1 // dayOfWeek ==1anstatt7abgeändertinthedisplayTime()zur korrektenErmittlungdesSonntagesfürdieZeitumstellung/ *マトリックスの理論ht16k33最も簡単なのは、Serialprint(variable、HEX)の場合と同じようにprintを呼び出すことです。 -これは、0000からFFFFprint(variable、DEC)またはprint(variable)までの16進数を出力します-これは、0000から9999までの10進数を出力します。さらに制御が必要な場合は、writeDigitNum(location、number)を呼び出すことができます。 -これにより、番号(0-9)が1つの場所に書き込まれます。場所#0は左端、場所#2はコロンドットであるため、スキップする必要があります。場所#4は最後までです。右。コロンと小数点を制御するには、writeDigitRaw(location、bitmap)関数を使用します(中央のコロンの両方のドットがで一緒に配線されていることに注意してください)ディスプレイの内部にあるため、個別にアドレス指定することはできません。)場所に2を指定すると、ビットは次のようにマップされます:0x02-中央のコロン(両方のドット)0x04-左のコロン-下のドット0x08-左のコロン-上のドット0x10 -小数点小数点が必要な場合は、writeDigitNum(location、number、true)を呼び出して小数点を描画します。コロンを描画するには、drawColon(trueまたはfalse)を使用します。すべての桁のセグメントを完全に制御する場合は、 writeDigitRaw(location、bitmask)を呼び出して、生の8ビットマスク(uint8_tに格納されている)を任意の場所に描画できます。すべての描画ルーチンは、Arduinoが保持する表示メモリのみを変更します。 I2Cを介してメモリをマトリックスに「保存」するために描画した後、writeDisplay()を呼び出すことを忘れないでください。出典:https://www.mouser.com/ds/2/737/adafruit-led-backpack-932846。 pdf * /#include  // Arduino Uno、Megaなどを使用している場合はこの行を有効にします。#include  #include "Adafruit_LEDBackpack.h" #define DS3231_I2C_ADDRESS 0x68int ldr_sensor =A0; // GNDに対して100kオームのLDRフォトレジスタ、他のレッグ5Vint ldr_value =0; // LDR値-varstore valueint bright_matrix; // LEDマトリックスの明るさ-varstore valueint threshold_brightness =400; // Thresholdint brightrate_value =0; // LEDマトリックスの点滅率intdelay_matrix_time =20; //表示時間(20秒)int delay_matrix_temp =2000; //表示温度の長さ(2秒)intblinky_dot =2; //何も点滅しません-左側に2つの単一ドットAdafruit_7segmentmatrix =Adafruit_7segment(); byte decToBcd(byte val){return((val / 10 * 16)+(val%10));} byte bcdToDec(byte val){ return((val / 16 * 10)+(val%16));} void setup(){Serial.begin(9600); Wire.begin(); matrix.begin(0x70);} void loop(){lightBrightness(); //マトリックス-明るさJustierungmatrixBlinkrate(); // Mattrix-Blinkrate Jusitierung displayTime(); //リアルタイムクロックデータを表示しますdisplayTemp(); //温度を表示します} void lightBrightness(){// setBrightness(brighness)-ディスプレイ全体の全体的な明るさを変更できます。 0は最も明るく、15は最も明るく、ldr_value =analogRead(ldr_sensor);を開始したときにディスプレイによって初期化されるものです。 Serial.print( "LDR:"); Serial.println(ldr_value); if(ldr_value <=threshold_brightness){//明るさの測定としきい値brightness_matrix =0; //日光の下で明るい} else {brightness_matrix =15; //夜は暗い}} void matrixBlinkrate(){// brightRate(rate)-ディスプレイ全体を点滅させることができます。 0は点滅していません。 1、2、または3は、ディスプレイの点滅用です。 matrix.blinkRate(blinkrate_value);} void displayTime(){matrix.setBrightness(brightness_matrix); matrix.clear(); //マトリックスの表示時間(秒)for(uint16_t i =0; i >夏時間に変更-3月の最後の日曜日の2時if((dayOfWeek ==1)&&(dayOfMonth> =25)&&(month ==3)&&(hour ==2)){//nastaveníhodinna3 hodinu //時計を3時間に設定setDS3231time(se、mi、3、we、dm、mo、ye); } //změnačanazimní//>>冬時間に変更if((dayOfWeek ==1)&&(dayOfMonth> =25)&&(month ==10)&&(hour ==1)&&(year!=1 )){//rokpoužitjakoindikace、žebyloléto//夏のことを示すために使用される年setDS3231time(se、mi、ho、we、dm、mo、1); } if((dayOfWeek ==1)&&(dayOfMonth> =25)&&(month ==10)&&(hour ==3)&&(year ==1)){//nastaveníhodinna2hodinuapříznakna0 //時計を2時間に設定し、年に0をフラグ付けしますsetDS3231time(se、mi、2、we、dm、mo、0); } / *場所に2を指定すると、ビットは次のようにマップされます。0x02-中央のコロン(両方のドット)0x04-左のコロン-下のドット0x08-左のコロン-上のドット0x10-小数点* / / *場所#2のコントロールまた、左の2つの単一ポイントは次のようになります(=blinky_dot):2 =何も点滅しない3 =何も点滅しない4 =左上に点滅(単一の上部ドット)5 =左上に点滅(単一の上部ドット)6 =左上に点滅(単一の上部ドット) )+ 7の中央の両方のコロン=左上の点滅(1つの上のドット)+ 8の中央の両方のコロン=左下の点滅(1つの下のドット)9 =左下の点滅(1つの下のドット)10 =左下の点滅(1つの下のドット) )+11の半ばに両方のコロン=左下に点滅(単一の下のドット)+ 12の中央に両方のコロン=中央に両方のコロンなしで両方のコロン(両方の単一のドットが左)を点滅* / //フォーマット時間:_0:mm if(hour> 9){matrix.writeDigitNum(0、(hour / 10)、false); matrix.writeDigitNum(1、(時間%10)、false); //これは、モジュロhttps://www.arduino.cc/reference/en/language/structure/arithmetic-operators/modulo/} else {matrix.writeDigitNum( 1、時間、false); } // matrix.drawColon(true); //両方のコロンがアクティブになっている:左のドットを点滅させたくない場合は、ここで両方のコロンをアクティブにすることができます//秒に左の位置にドットを表示する機会を与えますif(se <=30){blinky_dot =10; //左下を点滅します(単一の下のドット)+中央に両方のコロン} else if(se> 30){blinky_dot =6; //左上を点滅します(単一の上部ドット)+中央の両方のコロン} matrix.writeDigitRaw(2、blinky_dot); matrix.writeDigitNum(3、(分/ 10)、false); matrix.writeDigitNum(4、(分%10)、false); matrix.writeDisplay(); //点滅する二重ドットで0.5秒delay(500); matrix.drawColon(false); matrix.writeDisplay(); delay(500); }} void displayTemp(){matrix.setBrightness(brightness_matrix); matrix.clear();バイト温度=get3231Temp(); int abs_temp =abs(temp); //値の絶対数matrix.writeDigitNum(1、(abs_temp%10)、false); //位置1、値9、小数点以下を表示)if(temp <0)matrix.writeDigitRaw(0,64); if(temp <=-10)matrix.writeDigitRaw(2,12); //温度が負の場合、マイナス記号を最初にプロットします。 if(temp>
 =10)matrix.writeDigitNum(0、(abs_temp / 10)、false); //位置0、値1、小数点以下を表示)if(temp <=-10)matrix.writeDigitNum(0、(abs_temp / 10)、false); //位置0、値1、小数点以下を表示)// matrix.writeDigitRaw(2,0x10); // 10進数のドットmatrix.writeDigitRaw(3,99); // 99 ="°" matrix.writeDigitRaw(4,57); // 57 ="C" matrix.writeDisplay(); //シリアルラインに温度値を表示します//zobrazíhodnotyteplotynaseriove lince Serial.print( "Temperatur in C:"); Serial.println(get3231Temp()); // +/- 3 Grad Celsius //マトリックスの表示温度の長さ(秒)delay(delay_matrix_temp);} void setDS3231time(byte second、byte minutes、byte hour、byte dayOfWeek、byte dayOfMonth、byte month、byte year){/ /日時データをDS3231に設定Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); //次の入力を秒レジスタで開始するように設定しますWire.write(decToBcd(second)); //秒を設定しますWire.write(decToBcd(minute)); //分を設定しますWire.write(decToBcd(hour)); //時間を設定しますWire.write(decToBcd(dayOfWeek)); //曜日を設定します(1 =日曜日、7 =土曜日)Wire.write(decToBcd(dayOfMonth)); //日付を設定します(1から31)Wire.write(decToBcd(month)); //月を設定しますWire.write(decToBcd(year)); //年を設定(0〜99)Wire.endTransmission();} void getDateDs3231(byte * second、byte * minutes、byte * hour、byte * dayOfWeek、byte * dayOfMonth、byte * month、byte * year){Wire。 beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS、7); *秒=bcdToDec(Wire.read()&0x7f); *分=bcdToDec(Wire.read()); *時間=bcdToDec(Wire.read()&0x3f); * dayOfWeek =bcdToDec(Wire.read()); * dayOfMonth =bcdToDec(Wire.read()); *月=bcdToDec(Wire.read()); * year =bcdToDec(Wire.read());} float get3231Temp(){byte tMSB、tLSB;フロートtemp3231; Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0x11); Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS、2); if(Wire.available()){tMSB =Wire.read(); // 2の補数int部分tLSB =Wire.read(); //小数部temp3231 =(tMSB&B01111111); // Tmsbで2の計算を行いますtemp3231 + =((tLSB>> 6)* 0.25); //ビット7と8のみを気にしますreturntemp3231; } else {//ああ、データはありません! Serial.println( "DS3231センサーエラー-温度を読み取れません"); matrix.print(0xBEEF、HEX); // BEEF matrix.writeDisplay();でユーザーに通知しますdelay(5000); }} 
Github
https://github.com/ILohs/MySketches

回路図

LDRパスが修正されました

製造プロセス

  1. Arduinoハメ撮りビジョンクロック
  2. Arduinoを使用したDIYの最もシンプルなIV9Numitron時計
  3. Adafruit 1/460リングネオピクセルを使用したシンプルな掛け時計
  4. イスラムの祈りの時間とArduino時計
  5. マスタークロック
  6. ArduinoTemp。 3.2ディスプレイを備えたモニターとリアルタイムクロック
  7. Arduino Nano:ジョイスティックで2つのステッピングモーターを制御
  8. Arduino Apple Watch
  9. 7セグメントアレイクロック
  10. ArduinoNanoを搭載したハンドヘルドガイガーカウンター
  11. DS1302RTCを備えたシンプルな目覚まし時計