“开源LED点阵时钟/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
蓝牙下载
第39行: 第39行:
 
==实验原理(IIC地址设置)==
 
==实验原理(IIC地址设置)==
  
*[[Microduino-Module Dot Matrix/zh]]模块采用IIC通信,因为在I2C总线上的每个设备都必须有一个唯一的地址,所以每一块点阵模块需要不同的地址,需要手动设置模块的IIC地址
+
*[[Microduino-Module Dot Matrix/zh]]模块采用IIC通信
 
+
*在I2C总线上的每个设备都必须有一个唯一的地址,因此每一块点阵模块需要手动设置不同的IIC地址
 
*更改点阵模块IIC地址可以参考[[https://www.microduino.cn/wiki/index.php/Microduino-Module_Dot_Matrix/zh#.E7.82.B9.E9.98.B5.E5.9C.B0.E5.9D.80.E8.AE.BE.E7.BD.AE.E6.96.B9.E6.B3.95 点阵模块IIC地址设置方法]]教程
 
*更改点阵模块IIC地址可以参考[[https://www.microduino.cn/wiki/index.php/Microduino-Module_Dot_Matrix/zh#.E7.82.B9.E9.98.B5.E5.9C.B0.E5.9D.80.E8.AE.BE.E7.BD.AE.E6.96.B9.E6.B3.95 点阵模块IIC地址设置方法]]教程
 
 
*点阵级联的程序实现:
 
*点阵级联的程序实现:
 
   uint8_t Addr[MatrixPix_X][MatrixPix_Y] = {                 
 
   uint8_t Addr[MatrixPix_X][MatrixPix_Y] = {                 
第55行: 第54行:
 
[https://github.com/wasdpkj/Dot_Maxtrix_Clock Dot-Matrix-Clock.ino]
 
[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-Core/zh]]+[[Microduino-USBTTL/zh]]模块叠在一块
*然后[[Microduino-Module Dot Matrix/zh]]用传感器线与[[Microduino-Cube-S1/zh]]连接。
 
 
*注意:最好不要将所有模块堆叠在一起之后再上传程序
 
*注意:最好不要将所有模块堆叠在一起之后再上传程序
  
第83行: 第81行:
 
==拼装过程==
 
==拼装过程==
 
*将microduino模块叠在一块([[Microduino-Core/zh]]+[[Microduino-USBTTL/zh]]  +[[Microduino-RTC/zh]]1 +[[Microduino-BT/zh]] + [[Microduino-Cube-S1/zh]])
 
*将microduino模块叠在一块([[Microduino-Core/zh]]+[[Microduino-USBTTL/zh]]  +[[Microduino-RTC/zh]]1 +[[Microduino-BT/zh]] + [[Microduino-Cube-S1/zh]])
*将更改了IIC地址的点阵模块按定义的地址顺序从左往右连接,即完成级联。
+
*将更改了IIC地址的点阵模块按定义的地址顺序从左往右连接(即完成级联)。
 
*将IIC地址最小或最大的点阵模块连接[[[Microduino-Cube-S1/zh]]
 
*将IIC地址最小或最大的点阵模块连接[[[Microduino-Cube-S1/zh]]
 
[[File:DotMatrix1jilian.jpg|600px|center|thumb]]
 
[[File:DotMatrix1jilian.jpg|600px|center|thumb]]
第91行: 第89行:
  
  
==='''蓝牙'''===
+
===蓝牙===
  
 
   while (mySerial.available()) {...}
 
   while (mySerial.available()) {...}
第109行: 第107行:
 
通过软串口传输数据,手机上按钮只有在按下 情况下发送指定字符,如果松开就就发送“0”字符,这样在没有按下情况下,将会一直显示时间。   
 
通过软串口传输数据,手机上按钮只有在按下 情况下发送指定字符,如果松开就就发送“0”字符,这样在没有按下情况下,将会一直显示时间。   
  
==='''RTC'''===  
+
===RTC===  
  
 
   rtc.getDate();
 
   rtc.getDate();
第119行: 第117行:
 
按时,分,秒,日,月,年设置
 
按时,分,秒,日,月,年设置
  
==='''display'''===
+
===display===
  
 
   display.print(second() % 2 ? " " : ":");
 
   display.print(second() % 2 ? " " : ":");

2016年3月11日 (五) 06:49的版本

Language English


概述

  • 项目名称:Microduino 点阵级联时钟
  • 目的:级联四个Microduino-Module Dot Matrix/zh模块
    • 通过蓝牙与android手机通讯
    • 实现实时显示电子时钟
  • 难度:中级
  • 耗时:2小时
  • 制作者:peng

材料清单

Microduino设备

模块 数量 功能
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 扩展

其他设备

USB数据线 1 供电,下载

实验原理(IIC地址设置)

 uint8_t Addr[MatrixPix_X][MatrixPix_Y] = {                 
{ 64, 63, 62, 61}};       //1x4
定义了四个Dot Matrix模块的IIC地址是64,63,62,61,排列方式是1x4。

程序下载

请保持更新下载Microduino官方最新的IDE

从下面链接下载程序: Dot-Matrix-Clock.ino

堆叠模块

配置环境

下载程序

  • 打开你所下载的项目中“Dot-Matrix-Clock.ino”程序
  • 点击"→"按钮下载程序到开发板上

如果成功在点阵屏上就可以显示时间了。

蓝牙下载

因为RTC长时间不供电的话,时间将会出错,但是为了避免每次需要通过下载程序的办法来调整时间,我们采用BT(4.0)结合Android设备来调节时间。

  • 客户端在程序文件夹里面 文件:Blueclock.zip
  • 打开手机蓝牙
  • 打开应用程序,搜索蓝牙设备,连接到你的蓝牙设备。连接成功就可以控制,否则进行重新连接
  • 成功就可以通过APP来控制点阵屏幕的显示
  • 点击sync time with phone,点阵屏幕会同步手机的时间
  • 在输入栏写入‘hello microduino’,点击send message,点阵屏幕上会显示输入的字符
DcolorMatrix ble.jpg
DotMatrixBle.jpg

拼装过程

DotMatrix1jilian.jpg

代码说明

代码下载:文件: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时钟,将特定的数值以坐标形式显示出来就行。

FAQ

  • Q:怎么知道IIC地址是多少?
    • A:点阵模块接上电源,待屏幕亮后按一下按键,屏幕上亮多少个白格代表iic地址就是多少
  • Q:多个点阵模块按什么顺序连接?
    • A:按Dot Matrix模块设置的IIC地址顺序从左往右连接
  • Q:蓝牙模块为什么不需要改跳线?
    • A:本教程中蓝牙模块采用的是默认软串口mySerial(4,5),不需要跳线。深入了解蓝牙模块可参考蓝模块配置Microduino-Module BLE/zh