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

来自Microduino Wikipedia
跳转至: 导航搜索
程序烧写
拼装过程
第65行: 第65行:
  
 
==拼装过程==
 
==拼装过程==
*'''Step1''':
+
*'''Step1''':将'''结构B2'''垂直插入'''结构B1'''
**将'''结构B2'''垂直插入'''结构B1'''
 
 
[[File:DotMatrixjiegou1.jpg|500px|center|thumb]]
 
[[File:DotMatrixjiegou1.jpg|500px|center|thumb]]
**利用'''结构B3'''将'''结构A1'''和'''结构B1'''连接
+
*'''Step2''':利用'''结构B3'''将'''结构A1'''和'''结构B1'''连接
 
[[File:DotMatrixjiegou2.jpg|500px|center|thumb]]
 
[[File:DotMatrixjiegou2.jpg|500px|center|thumb]]
 +
*'''Step3''':
 
**用'''结构B4'''插入'''结构B3'''的卡槽
 
**用'''结构B4'''插入'''结构B3'''的卡槽
 
**再把'''结构C1'''也嵌入'''结构B3''',用'''结构B5'''卡住
 
**再把'''结构C1'''也嵌入'''结构B3''',用'''结构B5'''卡住

2016年3月15日 (二) 10:02的版本

Language English


概述

  • 项目名称:Microduino 点阵级联时钟
  • 目的:实时显示时钟和字符。
  • 难度:中级
  • 耗时:2小时
  • 制作者:peng

简介:

  • 将四个Microduino-Module Dot Matrix/zh模块级联
  • 使用蓝牙模块,通过手机APP校准点阵显示的时间
  • 使用蓝牙模块,通过手机APP发送任意字符给点阵模块显示

材料清单

Microduino设备

模块 数量 功能
Microduino-Core/zh 1 核心板
Microduino-USBTTL/zh 1 下载程序
Microduino-RTC/zh 1 读取时间
Microduino-BLE/zh 1 手机与Core通讯
Microduino-Module Dot Matrix/zh 4 显示
Microduino-Cube-S1/zh 1 扩展

其他设备

USB数据线 1 供电,下载
LED点阵时钟外壳套件 1 外壳

实验原理

  • Microduino-Module Dot Matrix/zh模块特点:
    • 模块为*8x8点阵,尺寸60mm*60mm;
    • 每个点颜色显示质量为24位,整体32k彩色显示效果
    • 支持IIC通讯协议,IIC地址可设(1~64),点阵序列采用平面直角坐标系,便于控制

程序下载

  • 请保持更新下载Microduino官方最新的IDE
  • 从下面链接下载程序:Dot-Matrix-Clock.ino

程序烧写

  • Microduino-Core/zhMicroduino-USBTTL/zh堆叠在一起。用数据线连接其中的Microduino-USBTTL/zh上传程序。
    • 注意:最好不要将所有模块堆叠在一起之后再上传程序
  • 打开Arduino IDE for Microduino,环境,(搭建参考:AVR核心:Getting started/zh
  • 确认板卡(Microduino-Core)处理器(Atmega328P@16M,5V)选择无误,并选中对应端口号(COMX)
  • 打开你所下载的项目中“Dot-Matrix-Clock.ino”程序
  • 几项都无误后,点击"→"按钮下载程序到开发板上

拼装过程

  • Step1:将结构B2垂直插入结构B1
DotMatrixjiegou1.jpg
  • Step2:利用结构B3结构A1结构B1连接
  • Step3:
    • 结构B4插入结构B3的卡槽
    • 再把结构C1也嵌入结构B3,用结构B5卡住
DotMatrixjiegou3.jpg
  • Step2:
    • 更改点阵模块IIC地址可以参考[点阵模块IIC地址设置方法]教程
    • 将更改好IIC地址的点阵模块按定义的地址顺序从左往右连接,完成级联
    • 如下图所示,预留点阵模块靠近按键接口的连线,以便于连接Microduino-Cube-S1/zhIIC接口
DotMatrix1jilian.jpg
DotMatrixjiegou4.jpg

蓝牙交互

蓝牙连接

  • 确定手机蓝牙已打开,使用APP搜索名为“Microduino”的蓝牙设备
  • 连接成功,即可进行控制


校准时间

  • 鉴于RTC模块长时间不供电会造成时间丢失的现象,我们添加了通过蓝牙模块,利用APP校正时间
    • 点击“sync time with phone”按钮即可校正点阵的时间
DcolorMatrix ble.jpg

显示文字

    • 在输入栏写入‘hello microduino’,点击send message,点阵屏幕上会显示输入的字符
DotMatrixBle.jpg

代码说明

代码下载:文件:Dot Maxtrix Clock.zip

点阵级联

 uint8_t Addr[MatrixPix_X][MatrixPix_Y] = {                 
{ 64, 63, 62, 61}};       

定义了四个Dot Matrix模块的IIC地址是64,63,62,61,排列方式是1x4。

蓝牙

 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:怎么知道Microduino-Module Dot Matrix/zh模块IIC地址是多少?
    • A:点阵模块接上电源,待屏幕亮后按一下按键,屏幕上亮多少个白格代表iic地址就是多少
  • Q:多个点阵模块按什么顺序连接?
  • Q:怎么知道手机有没有连接到蓝牙模块?
    • A:APP界面左上角显示connected即连接成功
  • Q:蓝牙模块的跳线是什么意思?
    • A:本教程中蓝牙模块采用的是默认软串口mySerial(4,5),不需要跳线。深入了解蓝牙模块可参考蓝模块配置Microduino-Module BLE/zh