イタリア語の単語時計
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
Arduinoの時計への情熱から、「ワードクロック」を作るようになりました。私はイタリアに住んでいるので、イタリア語で話しました。プロジェクトを実現するために、チュートリアル「Word Clock Javelin」に触発され、いくつかの小さな変更を加えました...そしてここに「WordClockofItaly」があります!
イタリア語で「時間を教えて」に加えて、家族(猫を含む)の誕生日を追加したいと思いました。 「フレームワーク」の構築には、IKEA製のものを使用し、内部の変更には、自宅にある素材を使用しました。
<図><図>
画面を実現するために、Inkscapeで描かれたパターンが表示されます。
私のパネルは、200mmのフットプリントで12x12文字を測定します。私は3Dプリンターを持っていないので、アルミニウムストリップでグリッドを作成し、LEDと接着スポンジの接触を分離しました。これは、光を分離するのにも役立ちました。
電子回路 <図>
<図>
<図>
<図>
<図>
時間を保つために、私は RTC を使用しました 。
時刻を調整できるように、ボタン(P1、P2、P3)と16 x 2の表示を追加しました(プロジェクト「時計の日付時刻の設定」も参照)。配線図からわかるように、ボタンはプルダウンを介してArduinoに接続されています 回路。
ディスプレイは時刻を調整するだけなので、ジャンパーをボタンに交換しました 、そうすることによって、それはその使用にのみ照らします。ダイオードD1は逆極性保護として機能します。
ダイオードD2は、何らかの理由でスケッチArduinoを変更する必要がある場合に、ネオピクセルストリップに給電しないように機能します(電流が多すぎると損傷する可能性があります)。ダイオードD3は、Neopixelの電圧である5ボルトをもたらす働きをします。
回路図、フリッツ方式、PCBレイアウトを添付しています。
マトリックス <図>
<図>
<図>
<図>
マトリックスを実現するために、私はさまざまなストリップを写真のように接続しました。左上から下にジグザグに移動します。
Arduino Libreries
- RTC
- LiquidCrystal_I2C
- Adafruit_NeoPixel
コードの説明
コードは5つの主要部分に分かれています:
- "DisplayDateTime":液晶ディスプレイに日付と時刻を表示します
- 「HourClock」:パネルに時間を表示します
- 「MinuteClock」:パネルに分を表示します
- 「オーグリ」:お誕生日おめでとう
- 「VoidpaintWord(arrWord int []、uint32_t intColor)」はネオピクセルをオンにするコードの中心であり、「arrWord int []」はLEDが点灯する必要があり、「uint32_tintColor」はその色です >
より正確な時計を取得するために、プログレッシブ分に対応する1、2、3、4の数字を追加しました。
例 :「SONO LE ORE DIECI E VENTI 4」は10:24(10:20 + 00:04)を意味し、「SONO LE DIECI MENO QUINDICI 2」は09:47(09:45 + 00:02)を意味します
組み立て <図>
<図>
- フレームを開き、ガラスをよく掃除します
- アセテートに印刷を挿入
- 印刷用紙を挿入します
- グリッドを挿入します
- パネルにLEDを挿入します
- コントロールボックスより少し大きい合板を貼り付けます
- コントロールボックスをタッピンネジで固定します
2つのプリントの配置に細心の注意を払ってください
場所 <図>
彼女は元気に見える前に居間に置いた。
コード
- イタリア語のWordClock
イタリア語のWordClock Arduino
/ *:Project:WordClock:Author:Tiziano Bianchettin:Date:25/09/2016:Revision:1:License:Public Domainthanks to:http://www.instructables.com/id/Javelins-Word-Clock / http://arduinoenonsolo.blogspot.it/2012/12/orologio-con-arduino-e-il-ds1307.html http://www.mauroalfieri.it/ http://www.danielealberti.it/ http: //www.maffucci.it/私の電子工学研究所の教授「PeritoCarli」* /// ************ライブラリ************** //# include#include #include #include // *********** neopixel ********* ******* //#define PIN 9 //ピンneopixel#define NUM_LEDS 144 // 12 x 12#define GIORNO 255 //フルon#define SERA 25 // 10番目のonAdafruit_NeoPixelストリップ=Adafruit_NeoPixel(NUM_LEDS、PIN 、NEO_GRB + NEO_KHZ800); // 144 LED、ピン9int intBrightness; // **************** COLORS *********** // uint32_t Red =strip.Color(255、 0、0); uint32_t緑=strip.Color(0、255、0); uint32_t青=strip.Color(0、0、255); uint32_t白=strip.Color(255、255、255); uint32_t黄色=strip.Color(255 、255、0); uint32_t Purple =strip.Color(60、0、255); uint32_t Off =strip.Color(0、0、0); LiquidCrystal_I2C lcd(0x27,16,2); // I2C 16 x 2RTC_DS1307RTC; int P1 =6;を表示します//ボタンSETMENU'int P2 =7; //ボタン+ int P3 =8; //ボタン-intoraagg; int minagg; int annoagg; int meseagg; int dayagg; int menu =0; int ora; // ********プレゼンテーション********* // int txtSONO [] ={1,2,3,4,6,7,9,10,11、-1}; // ********時間********* // int txtUNA [] ={20,21,22、-1}; int txtDUE [] ={17,18,19、-1}; int txtTRE [] ={57,58,59、-1}; int txtQUATTRO [ ] ={96,97,98,99,100,101,102、-1}; int txtCINQUE [] ={30,31,32,33,34,35、-1}; int txtSEI [] ={103,104,105、-1}; int txtSETTE [] ={48,49,50,51,52、-1}; int txtOTTO [] ={72,73,74,75、-1}; int txtNOVE [] ={60,61,62,63 、-1}; int txtDIECI [] ={12,13,14,15,16、-1}; int txtUNDICI [] ={84,85,86,87,88,89、-1}; int txtDODOCI [ ] ={90,91,92,93,94,95、-1}; // ********お誕生日おめでとう********* // int txtAUGURI [] ={24、 25,26,27,28,29、-1}; int txtSIMONE [] ={36,37,38,39,40,41、-1}; int txtJACOPO [] ={42,43,44,45、 46,47、-1}; int txtMINU [] ={53,54,55,56、-1}; int txtTIZIANO [] ={65,66,67,68,69,70,71、-1}; int txtMARILENA [] ={76,77,78,79,80,81,82,83、-1}; // ********分********* // int txtE [] ={107、-1}; int txtMENO [] ={116,117,1 18,119、-1}; int txtMUNO [] ={5、-1}; int txtMDUE [] ={64、-1}; int txtMTRE [] ={106、-1}; int txtMQUATTRO [] ={125、 -1}; int txtMCINQUE [] ={132,133,134,135,136,137、-1}; int txtMDIECI [] ={120,121,122,123,124、-1}; int txtQUINDICI [] ={108,109,110,111,112,113,114,115、-1}; int txtVENTI [] ={139,140,141 }; int txtTRENTA [] ={126,127,128,129,130,131、-1}; void setup(){strip.begin(); strip.show(); lcd.begin(); lcd.backlight(); lcd.clear(); pinMode(P1、INPUT); pinMode(P2、INPUT); pinMode(P3、INPUT); Serial.begin(9600); Wire.begin(); RTC.begin(); if(!RTC.isrunning()){Serial.println( "RTCが実行されていません!"); //コンパイル時に日付と時刻を設定しますRTC.adjust(DateTime(__ DATE __、__ TIME__)); } // RTC.adjust(DateTime(__ DATE __、__ TIME__)); //「//」を削除して時刻を調整します//デフォルトの表示には日付と時刻が表示されますintmenu =0;} void loop(){// SETボタンを押してメニューインデックスを増やすかどうかを確認しますif(digitalRead( P1)){menu =menu + 1; } //どのサブルーチンに入る必要がありますか? if(menu ==0){DisplayDateTime(); // void DisplayDateTime DateTime now =RTC.now(); if((now.hour()> =19)||(now.hour()<7)){//明るさを調整する昼-夜intBrightness =SERA; } else {intBrightness =GIORNO; } strip.setBrightness(intBrightness); strip.show(); int timeMin =now.minute(); int modMin =timeMin%5; // https://www.arduino.cc/en/Reference/Modulo if(modMin ==0){//毎分LEDの色が変わり、対応する番号が点灯しますpaintWord(txtSONO、White); paintWord(txtMQUATTRO、OFF); } else if(modMin ==1){paintWord(txtSONO、Yellow); paintWord(txtMUNO、赤); } else if(modMin ==2){paintWord(txtSONO、Green); paintWord(txtMUNO、オフ); paintWord(txtMDUE、Blue); } else if(modMin ==3){paintWord(txtSONO、Blue); paintWord(txtMDUE、オフ); paintWord(txtMTRE、緑); } else if(modMin ==4){paintWord(txtSONO、Red); paintWord(txtMTRE、オフ); paintWord(txtMQUATTRO、黄色); } HourClock(); // void HourClock MinuteClock(); // MinuteClock Auguri();を無効にします// void Auguri strip.show(); } if(menu ==1){DisplaySetHour(); } if(menu ==2){DisplaySetMinute(); } if(menu ==3){DisplaySetYear(); } if(menu ==4){DisplaySetMonth(); } if(menu ==5){DisplaySetDay(); } if(menu ==6){StoreAgg(); delay(500); menu =0; } delay(100);} void showStrip(){#ifdef ADAFRUIT_NEOPIXEL_H // NeoPixel strip.show(); #endif #ifndef ADAFRUIT_NEOPIXEL_H // FastLED FastLED.show(); #endif} void setPixel(int Pixel、byte red、byte green、byte blue){#ifdef ADAFRUIT_NEOPIXEL_H // NeoPixel strip.setPixelColor(Pixel、strip.Color(red、green、blue)); #endif #ifndef ADAFRUIT_NEOPIXEL_H // FastLED leds [Pixel] .r =red; leds [Pixel] .g =緑; leds [Pixel] .b =青; #endif} void setAll(byte red、byte green、byte blue){for(int i =0; i =40){// 40分から、「時間」に1を追加ora =ora + 1; } switch(ora){case 0:case 12:case 24:paintWord(txtUNDICI、Off); strip.show(); if(modMin ==0){paintWord(txtDODOCI、White); strip.show(); } else if(modMin ==1){paintWord(txtDODOCI、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtDODOCI、Green); strip.show(); } else if(modMin ==3){paintWord(txtDODOCI、Blue); strip.show(); } else if(modMin ==4){paintWord(txtDODOCI、Red); strip.show(); } 壊す;ケース1:ケース13:paintWord(txtDODOCI、Off); strip.show(); if(modMin ==0){paintWord(txtUNA、White); strip.show(); } else if(modMin ==1){paintWord(txtUNA、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtUNA、Green); strip.show(); } else if(modMin ==3){paintWord(txtUNA、Blue); strip.show(); } else if(modMin ==4){paintWord(txtUNA、Red); strip.show(); } 壊す;ケース2:ケース14:paintWord(txtUNA、Off); strip.show(); if(modMin ==0){paintWord(txtDUE、White); strip.show(); } else if(modMin ==1){paintWord(txtDUE、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtDUE、Green); strip.show(); } else if(modMin ==3){paintWord(txtDUE、Blue); strip.show(); } else if(modMin ==4){paintWord(txtDUE、Red); strip.show(); }壊す;ケース3:ケース15:paintWord(txtDUE、Off); strip.show(); if(modMin ==0){paintWord(txtTRE、White); strip.show(); } else if(modMin ==1){paintWord(txtTRE、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtTRE、Green); strip.show(); } else if(modMin ==3){paintWord(txtTRE、Blue); strip.show(); } else if(modMin ==4){paintWord(txtTRE、Red); strip.show(); } 壊す;ケース4:ケース16:paintWord(txtTRE、Off); strip.show(); if(modMin ==0){paintWord(txtQUATTRO、White); strip.show(); } else if(modMin ==1){paintWord(txtQUATTRO、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtQUATTRO、Green); strip.show(); } else if(modMin ==3){paintWord(txtQUATTRO、Blue); strip.show(); } else if(modMin ==4){paintWord(txtQUATTRO、Red); strip.show(); } 壊す;ケース5:ケース17:paintWord(txtQUATTRO、Off); strip.show(); if(modMin ==0){paintWord(txtCINQUE、White); strip.show(); } else if(modMin ==1){paintWord(txtCINQUE、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtCINQUE、Green); strip.show(); } else if(modMin ==3){paintWord(txtCINQUE、Blue); strip.show(); } else if(modMin ==4){paintWord(txtCINQUE、Red); strip.show(); } 壊す;ケース6:ケース18:paintWord(txtCINQUE、Off); strip.show(); if(modMin ==0){paintWord(txtSEI、White); strip.show(); } else if(modMin ==1){paintWord(txtSEI、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtSEI、Green); strip.show(); } else if(modMin ==3){paintWord(txtSEI、Blue); strip.show(); } else if(modMin ==4){paintWord(txtSEI、Red); strip.show(); } 壊す;ケース7:ケース19:paintWord(txtSEI、Off); strip.show(); if(modMin ==0){paintWord(txtSETTE、White); strip.show(); } else if(modMin ==1){paintWord(txtSETTE、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtSETTE、Green); strip.show(); } else if(modMin ==3){paintWord(txtSETTE、Blue); strip.show(); } else if(modMin ==4){paintWord(txtSETTE、Red); strip.show(); } 壊す;ケース8:ケース20:paintWord(txtSETTE、Off); strip.show(); if(modMin ==0){paintWord(txtOTTO、White); strip.show(); } else if(modMin ==1){paintWord(txtOTTO、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtOTTO、Green); strip.show(); } else if(modMin ==3){paintWord(txtOTTO、Blue); strip.show(); } else if(modMin ==4){paintWord(txtOTTO、Red); strip.show(); } 壊す;ケース9:ケース21:paintWord(txtOTTO、Off); strip.show(); if(modMin ==0){paintWord(txtNOVE、White); strip.show(); } else if(modMin ==1){paintWord(txtNOVE、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtNOVE、Green); strip.show(); } else if(modMin ==3){paintWord(txtNOVE、Blue); strip.show(); } else if(modMin ==4){paintWord(txtNOVE、Red); strip.show(); } 壊す;ケース10:ケース22:paintWord(txtNOVE、Off); strip.show(); if(modMin ==0){paintWord(txtDIECI、White); strip.show(); } else if(modMin ==1){paintWord(txtDIECI、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtDIECI、Green); strip.show(); } else if(modMin ==3){paintWord(txtDIECI、Blue); strip.show(); } else if(modMin ==4){paintWord(txtDIECI、Red); strip.show(); } 壊す;ケース11:ケース23:paintWord(txtDIECI、Off); strip.show(); if(modMin ==0){paintWord(txtUNDICI、White); strip.show(); } else if(modMin ==1){paintWord(txtUNDICI、Yellow); strip.show(); } else if(modMin ==2){paintWord(txtUNDICI、Green); strip.show(); } else if(modMin ==3){paintWord(txtUNDICI、Blue); strip.show(); } else if(modMin ==4){paintWord(txtUNDICI、Red); strip.show(); }壊す; }} void MinuteClock(){DateTime now =RTC.now(); int timeMin =now.minute(); int modMin =timeMin%5; // https://www.arduino.cc/en/Reference/Modulo switch(now.minute()){ケース5:ケース6:ケース7:ケース8:ケース9:if(modMin ==0){paintWord (txtE、白); paintWord(txtMCINQUE、白); strip.show(); } else if(modMin ==1){paintWord(txtE、Yellow); paintWord(txtMCINQUE、黄色); strip.show(); } else if(modMin ==2){paintWord(txtE、Green); paintWord(txtMCINQUE、緑); strip.show(); } else if(modMin ==3){paintWord(txtE、Blue); paintWord(txtMCINQUE、青); strip.show(); } else if(modMin ==4){paintWord(txtE、Red); paintWord(txtMCINQUE、赤); strip.show(); }壊す;ケース10:ケース11:ケース12:ケース13:ケース14:paintWord(txtMCINQUE、Off); strip.show(); if(modMin ==0){paintWord(txtE、White); paintWord(txtMDIECI、白); strip.show(); } else if(modMin ==1){paintWord(txtE、Yellow); paintWord(txtMDIECI、黄色); strip.show(); } else if(modMin ==2){paintWord(txtE、Green); paintWord(txtMDIECI、緑); strip.show(); } else if(modMin ==3){paintWord(txtE、Blue); paintWord(txtMDIECI、青); strip.show(); } else if(modMin ==4){paintWord(txtE、Red); paintWord(txtMDIECI、赤); strip.show(); } 壊す;ケース15:ケース16:ケース17:ケース18:ケース19:paintWord(txtMDIECI、Off); strip.show(); if(modMin ==0){paintWord(txtE、White); paintWord(txtQUINDICI、白); strip.show(); } else if(modMin ==1){paintWord(txtE、Yellow); paintWord(txtQUINDICI、黄色); strip.show(); } else if(modMin ==2){paintWord(txtE、Green); paintWord(txtQUINDICI、緑); strip.show(); } else if(modMin ==3){paintWord(txtE、Blue); paintWord(txtQUINDICI、青); strip.show(); } else if(modMin ==4){paintWord(txtE、Red); paintWord(txtQUINDICI、赤); strip.show(); }壊す;ケース20:ケース21:ケース22:ケース23:ケース24:paintWord(txtQUINDICI、Off); strip.show(); if(modMin ==0){paintWord(txtE、White); paintWord(txtVENTI、白); strip.show(); } else if(modMin ==1){paintWord(txtE、Yellow); paintWord(txtVENTI、黄色); strip.show(); } else if(modMin ==2){paintWord(txtE、Green); paintWord(txtVENTI、緑); strip.show(); } else if(modMin ==3){paintWord(txtE、Blue); paintWord(txtVENTI、Blue); strip.show(); } else if(modMin ==4){paintWord(txtE、Red); paintWord(txtVENTI、赤); strip.show(); }壊す;ケース25:ケース26:ケース27:ケース28:ケース29:if(modMin ==0){paintWord(txtE、White); paintWord(txtVENTI、白); paintWord(txtMCINQUE、白); strip.show(); } else if(modMin ==1){paintWord(txtE、Yellow); paintWord(txtVENTI、黄色); paintWord(txtMCINQUE、黄色); strip.show(); } else if(modMin ==2){paintWord(txtE、Green); paintWord(txtVENTI、緑); paintWord(txtMCINQUE、Green); ...このファイルは切り捨てられています。完全な内容を確認するにはダウンロードしてください。
イタリア語のWordClock
カスタムパーツとエンクロージャー
wordklock_aWvuaZRw4N.svg 回路図
wordklock_JBoZPYrsYr.fzz 製造プロセス