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

イタリア語の単語時計

コンポーネントと消耗品

>
Arduino Nano R3
× 1
NeoPixelストリップ
144
× 1
Adafruit標準LCD-16x2白地に青
I2Cモジュール付き
× 1
リアルタイムクロック(RTC)
× 1
SparkFunプッシュボタンスイッチ12mm
× 4
抵抗10kオーム
× 3
抵抗475オーム
× 1
1N4007 –高電圧、高電流定格ダイオード
× 3
DCDCコンバーター調整可能ステップダウン
× 1
ウォールフレームRIBBA(Ikea)
× 1
Gewissボックスカバー150x 110
× 1
アルミニウムストリップ230mm x 10 mm x 1mm
× 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

製造プロセス

  1. 喉の渇き警報プラント警報
  2. Simple Word Clock(Arduino)
  3. 単語単位の時間の分分解能を備えた世界時計
  4. SigfoxkWhメーター
  5. Bluetooth温度モニター
  6. ジェスチャー制御ロック
  7. コンパニオンIC
  8. USBMIDIアダプター
  9. Arduino用の絶縁アナログ入力
  10. RGB32バンドオーディオスペクトルビジュアライザー
  11. 反応時間を測定する