Arduino Nano Clock with 4x64 LED Matrix(new version)
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 |
アプリとオンラインサービス
> ![]() |
|
このプロジェクトについて



数メートルの部屋で時計のディスプレイを読み取るには、そのようなLEDマトリックスディスプレイが必要です。
手頃な価格で4セルのディスプレイを購入したので、利用可能なプロジェクトについてHacksterを探しました。ArduinoNanoにはいくつかのプロジェクトがあります。時間、分、秒を同時に表示したい場合:1桁あたり5x7ピクセルの広く利用可能なものよりも小さい桁が必要なため、機能するプロジェクトはごくわずかです。 MD_Parolaライブラリを使用するオプションもありますが、単純なクロックにはコードサイズが大きすぎます。テストされた他のオプションはMax72xxPanelライブラリでしたが、これは古すぎて他のライブラリを呼び出します。最後に、このプロジェクトは、他のすべてに含まれている基本的なインターフェイスライブラリMD_MAX722XXに基づいています。
このサイトからのコメントで、ハードウェアの側面とコードを確認しました。
-DS3231と呼ばれる多くのライブラリがあります。私はこれを使用します:http://www.rinkydinkelectronics.com/library.php?id =73
DS3231 I2CリアルタイムクロックのArduino / chipKitライブラリのサポートCopyright(C)2015 Rinky-Dink Electronics、HenningKarlsen。無断複写・転載を禁じます
-最初:LEDマトリックスディスプレイ。市場にはいくつかのモデルがあるため、このコードをアップロードした後、ディスプレイに奇妙なものが表示される可能性が非常に高くなります。解決策:「MD_MAX72xx_lib.h」ライブラリからこの例をアップロードします:「MD_MAX72xx_HW_Mapper.ino」そしてハードウェアモデルを見つけます。私のコードでは、モデルは次のように定義されています:#define HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HWですが、適切なモデルを設定するまで、これは機能しない可能性があります!
-最近、素敵な小さな秒が表示されませんでしたか?現在(v2)、これらの秒のフォントがコードに含まれているため、他のライブラリを変更する必要はありません。
-Arduinoのアップデートにより、長いコンパイル警告リストが発生しました。現在、月は2次元のchar配列にあり、ポインターを使用していません。その他の警告はDS3231.hライブラリからのものですが、無視してかまいません。
-点滅するドットが2ドットになりました! 「hh:mm」の後に、3x5フォントを使用して正確な秒数が表示されます。さらに、列のドット「:」は、生きていることを示すために、ほぼ1秒間に2回点滅しています。
-リクエストへの回答:時刻は毎分53秒間表示され、最後の7秒間は日付と温度が表示されます。
-loop()の2行のコメントを解除すると、曜日も表示できます。この場合、53秒の間隔を51秒に短縮することをお勧めします。
-12時間形式をご希望の場合は、私の古い回答の1つをご覧ください。
-RTC時間は、入力領域DD / MM / YYYY hh:mm:ss(間のスペースを忘れないでください)に書き込み、Enter / Sendを押すことでArduinoシリアルモニターで設定できます。これは、USBケーブルが接続されていて、シリアルモニターが機能している(正しいCOMとボーレート)場合はいつでも実行できます。
新しいコードは変数に13558バイト(44%)と372バイト(18%)を使用するため、少し短くなります!
日付は「ddMon」、室温は度で表示されます。摂氏(RTC内部センサーを使用して推定)は別のページに表示されます。明るさはフォトレジスターによって制御されます。ただし、コードは光センサーがなくても機能します。
「リスペクト」ボタンで表示されますので、ご関心をお寄せいただきありがとうございます。
コード
- 旧バージョン-ArduinoNano DotMatrixクロック
- 新しいバージョン(v2)-Arduino Nano DotMatrixクロック
旧バージョン-ArduinoNano DotMatrixクロック Arduino
最初のリリース以降、多くのライブラリが変更されたため、このコードは廃止されました。新しいバージョンを使用するすべての接続はコードで説明されています。小さいフォントの場合は、コードで説明されているように、MD_MAX72xx_font.cppの数行を変更します。/ *警告:初期コードは廃止されました。新しいものを使用してください(バージョン2)* LED Matrix 4x(8x8)SPIを備えたArduino NanoDS3231クロック** Arduino Nano5Vロジック-32kBプログラム。スペース*ツール:ボード:Arduino Nano;プロセッサー:ATmega328P(旧ブートローダー)!! *右側にコネクターを備えたLEDマトリックス4x(8x8)SPI(最後のモジュール)* https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html?rmmds =myorder&cur_warehouse =CN * *接続:*>> LCD 4x64-> Arduino Nano :(ハードウェアSPIを使用):* 5V-> 5Vピン* GND-> GND pin * CLK_PIN-> 13 //またはSCK * DATA_PIN-> 11 //またはMOSI * CS_PIN-> 10 //またはSS * *>> DS3231 RTC-> Arduino Nano:* SDA(DAT)-> A4 * SCL( CLK)-> A5 *インスピレーション:1)AnthoTRONICSによるArduinoクロック最終編集:2019年3月22日*ただし、フットプリントが大きいため、MD_parolaはありません!新しいgetdate関数。* 2)plouc68000によるこれまでで最もシンプルなUNOデジタル時計:* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref =user&ref_id =680368&offset =1 * 3)Leonardo SposinaによるLEDDotMatrixClock.ino、ただしここでは「Max72xxPanel.h」なし* https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino*使用しないMax72xxPanel.hですが、小さいサイズの数字が使用されます。ここに小さなフットプリントのコードがあります。*ライブラリMD_MAX72XX / src / MD_MAX72xx_font.cppで置き換えます:* 1)#define USE_NEW_FONT 1 * 2)フォント#148 ... 158を3x5フォントに置き換える必要があります:3、248、136、248、/ / 48 0 3、144、248、128、// 49 1 3、200、168、184、// 50 2 3、136、168、248、// 51 3 3、112、72、224、// 52 4 3、184、168、232、// 53 5 3、248、168、232、// 54 6 3、8、232、24、// 55 7 3、248、168、248、// 56 8 3 、184、168、248、// 57 9 1、80、// 58:* *プロジェクト:13790バイト(44%);変数361バイト(17%)*作成者:MVP https://www.hackster.io/MVP*/#include#include "DS3231.h" #include "MD_MAX72xx_lib.h" //#include " Font_Data.h "DS3231 rtc(SDA、SCL); //リアルタイムclockconstバイトLDR_PIN =A2; // LDRセンサーpin#define MAX_DEVICES 4 //ピンを定義#defineCLK_PIN 13 //またはSCK#define DATA_PIN 11 //またはMOSI#define CS_PIN 10 //またはSS#define HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HW#define USE_NEW_FONT 1#define BUF_SIZE 20 //テキストバッファサイズ#defineCHAR_SPACING 1 //文字間のピクセルcharbuf [BUF_SIZE]、secs [4]; uint8_tドット; // SPIハードウェアインターフェイス// Max72xxPanelマトリックス=Max72xxPanel(CS_PIN、H_DISPLAYS、V_DISPLAYS); MD_MAX72XXマトリックス=MD_MAX72XX(HARDWARE_TYPE、CS_PIN、MAX_DEVICES); const byte WAIT =100; const byte SPACER =1; byte FONT_WIDTH; bool timeset =false; void AdjustClock(String data){byte _day =data.substring(0,2).toInt (); byte _month =data.substring(3,5).toInt(); int _year =data.substring(6,10).toInt(); byte _hour =data.substring(11,13).toInt();バイト_min =data.substring(14,16).toInt();バイト_sec =data.substring(17,19).toInt(); rtc.setTime(_hour、_min、_sec); rtc.setDate(_day、_month、_year); Serial.println(F(>>>日時が正常に設定されました! ")); timeset =true;} byte ledintensitySelect(int light){byte _value =0; if(light> =0 &&light <=127){_ value =12; } else if(light> =128 &&light <=319){_ value =3; } else if(light> =320 &&light <=512){_ value =0; } return _value;}; void printText(uint8_t modStart、uint8_t modEnd、char * pMsg)//指定されたLEDマトリックスモジュールにテキスト文字列を出力します。//印刷後、メッセージ領域に空白の列が埋め込まれます。{uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf [FONT_WIDTH]; int16_t col =((modEnd + 1)* COL_SIZE)-1; matrix.control(modStart、modEnd、MD_MAX72XX ::UPDATE、MD_MAX72XX ::OFF); do //有限状態マシンを使用して、使用可能なスペースに文字を出力します{switch(state){case 0://フォントテーブルから次の文字をロードします//メッセージの終わりに達した場合は、メッセージポインタをリセットしますif(* pMsg =='\ 0'){showLen =col-(modEnd * COL_SIZE); //文字のパディングstate =2;壊す; } //フォントファイルから次の文字を取得showLen =matrix.getChar(* pMsg ++、sizeof(cBuf)/ sizeof(cBuf [0])、cBuf); curLen =0;状態++; // !!意図的に次の状態にフォールスルーして、ケース1の表示を開始します。//文字matrix.setColumn(col-、cBuf [curLen ++]);の次の部分を表示します。 //フォント文字で完了し、文字間のスペースを表示するようになりましたif(curLen ==showLen){showLen =CHAR_SPACING;状態=2; } 壊す;ケース2://空の列を表示するための状態を初期化しますcurLen =0;状態++; //ケース3に該当します://文字間の間隔またはメッセージの終わりのパディング(空白の列)を表示しますmatrix.setColumn(col-、0); curLen ++; if(curLen ==showLen)state =0;壊す;デフォルト:col =-1; //これでdoループが確実に終了します}} while(col> =(modStart * COL_SIZE)); matrix.control(modStart、modEnd、MD_MAX72XX ::UPDATE、MD_MAX72XX ::ON);} void setup(){pinMode(LDR_PIN、INPUT_PULLUP); Serial.begin(9600); Serial.println(F( ">> Arduino 32x8 LEDドットマトリックスクロック!")); Serial.println(F(>>> 形式を使用して時計の日付と時刻を設定します! ")); rtc.begin(); matrix.begin(); matrix.clear(); FONT_WIDTH =5+スペーサー; //フォント幅は5ピクセルですmatrix.control(MD_MAX72XX ::INTENSITY、2);; //明るさには0〜15の値を使用します} void getDate()//日付の設定:時計の日付を読み取るためのコード{char * months [] ={"Jan"、 "Feb"、 "Mar"、 "Apr"、 "5月"、 "6月"、 "7月"、 "8月"、 "9月"、 "10月"、 "11月"、 "12月"};文字列dts =rtc.getDateStr(); // dd / mm / yyyy文字列を取得しますStringdds =dts.substring(0,2); //日付文字列を抽出しますmms =dts.substring(3,5); //月を抽出しますintmm =mms.toInt(); //月番号に変換しますdds.concat( ""); dds.concat(String(months [mm-1])); //日付文字列を "dd Mmm"として再構築しますdds.toCharArray(buf、sizeof(buf)); //バッファを返す} void getHour()//日付の設定:時計の日付を読み取るためのコード{String dts =rtc.getTimeStr(); // hh:mm:ss文字列を取得しますString hhs =dts.substring(0,2); //時間を抽出しますinthh =hhs.toInt(); //数値に変換if(hh <10)dots =7; if(hh> 19 &&hh <24)ドット=13; if((hh> 9 &&hh <20)||(hh ==21))dots =11; if(hh ==1)ドット=5; if(hh ==11)ドット=10; // String outmsg =dts.substring(0,5); // hh:mmを抽出します(オプション)String outmsg =String(hh); // h <10の場合はhを抽出しますoutmsg.concat( ":"); //追加:outmsg.concat(dts.substring(3,5)); // mm outmsg.toCharArray(buf、BUF_SIZE);} void showec(){String dts =rtc.getTimeStr();を追加します// hh:mm:ss文字列を取得しますString scs1 =dts.substring(6,7);文字列scs2 =dts.substring(7); char sc1 =148 + scs1.toInt(); // charのインデックスに変換charsc2 =148 + scs2.toInt(); // charのインデックスに変換matrix.setChar(6、sc1); matrix.setChar(2、sc2);} void loop(){バイトledIntensity =ledintensitySelect(analogRead(LDR_PIN)); matrix.control(MD_MAX72XX ::INTENSITY、ledIntensity);; //明るさには0から15までの値を使用します// buf getHour();からhh:mmを表示しますprintText(0、MAX_DEVICES-1、buf); delay(WAIT); // 2つのドットを点滅させる:for(uint8_t i =0; i <8; i ++){matrix.setColumn(MAX_DEVICES * 8-dots、36); showec(); delay(250); matrix.setColumn(MAX_DEVICES * 8-ドット、0); showec(); delay(250); } //上にスクロールして終了します:for(uint8_t i =0; i <8; i ++){matrix.transform(MD_MAX72XX ::TSU); delay(2 * WAIT); delay(WAIT); } getDate(); printText(0、MAX_DEVICES-1、buf); delay(20 * WAIT); int temp =rtc.getTemp(); temp =temp-1; //オフセット-1C String outmsg =String(temp); outmsg.concat( "C"); outmsg.toCharArray(buf、BUF_SIZE); printText(0、MAX_DEVICES-1、buf); delay(20 * WAIT); // RTCでの時間設定:if(Serial.available()> 0 &×et ==false){adjustClock(Serial.readString()); }}
新しいバージョン(v2)-Arduino Nano DotMatrixクロック Arduino
新しいライブラリに従って更新されました。/ * LED Matrix 4x(8x8)SPIを備えたArduino NanoDS3231クロック*バージョン2-更新された15/05 / 2-21 * Arduino Nano5Vロジック-32kBプログラム。スペース*ツール:ボード:Arduino Nano;プロセッサー:ATmega328P(旧ブートローダー)!! *右側にコネクターを備えたLEDマトリックス4x(8x8)SPI(最後のモジュール)* https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html?rmmds =myorder&cur_warehouse =CN * *接続:*>> LCD 4x64-> Arduino Nano :(ハードウェアSPIを使用):* 5V-> 5Vピン* GND-> GND pin * CLK_PIN-> 13 //またはSCK * DATA_PIN-> 11 //またはMOSI * CS_PIN-> 10 //またはSS * *>> DS3231 RTC-> Arduino Nano:* SDA(DAT)-> A4 * SCL( CLK)-> A5 *インスピレーション:1)AnthoTRONICSによるArduinoクロック最終編集:2019年3月22日*ただし、フットプリントが大きいため、MD_parolaはありません!新しいgetdate関数。* 2)plouc68000によるこれまでで最もシンプルなUNOデジタル時計:* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref =user&ref_id =680368&offset =1 * 3)Leonardo SposinaによるLEDDotMatrixClock.ino、ただしここでは「Max72xxPanel.h」なし* https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino*使用しないMax72xxPanel.hですが、小さいサイズの数字が使用されます。ここに小さなフットプリントのコードがあります。**プロジェクト:113558バイト(44%);変数372バイト(17%)*作成者:MVP https://www.hackster.io/MVP*/#include#include "DS3231.h" #include "MD_MAX72xx_lib.h" //#include " Font_Data.h "DS3231 rtc(SDA、SCL); //リアルタイムclockconstバイトLDR_PIN =A2; // LDRセンサーpin#define MAX_DEVICES 4 //ピンを定義#defineCLK_PIN 13 //またはSCK#define DATA_PIN 11 //またはMOSI#define CS_PIN 10 //またはSS // LEDマトリックスハードウェアモデルの下に定義://# define HARDWARE_TYPE MD_MAX72XX ::ICSTATION_HW#define HARDWARE_TYPE MD_MAX72XX ::FC16_HW#define USE_NEW_FONT 1#define BUF_SIZE 20 //テキストバッファサイズ#defineCHAR_SPACING 1 //文字間のピクセルcharbuf [BUF_SIZE]、secs [4]、uint8_ ss、dots; //小さいフォントの定義:uint8_tFont3x5 [10] [3] ={{248、136、248}、// 48 0 {144、248、128}、// 49 1 {200、168 、184}、// 50 2 {136、168、248}、// 51 3 {112、72、224}、// 52 4 {184、168、232}、// 53 5 {248、168、232 }、// 54 6 {8、232、24}、// 55 7 {248、168、248}、// 56 8 {184、168、248}}; // 579文字か月[12] [4] ={"Jan"、 "Feb"、 "Mar"、 "Apr"、 "May"、 "Jun"、 "Jul"、 "Aug"、 "Sep"、 " Oct "、" Nov "、" Dec "}; char * wday; // SPIハードウェアインターフェイス// Max72xxPanelマトリックス=Max72xxPanel(CS_PIN、H_DISPLAYS、V_DISPLAYS); MD_MAX72XXマトリックス=MD_MAX72XX(HARDWARE_TYPE、CS_PIN、MAX_DEVICES); const byte WAIT =100; const byte SPACER =1; byte FONT_WIDTH; bool timeset =false; void AdjustClock(String data){byte _day =data.substring(0,2).toInt(); byte _month =data.substring(3,5).toInt(); int _year =data.substring(6,10).toInt(); byte _hour =data.substring(11,13).toInt();バイト_min =data.substring(14,16).toInt();バイト_sec =data.substring(17,19).toInt(); rtc.setTime(_hour、_min、_sec); rtc.setDate(_day、_month、_year); Serial.println(F(>>>日時が正常に設定されました! ")); timeset =true;} byte ledintensitySelect(int light){byte _value =0; if(light> =0 &&light <=127){_ value =12; } else if(light> =128 &&light <=319){_ value =3; } else if(light> =320 &&light <=512){_ value =0; } return _value;}; void printText(uint8_t modStart、uint8_t modEnd、char * pMsg)//指定されたLEDマトリックスモジュールにテキスト文字列を出力します。//印刷後、メッセージ領域に空白の列が埋め込まれます。{uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf [FONT_WIDTH]; int16_t col =((modEnd + 1)* COL_SIZE)-1; matrix.control(modStart、modEnd、MD_MAX72XX ::UPDATE、MD_MAX72XX ::OFF); do //有限状態マシンを使用して、使用可能なスペースに文字を出力します{switch(state){case 0://フォントテーブルから次の文字をロードします//メッセージの終わりに達した場合は、メッセージポインタをリセットしますif(* pMsg =='\ 0'){showLen =col-(modEnd * COL_SIZE); //文字のパディングstate =2;壊す; } //フォントファイルから次の文字を取得showLen =matrix.getChar(* pMsg ++、sizeof(cBuf)/ sizeof(cBuf [0])、cBuf); curLen =0;状態++; // !!意図的に次の状態にフォールスルーして、ケース1の表示を開始します。//文字matrix.setColumn(col-、cBuf [curLen ++]);の次の部分を表示します。 //フォント文字で完了し、文字間のスペースを表示するようになりましたif(curLen ==showLen){showLen =CHAR_SPACING;状態=2; } 壊す;ケース2://空の列を表示するための状態を初期化しますcurLen =0;状態++; //ケース3に該当します://文字間の間隔またはメッセージの終わりのパディング(空白の列)を表示しますmatrix.setColumn(col-、0); curLen ++; if(curLen ==showLen)state =0;壊す;デフォルト:col =-1; //これでdoループが確実に終了します}} while(col> =(modStart * COL_SIZE)); matrix.control(modStart、modEnd、MD_MAX72XX ::UPDATE、MD_MAX72XX ::ON);} void setup(){pinMode(LDR_PIN、INPUT_PULLUP); Serial.begin(9600); Serial.println(F( ">> Arduino 32x8 LEDドットマトリックスクロック!")); Serial.println(F(>>> 形式を使用して時計の日付と時刻を設定します! ")); rtc.begin(); matrix.begin(); matrix.clear(); FONT_WIDTH =5+スペーサー; //フォント幅は5ピクセルですmatrix.control(MD_MAX72XX ::INTENSITY、2);; //明るさには0から15までの値を使用しますrtc.setDOW(); //新しいRTCに必要} void getDate()//日付の設定:時計の日付を読み取るためのコード{String dts =rtc.getDateStr(); // dd / mm / yyyy文字列を取得しますStringdds =dts.substring(0,2); //日付文字列を抽出しますmms =dts.substring(3,5); //月を抽出しますintmm =mms.toInt(); //月番号に変換しますdds.concat( ""); dds.concat(String(months [mm-1])); //日付文字列を "dd Mmm"として再構築しますdds.toCharArray(buf、sizeof(buf)); //バッファを返すwday =rtc.getDOWStr(2);} void getHour()//日付設定:クロック日付を読み取るためのコード{String dts =rtc.getTimeStr(); // hh:mm:ss文字列を取得しますString hhs =dts.substring(0,2); //時間文字列を抽出しますmms =dts.substring(3,5); //分を抽出しますhh =hhs.toInt(); //数値に変換mm =mms.toInt(); //数値に変換しますmmss =(dts.substring(6,8))。toInt(); //秒を数値として抽出if(hh> =0 &&hh <10)dots =7; if(hh> 9 &&hh <20)ドット=11; if(hh> 19 &&hh <25)ドット=13; if(hh%10 ==1)ドット-=2; // String outmsg =dts.substring(0,5); // hh:mmを抽出します(オプション)String outmsg =String(hh); // h <10の場合はhを抽出します//outmsg.concat( ":"); //:を追加しますが、2列に!! outmsg.concat(char(124)); //数値の間に1つの完全な列を追加しますoutmsg.concat(dts.substring(3,5)); // mm outmsg.toCharArray(buf、BUF_SIZE);} //小さな埋め込みフォントを使用した新しいバージョンの関数voidshowsec(uint8_t secs){uint8_t secs1 =secs%10; uint8_t secs2 =secs / 10; for(uint8_t k =0; k <3; k ++){matrix.setColumn(MAX_DEVICES * 8-26-k、Font3x5 [secs2] [k]); matrix.setColumn(MAX_DEVICES * 8-30-k、Font3x5 [secs1] [k]); }} void loop(){byte ledIntensity =ledintensitySelect(analogRead(LDR_PIN)); matrix.control(MD_MAX72XX ::INTENSITY、ledIntensity);; //明るさには0から15までの値を使用しますgetHour(); // RTCから時間を読み取りますprintText(0、MAX_DEVICES-1、buf); // bufからhh | mmを表示matrix.setColumn(MAX_DEVICES * 8-dots、0); // |をクリアしますunsigned long inst =millis(); //この瞬間をマークwhile(ss <53){//毎分の最初の53秒の表示時間while(millis()-inst> 1000){inst =millis(); ss ++; //秒を増やしますshowsec(ss); //(uint8_t i =0; i <2; i ++){matrix.setColumn(MAX_DEVICES * 8-dots、36);の秒数を表示します// 2つのドットを点滅させる:delay(240); matrix.setColumn(MAX_DEVICES * 8-ドット、0); delay(240); }}} //次に、「時間」は上にスクロールします。for(uint8_t i =0; i <8; i ++){matrix.transform(MD_MAX72XX ::TSU); delay(3 * WAIT); } //現在の日付を書き込みます:getDate(); printText(0、MAX_DEVICES-1、buf); delay(20 * WAIT); //曜日を書き込みます(コメントされていない場合):// printText(0、MAX_DEVICES-1、wday); // delay(20 * WAIT); // RTCセンサーから推定室温を書き込みますinttemp =rtc.getTemp(); temp =temp-1; //オフセット-1C String outmsg =String(temp); outmsg.concat( "C"); outmsg.toCharArray(buf、BUF_SIZE); printText(0、MAX_DEVICES-1、buf); delay(20 * WAIT); // Arduino IDEでシリアルモニターがアクティブになっている場合のRTCでの時間設定:if(Serial.available()> 0 &×et ==false){adjustClock(Serial.readString()); }}
回路図
Leonardo Sposinaに触発されましたが、#define CS_PIN(Matrix)<-> 10(Nano)
回路図面は、すべてのMatrixプロジェクトでほぼ同じです。こちらはフォトレジスターがオリジナルです。コードに記載されているように:#define CS_PIN(Matrix)<-> 10(Nano)https://github.com/leonardosposina/arduino-led-dot-matrix-clock製造プロセス
- イスラムの祈りの時間とArduino時計
- ArduinoTemp。 3.2ディスプレイを備えたモニターとリアルタイムクロック
- LEDを制御するBluetoothを搭載したArduino!
- Nextionディスプレイで遊ぶ
- LEDマトリックス+モーションセンサードアディスプレイ[ArduinoHoliday]
- Arduino Nano:ジョイスティックで2つのステッピングモーターを制御
- シングルLEDマトリックスArduinoフリップクロック
- ArduinoUnoでLEDマトリックスを制御する
- ArduinoNanoを搭載したハンドヘルドガイガーカウンター
- スマートディスプレイを備えたスマートバッテリー充電器マルチプレクサ
- リアルタイムクロック付きArduinoOLED温度ディスプレイ