YFROBOT创客社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15339|回复: 9

arduino 语音报时时钟制作!DS1302时钟模块使用,IIC LCD1602显示!

[复制链接]

签到天数: 866 天

[LV.10]以坛为家III

发表于 2015-8-13 10:28:59 | 显示全部楼层 |阅读模式
本帖最后由 AllBlue 于 2017-1-6 19:29 编辑

arduino 语音报时时钟制作!

arduino UNO+DS1302+lcd1602+OTP语音芯片+8欧0.5W喇叭 制作整点报时时钟!!
准备物品:
       控制板:arduino UNO
       液晶显示:IIC LCD1602
       语音芯片:OTP定制语音芯片 - NY3P系列
       喇叭:8Ω0.5W小喇叭
       时钟模块:DS1302时钟芯片

IIC LCD1602之前的帖子介绍过用法:点击回看

这里我们介绍下DS1302时钟芯片和 NY3P定制语言芯片的基本用法!

1、DS1302时钟芯片
简介:DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。百度百科详细介绍

典型应用及引脚图:

这里要说一下的是:
* DS1302具有双电源,芯片引脚Vcc2为主电源,Vcc1为后备电源;在主电源断电的情况下,有后背电源的支持,芯片继续工作!如何选择电源呢?DS1302会由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。

* 晶振使用的是32.768kHz,它的好坏直接关系到时间的准确度,都说1302准确度不高,找个时间,买个1307跑一次长的,对比看看时间都有多少误差!

手册下载:
库文件下载:
库文件中有两个例程,很好的展示了库的使用,使用前可以先研究下!

2、NY3P 定制语言芯片
该芯片为OTP(One Time Programmable) 语音芯片      OTP(One Time Programable)是指一次性可编程语音芯片,语音只能烧写一次,适合应用在不需要修改语音、语音长度短的场合,从放音的长度上可以分为10秒、21秒、42秒、85秒、170秒、340秒。
语音芯片引脚图:

语音芯片与UNO电路连接:

语音芯片的具体语音内容看下图:

控制方式也很简单,I/O口直接发送脉冲,即可调用相应地址的语音!当然只适合短语音且不需要经常更改的场合!
下面是arduino驱动例程中的主要函数:
[C] 纯文本查看 复制代码
void Broadcast(uint8_t band) {
  digitalWrite(rst, HIGH);
  delayMicroseconds(200);
  digitalWrite(rst, LOW);
  delayMicroseconds(200);
  int playBand = band;
  while (band > 0) {
    digitalWrite(data, HIGH);
    delayMicroseconds(100);
    digitalWrite(data, LOW);
    delayMicroseconds(100);
    band--;
  }
  delay(interval * VoiceNum[playBand - 1]);
}


其中 interval 和VoiceNum[]为常量,之前定义好的:
[C] 纯文本查看 复制代码
//经过测试: 400ms*xx为最佳间隔时间
//例如: 0 + delay(400*1);  现在时刻北京时间 + delay(400*4.5); 具体值见数组:VoiceNum
#define interval 400
const float VoiceNum[32] = {
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1, 1, 1, 1, 1, 1,
  1, 1, 1.5, 4.5, 1, 1.5, 1, 1.5,
  2, 2, 2, 3, 2, 3, 4.5, 4.5
};


卖家给的用户手册:
arduino驱动语音芯片例程:

---------------------------------------------------------------------分隔线--------------------------------------------------------------

下面进入正题!元件模块单独都会使用了,下面就要将他们整合起来!让时间“飞起来”!!!
arduino程序下载:
根据程序引脚定义连接电路,引脚不固定,你可以根据实际情况定义引脚连接电路:
[C++] 纯文本查看 复制代码
const int kCePin   = 5;     // D5  - DS1302 Chip Enable
const int kIoPin   = 6;     // D6  - DS1302 Input/Output
const int kSclkPin = 7;     // D7  - DS1302 Serial Clock
const int busy = A0;        // A0  - 语音芯片 busy引脚
const int data = A1;        // A1  - 语音芯片 data引脚
const int rst = A2;         // A2  - 语音芯片 reset引脚

程序实现以下功能:
1、串口调整时间,串口直接发送数据,校准时间,数据格式 -  "year,month,date, hour,minutes,seconds,day"
例如:"2015,8,13,10,50,50,5" 最后的5表示星期四  ,day对应关系:
     Sunday = 1,   Monday = 2, Tuesday = 3, Wednesday = 4,  Thursday = 5,  Friday = 6, Saturday  = 7
2、语音整点报时

程序只简答实现时钟功能,你还可以增加,白天报时,晚间不报时!定时闹钟等等!!
赶紧动手制作自己的小钟吧!

马上补拍个简单的视频,整点给大家报个时~~

视频见一楼~~~



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

签到天数: 866 天

[LV.10]以坛为家III

 楼主| 发表于 2015-8-14 08:05:31 | 显示全部楼层
回复 支持 2 反对 0

使用道具 举报

签到天数: 2 天

[LV.1]初来乍到

发表于 2019-1-10 16:04:22 | 显示全部楼层
下载一下,试试能不能用
回复 支持 反对

使用道具 举报

签到天数: 2 天

[LV.1]初来乍到

发表于 2019-1-26 09:38:17 | 显示全部楼层
您好,我编译了您下载包里的程序,但是有多处显示未定义,请问有稍成熟一些的例程吗
回复 支持 反对

使用道具 举报

签到天数: 866 天

[LV.10]以坛为家III

 楼主| 发表于 2019-1-26 13:08:45 | 显示全部楼层
林雨天心 发表于 2019-1-26 09:38
您好,我编译了您下载包里的程序,但是有多处显示未定义,请问有稍成熟一些的例程吗

例程我都运行过没问题的,你下载了程序多出显示未定义可能是库没添加。如果库添加了还出现可以私信我或加我qq2912630748。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2019-10-30 12:53:31 | 显示全部楼层
学习学习,想改成每日报特价菜名
回复 支持 反对

使用道具 举报

签到天数: 4 天

[LV.2]偶尔看看I

发表于 2019-11-16 23:14:34 | 显示全部楼层

视频好像看不了
回复 支持 反对

使用道具 举报

签到天数: 866 天

[LV.10]以坛为家III

 楼主| 发表于 2019-11-25 13:34:01 | 显示全部楼层
beryl 发表于 2019-11-16 23:14
视频好像看不了

是的,给了地址了
回复 支持 反对

使用道具 举报

签到天数: 1 天

[LV.1]初来乍到

发表于 2020-4-23 23:07:06 | 显示全部楼层
很详细的DS1302教程及资料,目前正在实验中
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|联系我们|YFROBOT ( 苏ICP备20009901号-2  

GMT+8, 2024-4-18 16:42 , Processed in 0.068819 second(s), 26 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表