“Main Page”的版本间的差异
(→Additional Information) |
|||
第1行: | 第1行: | ||
− | {{Language| | + | {{Language|Microduino Lattice clock}} |
− | {| | + | {| style="width: 800px;" |
− | |||
|- | |- | ||
| | | | ||
− | {| | + | ==概述== |
+ | *项目名称:Microduino 点阵级联时钟 | ||
+ | *目的:级联四个[[Microduino-Module Dot Matrix/zh]]模块 | ||
+ | **通过蓝牙与android手机通讯 | ||
+ | **实现实时显示电子时钟 | ||
+ | *难度:中级 | ||
+ | *耗时:2小时 | ||
+ | *制作者:peng | ||
+ | |||
+ | ==材料清单== | ||
+ | *Microduino设备 | ||
+ | {|class="wikitable" | ||
|- | |- | ||
− | |[[ | + | |模块||数量||功能 |
+ | |- | ||
+ | |[[Microduino-Core/zh]]||1||核心板 | ||
+ | |- | ||
+ | |[[Microduino-USBTTL/zh]] ||1||下载程序 | ||
+ | |- | ||
+ | |[[Microduino-RTC/zh]]||1||读取时间 | ||
+ | |- | ||
+ | |[[Microduino-BT/zh]]||1||手机与Core通讯 | ||
+ | |- | ||
+ | |[[Microduino-Module Dot Matrix/zh]]||4||显示 | ||
+ | |- | ||
+ | |[[Microduino-Cube-S1/zh]]||1||扩展 | ||
|} | |} | ||
+ | *其他设备 | ||
+ | {|class="wikitable" | ||
|- | |- | ||
− | | | + | |USB数据线||1||供电,下载 |
− | + | |} | |
− | + | ||
− | + | ==程序下载== | |
− | + | ||
− | + | 请保持更新下载Microduino官方最新的IDE | |
+ | |||
+ | 从下面链接下载程序: | ||
+ | [https://github.com/wasdpkj/Dot_Maxtrix_Clock Dot-Matrix-Clock.ino] | ||
+ | ===堆叠模块=== | ||
+ | *将microduino模块叠在一块([[Microduino-Core/zh]]+[[Microduino-USBTTL/zh]] +[[Microduino-RTC/zh]]1 +[[Microduino-BT/zh]] + [[Microduino-Cube-S1/zh]]),然后[[Microduino-Module Dot Matrix/zh]]用传感器线与[[Microduino-Cube-S1/zh]]连接。 | ||
+ | *注意:最好不要将所有模块堆叠在一起之后再上传程序 | ||
+ | ===配置环境=== | ||
+ | *打开Arduino IDE for Microduino,环境,(搭建参考:'''[[AVR核心:Getting started/zh]]''') | ||
+ | *确认“板卡([[Microduino-Core/zh]])”与“处理器(Atmega328P@16M,5V)”选择无误,并选中对应端口号(COMX) | ||
+ | |||
+ | ===下载程序=== | ||
+ | *打开你所下载的项目中“Dot-Matrix-Clock.ino”程序 | ||
+ | *点击"→"按钮下载程序到开发板上 | ||
+ | |||
+ | 如果成功在点阵屏上就可以显示时间了。 | ||
+ | [[File:DcolorMatrix4.jpg|600px|center|thumb]] | ||
− | + | ===蓝牙下载=== | |
− | + | 通过蓝牙调整时间,如果RTC长时间不供电的话,时间将会出错,但是为了避免每次需要通过下载程序的办法来调整时间,我们采用BT(4.0)结合Android设备来调节时间。使用手机切换显示界面。客户端在程序文件夹里面 '''[[File:blueclock.zip]]''' | |
− | + | *打开手机蓝牙 | |
+ | *打开应用程序,搜索蓝牙设备,连接到你的蓝牙设备。连接成功就可以控制,否则进行重新连接。 | ||
+ | *成功就可以通过button来控制。需要长按按钮,等界面切换就可以松开botton。可以显示日期、星期。等界面显示完毕又返回现实时间。 | ||
+ | [[File:DcolorMatrix ble.jpg|400px|center|thumb]] | ||
+ | ==拼装过程(IIC地址设置)== | ||
− | + | 步骤一:Microduino-Module Dot Matrix采用IIC驱动,由于在I2C总线上的每个设备都必须有一个唯一的地址,因此需要更改,否则你会得到很多奇怪的现象。 | |
− | + | 如何更改IIC地址,在《开源LED点阵屏幕》教程中有介绍怎么设置Dot Matrix模块的IIC地址,在这里再简单说下。 | |
− | |||
− | + | *先按着模块背面的按键,再接上电源,待屏幕变白色后应立即放开按键,屏幕有多少个白格子代表iic地址就是多少。 | |
− | + | *慢按背面按键是地址加一 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | *快按背面按键是地址减一 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 按住不放待屏幕变灭或有变化即可设置成功 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 如果所有格子都亮白色也不可认为此模块的iic地址就是64,最好手动调到64 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | { | + | 程序实现: |
+ | uint8_t Addr[MatrixPix_X][MatrixPix_Y] = { | ||
+ | { 64, 63, 62, 61}}; //1x4 | ||
− | + | 定义了四个Dot Matrix模块的IIC地址是64,63,62,61,排列方式是1x4。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 步骤二:将更改了IIC的地址底板级联,只有按定义的地址顺序从左往右连接好Dot Matrix模块就行。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 步骤三:接上核心模块(Microduino Core+Microduino USBTTL+Microduino RTC+Microduino BT) | |
+ | 注意:因为一块控制板最多能叠加两块Microduino模块。BT采用软串口mySerial,玩家可根据情况更改蓝牙模块跳线来改变串口。 | ||
− | = | + | ==代码说明== |
− | + | 下载:[[File:Dot Maxtrix Clock.zip]] | |
− | + | 库函数分析: | |
− | = | ||
− | |||
− | [[ | ||
− | + | *'''蓝牙''': | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | { | + | while (mySerial.available()) {...} |
+ | 当串口有数据时有效。 | ||
+ | mySerial.read() | ||
+ | 读取软串口传输的数据 | ||
+ | if (c == 't' && buffer_num == 0 && !buffer_sta_d) | ||
+ | buffer_sta_t = true; | ||
+ | if (c == 'm' && buffer_num == 0 && !buffer_sta_t) | ||
+ | buffer_sta_d = true; | ||
+ | 判断是日期数据还是时间数据 | ||
+ | strstr((char *)buffer, "t") | ||
+ | 返回buffer中第一次出现"t"字符的地址 | ||
+ | sscanf((char *)strstr((char *)buffer, "t"), "t%d,%d,%d,%d,%d,%d", &sta[0], &sta[1], &sta[2], &sta[3], &sta[4], &sta[5]); | ||
+ | 从buffer中"t"字符第一次出现的地址起,按%d格式读取数值写入到sta[]中 | ||
+ | bleUpdata() | ||
+ | 通过软串口传输数据,手机上按钮只有在按下 情况下发送指定字符,如果松开就就发送“0”字符,这样在没有按下情况下,将会一直显示时间。 | ||
− | + | *'''RTC''': | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | rtc.getDate(); | |
+ | rtc.getTime(); | ||
+ | setTime(rtc.getHour(), rtc.getMinute(), rtc.getSecond(), rtc.getDay(), rtc.getMonth(), rtc.getYear()) | ||
+ | 获得rtc的日期时间数据 | ||
+ | rtc.setDate(day(), weekday() , month(), 0, year() - 2000); //day, weekday, month, century(1=1900, 0=2000), year(0-99) | ||
+ | rtc.setTime(hour(), minute() , second()); //hr, min, sec | ||
+ | 按时,分,秒,日,月,年设置 | ||
− | + | *'''display:''' | |
− | |||
− | |||
− | |||
− | |||
+ | display.print(second() % 2 ? " " : ":"); | ||
+ | 闪速的秒钟,用过判断秒是否能被2整除,如果能就显示,否者不显示 | ||
+ | display.getDeviceAddr(a) | ||
+ | 获得设备IIC地址 | ||
+ | display.getWidth(),display.getHeight() | ||
+ | 返回X,Y坐标 | ||
+ | display.setLedColor(x, y, random(0, 255), random(0, 255), random(0, 255)) | ||
+ | 随机设置每个LED的颜色 | ||
+ | display.clearDisplay() | ||
+ | 清理屏幕显示 | ||
+ | display.setColor(X,Y,Z) | ||
+ | 设置全屏颜色 X:红色 Y:绿色 Z:蓝色 | ||
+ | display.writeString("string", MODE, time ,z) | ||
+ | string:任意字符串, MODE:MODE_H横向显示字符/MODE_V竖向显示字符, time:显示的时间(字符在屏幕流动速度) ,z:X/Y坐标 | ||
− | + | 通过读取RTC时钟,将特定的数值以坐标形式显示出来就行。 | |
+ | 注意:你需要将BT模块和Core核心模块叠加在同一个板子上进行调试,因为LED点阵级联的是电源、地、IIC四个引脚,而BT默认的则是软串口(D4、D5),因此需要将BT模块和Core核心模块叠加在一起。 | ||
− | + | 通过Android设备来调试,前提是要4.3以上的系统才能支持BT(4.0)模块,同时你可以下载一个蓝牙串口助手来进行调试。 | |
− | + | *教程中下载blueclock APP。 | |
− | + | *点击sync time按键同步手机时间。 | |
− | + | *可以在输入栏写上"hello microduino",点击发送会在屏幕上显示出来 | |
− | |||
− | + | ==FAQ== | |
− | + | *Q:怎么知道IIC地址 | |
+ | **A:先按着模块背面的按键,再接上电源,待屏幕变白色后应立即放开按键,屏幕有多少个白格子代表iic地址就是多少 | ||
+ | *Q:点阵安装的方向 | ||
+ | **A:按Dot Matrix模块定义的地址顺序从左往右连接好模块就行 | ||
+ | *Q:蓝牙串口连接需要跳线吗 | ||
+ | **A:蓝牙模块采用软串口mySerial(4,5)是蓝牙模块硬件默认的,不需要跳线。可参考蓝模块配置[[Microduino-Module BLE/zh]]。 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} |
2016年3月11日 (五) 03:32的版本
Language | English |
---|
概述
材料清单
程序下载请保持更新下载Microduino官方最新的IDE 从下面链接下载程序: Dot-Matrix-Clock.ino 堆叠模块
配置环境
下载程序
如果成功在点阵屏上就可以显示时间了。 蓝牙下载通过蓝牙调整时间,如果RTC长时间不供电的话,时间将会出错,但是为了避免每次需要通过下载程序的办法来调整时间,我们采用BT(4.0)结合Android设备来调节时间。使用手机切换显示界面。客户端在程序文件夹里面 文件:Blueclock.zip
拼装过程(IIC地址设置)步骤一:Microduino-Module Dot Matrix采用IIC驱动,由于在I2C总线上的每个设备都必须有一个唯一的地址,因此需要更改,否则你会得到很多奇怪的现象。 如何更改IIC地址,在《开源LED点阵屏幕》教程中有介绍怎么设置Dot Matrix模块的IIC地址,在这里再简单说下。
按住不放待屏幕变灭或有变化即可设置成功 如果所有格子都亮白色也不可认为此模块的iic地址就是64,最好手动调到64 程序实现: uint8_t Addr[MatrixPix_X][MatrixPix_Y] = { { 64, 63, 62, 61}}; //1x4 定义了四个Dot Matrix模块的IIC地址是64,63,62,61,排列方式是1x4。 步骤二:将更改了IIC的地址底板级联,只有按定义的地址顺序从左往右连接好Dot Matrix模块就行。 步骤三:接上核心模块(Microduino Core+Microduino USBTTL+Microduino RTC+Microduino BT) 注意:因为一块控制板最多能叠加两块Microduino模块。BT采用软串口mySerial,玩家可根据情况更改蓝牙模块跳线来改变串口。 代码说明下载:文件:Dot Maxtrix Clock.zip 库函数分析:
while (mySerial.available()) {...} 当串口有数据时有效。 mySerial.read() 读取软串口传输的数据 if (c == 't' && buffer_num == 0 && !buffer_sta_d) buffer_sta_t = true; if (c == 'm' && buffer_num == 0 && !buffer_sta_t) buffer_sta_d = true; 判断是日期数据还是时间数据 strstr((char *)buffer, "t") 返回buffer中第一次出现"t"字符的地址 sscanf((char *)strstr((char *)buffer, "t"), "t%d,%d,%d,%d,%d,%d", &sta[0], &sta[1], &sta[2], &sta[3], &sta[4], &sta[5]); 从buffer中"t"字符第一次出现的地址起,按%d格式读取数值写入到sta[]中 bleUpdata() 通过软串口传输数据,手机上按钮只有在按下 情况下发送指定字符,如果松开就就发送“0”字符,这样在没有按下情况下,将会一直显示时间。
rtc.getDate(); rtc.getTime(); setTime(rtc.getHour(), rtc.getMinute(), rtc.getSecond(), rtc.getDay(), rtc.getMonth(), rtc.getYear()) 获得rtc的日期时间数据 rtc.setDate(day(), weekday() , month(), 0, year() - 2000); //day, weekday, month, century(1=1900, 0=2000), year(0-99) rtc.setTime(hour(), minute() , second()); //hr, min, sec 按时,分,秒,日,月,年设置
display.print(second() % 2 ? " " : ":"); 闪速的秒钟,用过判断秒是否能被2整除,如果能就显示,否者不显示 display.getDeviceAddr(a) 获得设备IIC地址 display.getWidth(),display.getHeight() 返回X,Y坐标 display.setLedColor(x, y, random(0, 255), random(0, 255), random(0, 255)) 随机设置每个LED的颜色 display.clearDisplay() 清理屏幕显示 display.setColor(X,Y,Z) 设置全屏颜色 X:红色 Y:绿色 Z:蓝色 display.writeString("string", MODE, time ,z) string:任意字符串, MODE:MODE_H横向显示字符/MODE_V竖向显示字符, time:显示的时间(字符在屏幕流动速度) ,z:X/Y坐标 通过读取RTC时钟,将特定的数值以坐标形式显示出来就行。 注意:你需要将BT模块和Core核心模块叠加在同一个板子上进行调试,因为LED点阵级联的是电源、地、IIC四个引脚,而BT默认的则是软串口(D4、D5),因此需要将BT模块和Core核心模块叠加在一起。 通过Android设备来调试,前提是要4.3以上的系统才能支持BT(4.0)模块,同时你可以下载一个蓝牙串口助手来进行调试。
FAQ
|