亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

意大利字时钟

组件和用品

Arduino Nano R3
× 1
NeoPixel strip
144
× 1
Adafruit 标准 LCD - 16x2 蓝底白字
带 I2C 模块
× 1
实时时钟 (RTC)
× 1
SparkFun 按钮开关 12mm
× 4
电阻 10k ohm
× 3
电阻 475 ohm
× 1
1N4007 – 高电压、高额定电流二极管
× 3
DC DC 转换器可调降压
× 1
墙框 RIBBA(宜家)
× 1
Gewiss 盒盖 150 x 110
× 1
铝条 230 mm x 10 mm x 1mm
× 1

关于这个项目

我对 Arduino 手表的热情促使我制作了一个“字钟”,因为我住在意大利,我确实会说意大利语。为了项目的实现,我受到了教程“Word Clock Javelin”的启发,我做了一些小改动......这里为您提供“意大利的Word Clock”!

除了用意大利语“告诉时间”之外,我还想添加我家人(包括猫)的生日。 “框架”的搭建我用的是宜家已经做的,内部改动我用的是家里的材料:

为实现屏幕将显示用 Inkscape 绘制的图案。

我的面板尺寸为 12 x 12 个字母,占地面积为 200 毫米。由于我没有3D打印机,所以我用铝条做网格,并用胶海绵隔离了LED的接触,这也起到了隔离光线的作用。

电子线路

为了保持时间,我使用了 RTC .

为了能够调整时间,我添加了按钮(P1、P2、P3)和一个 16 x 2 显示器。(另见项目“时钟设置日期时间”)。从接线图中可以看出,按钮通过下拉连接到Arduino 电路。

由于显示器仅用于调整时间,我用按钮替换了跳线 ,通过这样做,它只照亮它的使用。二极管D1起反极性保护作用。

二极管 D2 用于不为新像素条供电,无论出于何种原因,我们必须更改草图 Arduino(电流太大可能会损坏它)。二极管 D3 用于提供 5 伏特的电压,即 Neopixel 的电压。

我附上电路图、Fritzing 方案、PCB 布局。

矩阵

为了实现矩阵,我将各种条带连接成图片。从左上角锯齿形下降。

Arduino 库

  • 实时时钟
  • LiquidCrystal_I2C
  • Adafruit_NeoPixel

代码说明

代码分为5个主要部分:

  • “DisplayDateTime”:在液晶显示器中显示日期和时间
  • “HourClock”:在面板中显示小时
  • “MinuteClock”:在面板中显示分钟
  • “Auguri”:生日快乐
  • “VoidpaintWord (arrWord int [], uint32_t intColor)”是开启neopixel的核心代码,“arrWord int []”是LED应该亮起,“uint32_t intColor”是它们的颜色

为了获得更准确的时钟,我添加了与渐进分钟对应的数字 1、2、3、4。

示例 :“SONO LE DIECI E VENTI 4”表示10:24 (10:20 + 00:04),“SONO LE DIECI MENO QUINDICI 2”表示09:47 (09:45 + 00:02)

组装

  • 打开框架,把玻璃擦干净
  • 在醋酸纤维中插入打印
  • 插入打印纸
  • 插入网格
  • 插入带有 LED 的面板
  • 粘贴一块胶合板,比控制箱大一点
  • 用自攻螺钉固定控制箱

密切注意两张照片的对齐

位置

放在客厅前她好看。

代码

  • 意大利语字时钟
意大利字时钟Arduino
/*:Project:WordClock:Author:Tiziano Bianchettin:Date:25/09/2016:Revision:1:License:Public Domain 感谢: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/ 我的电子实验室教授“Perito Carli”*///************图书馆**************//# include #include #include #include //***********neopixel********* *******//#define PIN 9 // pin neopixel#define NUM_LEDS 144 // 12 x 12#define GIORNO 255 // full on#define SERA 25 // 第十个 onAdafruit_NeoPixel strip =Adafruit_NeoPixel(NUM_LEDS, PIN , NEO_GRB + NEO_KHZ800); // 144 LED, pin 9int intBrightness;//****************COLORS***********//uint32_t Red =strip.Color(255, 0, 0); uint32_t Green =strip.Color(0, 255, 0);uint32_t Blue =strip.Color(0, 0, 255);uint32_t White =strip.Color(255, 255, 255);uint32_t Yellow =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_DS1307 RTC;int P1=6; // 按钮SET MENU'int P2=7; // 按钮 +int P3=8; // 按钮 -int oraagg;int minagg;int annoagg;int meseagg;int dayagg;int menu =0;int ora;//********Presentation*********//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,118,119,-1};int txtMUN O[] ={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,142,143,-1}; INT txtTRENTA [] ={126,127,128,129,130​​,131,-1};void setup(){strip.begin();带.show();液晶显示器。开始();液晶背光();液晶显示器();引脚模式(P1,输入);引脚模式(P2,输入);引脚模式(P3,输入); Serial.begin(9600); Wire.begin(); RTC.begin(); if (!RTC.isrunning()) { Serial.println("RTC 没有运行!"); // 在编译时设置日期和时间 RTC.adjust(DateTime(__DATE__, __TIME__)); } // RTC.adjust(DateTime(__DATE__, __TIME__)); //去掉“//”来调整时间 // 默认显示显示日期和时间 int menu=0;} void loop(){ // 检查是否按下SET键,增加菜单索引 if(digitalRead( P1)) { 菜单=菜单+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);带.show(); int timeMin =now.minute(); int modMin =时间最小值 % 5; // https://www.arduino.cc/en/Reference/Modulo if ( modMin ==0){ // 每分钟 LED 都会改变颜色并点亮相应的数字 paintWord(txtSONO, White);油漆字(txtMQUATTRO,关); } else if ( modMin ==1){paintWord(txtSONO, Yellow);油漆字(txtMUNO,红色); } else if ( modMin ==2){paintWord(txtSONO, Green);油漆字(txtMUNO,关);油漆字(txtMDUE,蓝色); } else if ( modMin ==3){paintWord(txtSONO, Blue);油漆字(txtMDUE,关);油漆字(txtMTRE,绿色); } else if ( modMin ==4){paintWord(txtSONO, Red);油漆字(txtMTRE,关);油漆字(txtMQUATTRO,黄色);时钟(); //void HourClock MinuteClock(); // void 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();延迟(500);菜单=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[像素].g =绿色; leds[像素].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);带.show();如果(modMin ==0){paintWord(txtDODOCI,白色);带.show(); } else if ( modMin ==1){paintWord(txtDODOCI, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtDODOCI, Green);带.show(); } else if ( modMin ==3){paintWord(txtDODOCI, Blue);带.show(); } else if ( modMin ==4){paintWord(txtDODOCI, Red);带.show(); } 休息;案例 1:案例 13:paintWord(txtDODOCI, Off);带.show(); if ( modMin ==0){paintWord(txtUNA, White);带.show(); } else if ( modMin ==1){paintWord(txtUNA, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtUNA, Green);带.show(); } else if ( modMin ==3){paintWord(txtUNA, Blue);带.show(); } else if ( modMin ==4){paintWord(txtUNA, Red);带.show(); } 休息;案例 2:案例 14:paintWord(txtUNA, Off);带.show(); if ( modMin ==0){paintWord(txtDUE, White);带.show(); } else if ( modMin ==1){paintWord(txtDUE, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtDUE, Green);带.show(); } else if ( modMin ==3){paintWord(txtDUE, Blue);带.show(); } else if ( modMin ==4){paintWord(txtDUE, Red);带.show(); }休息;案例 3:案例 15:paintWord(txtDUE, Off);带.show(); if ( modMin ==0){paintWord(txtTRE, White);带.show(); } else if ( modMin ==1){paintWord(txtTRE, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtTRE, Green);带.show(); } else if ( modMin ==3){paintWord(txtTRE, Blue);带.show(); } else if ( modMin ==4){paintWord(txtTRE, Red);带.show(); } 休息;案例 4:案例 16:paintWord(txtTRE, Off);带.show(); if ( modMin ==0){paintWord(txtQUATTRO, White);带.show(); } else if ( modMin ==1){paintWord(txtQUATTRO, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtQUATTRO, Green);带.show(); } else if ( modMin ==3){paintWord(txtQUATTRO, Blue);带.show(); } else if ( modMin ==4){paintWord(txtQUATTRO, Red);带.show(); } 休息;案例 5:案例 17:paintWord(txtQUATTRO, Off);带.show();如果(modMin ==0){paintWord(txtCINQUE,White);带.show(); } else if ( modMin ==1){paintWord(txtCINQUE, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtCINQUE, Green);带.show(); } else if ( modMin ==3){paintWord(txtCINQUE, Blue);带.show(); } else if ( modMin ==4){paintWord(txtCINQUE, Red);带.show(); } 休息;案例 6:案例 18:paintWord(txtCINQUE, Off);带.show(); if ( modMin ==0){paintWord(txtSEI, White);带.show(); } else if ( modMin ==1){paintWord(txtSEI, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtSEI, Green);带.show(); } else if ( modMin ==3){paintWord(txtSEI, Blue);带.show(); } else if ( modMin ==4){paintWord(txtSEI, Red);带.show(); } 休息;案例 7:案例 19:paintWord(txtSEI, Off);带.show(); if ( modMin ==0){paintWord(txtSETTE, White);带.show(); } else if ( modMin ==1){paintWord(txtSETTE, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtSETTE, Green);带.show(); } else if ( modMin ==3){paintWord(txtSETTE, Blue);带.show(); } else if ( modMin ==4){paintWord(txtSETTE, Red);带.show(); } 休息;案例 8:案例 20:paintWord(txtSETTE, Off);带.show(); if ( modMin ==0){paintWord(txtOTTO, White);带.show(); } else if ( modMin ==1){paintWord(txtOTTO, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtOTTO, Green);带.show(); } else if ( modMin ==3){paintWord(txtOTTO, Blue);带.show(); } else if ( modMin ==4){paintWord(txtOTTO, Red);带.show(); } 休息;案例 9:案例 21:paintWord(txtOTTO, Off);带.show(); if ( modMin ==0){paintWord(txtNOVE, White);带.show(); } else if ( modMin ==1){paintWord(txtNOVE, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtNOVE, Green);带.show(); } else if ( modMin ==3){paintWord(txtNOVE, Blue);带.show(); } else if ( modMin ==4){paintWord(txtNOVE, Red);带.show(); } 休息;案例 10:案例 22:paintWord(txtNOVE, Off);带.show(); if ( modMin ==0){paintWord(txtDIECI, White);带.show(); } else if ( modMin ==1){paintWord(txtDIECI, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtDIECI, Green);带.show(); } else if ( modMin ==3){paintWord(txtDIECI, Blue);带.show(); } else if ( modMin ==4){paintWord(txtDIECI, Red);带.show(); } 休息;案例 11:案例 23:paintWord(txtDIECI, Off);带.show(); if ( modMin ==0){paintWord(txtUNDICI, White);带.show(); } else if ( modMin ==1){paintWord(txtUNDICI, Yellow);带.show(); } else if ( modMin ==2){paintWord(txtUNDICI, Green);带.show(); } else if ( modMin ==3){paintWord(txtUNDICI, Blue);带.show(); } else if ( modMin ==4){paintWord(txtUNDICI, Red);带.show(); }休息; }}void MinuteClock(){ DateTime now =RTC.now(); int timeMin =now.minute(); int modMin =时间最小值 % 5; // https://www.arduino.cc/en/Reference/Modulo switch (now.minute()) { case 5:case 6:case 7:case 8:case 9:if ( modMin ==0){paintWord (txtE, 白色);油漆字(txtMCINQUE,白色);带.show(); } else if ( modMin ==1){paintWord(txtE, Yellow);油漆字(txtMCINQUE,黄色);带.show(); } else if ( modMin ==2){paintWord(txtE, Green);油漆字(txtMCINQUE,绿色);带.show(); } else if ( modMin ==3){paintWord(txtE, Blue);油漆字(txtMCINQUE,蓝色);带.show(); } else if ( modMin ==4){paintWord(txtE, Red);油漆字(txtMCINQUE,红色);带.show(); }休息;案例 10:案例 11:案例 12:案例 13:案例 14:paintWord(txtMCINQUE, Off);带.show(); if ( modMin ==0){paintWord(txtE, White);油漆字(txtMDIECI,白色);带.show(); } else if ( modMin ==1){paintWord(txtE, Yellow);油漆字(txtMDIECI,黄色);带.show(); } else if ( modMin ==2){paintWord(txtE, Green);油漆字(txtMDIECI,绿色);带.show(); } else if ( modMin ==3){paintWord(txtE, Blue);油漆字(txtMDIECI,蓝色);带.show(); } else if ( modMin ==4){paintWord(txtE, Red);油漆字(txtMDIECI,红色);带.show(); } 休息; case 15:case 16:case 17:case 18:case 19:paintWord(txtMDIECI, Off);带.show(); if ( modMin ==0){paintWord(txtE, White);油漆字(txtQUINDICI,白色);带.show(); } else if ( modMin ==1){paintWord(txtE, Yellow);油漆字(txtQUINDICI,黄色);带.show(); } else if ( modMin ==2){paintWord(txtE, Green);油漆字(txtQUINDICI,绿色);带.show(); } else if ( modMin ==3){paintWord(txtE, Blue);油漆字(txtQUINDICI,蓝色);带.show(); } else if ( modMin ==4){paintWord(txtE, Red);油漆字(txtQUINDICI,红色);带.show(); }休息;案例 20:案例 21:案例 22:案例 23:案例 24:paintWord(txtQUINDICI, Off);带.show(); if ( modMin ==0){paintWord(txtE, White);油漆字(txtVENTI,白色);带.show(); } else if ( modMin ==1){paintWord(txtE, Yellow);油漆字(txtVENTI,黄色);带.show(); } else if ( modMin ==2){paintWord(txtE, Green);油漆字(txtVENTI,绿色);带.show(); } else if ( modMin ==3){paintWord(txtE, Blue);油漆字(txtVENTI,蓝色);带.show(); } else if ( modMin ==4){paintWord(txtE, Red);油漆字(txtVENTI,红色);带.show(); }休息; case 25:case 26:case 27:case 28:case 29:if ( modMin ==0){paintWord(txtE, White);油漆字(txtVENTI,白色);油漆字(txtMCINQUE,白色);带.show(); } else if ( modMin ==1){paintWord(txtE, Yellow);油漆字(txtVENTI,黄色);油漆字(txtMCINQUE,黄色);带.show(); } else if ( modMin ==2){paintWord(txtE, Green);油漆字(txtVENTI,绿色); PaintWord(txtMCINQUE, Green);...此文件已被截断,请下载以查看其完整内容。
意大利字时钟

定制零件和外壳

wordklock_aWvuaZRw4N.svg

示意图

wordklock_JBoZPYrsYr.fzz

制造工艺

  1. 干渴警报植物警报
  2. 简单字时钟(Arduino)
  3. 字时钟,以文字表示时间的分钟分辨率
  4. Sigfox kWh Meter
  5. 蓝牙温度监视器
  6. 手势控制锁
  7. 伴侣 IC
  8. USB MIDI 适配器
  9. Arduino 的隔离模拟输入
  10. RGB 32-Band Audio Spectrum Visualizer
  11. Arduino TV 输出电缆
  12. 测量你的反应时间