DIY-制造一个随机提问的闹钟

简介

您平时起床有困难吗?早上设置十多个闹钟,但仍然无法唤醒并发呆时将其关闭。当您醒来并发现自己迟到时,便怪闹钟没有发出任何声音。为了帮助我更好地完成996个工作日,特制了一个简单的小型闹钟-随机问问题的闹钟。令人不愉快的哭声使您无法入睡。另外,在回答过程中,您必须专心听问题,否则,您将无法判断是在问“一加一是多少”还是“多少个单词中有多少个单词”是一个加一个。”它是家庭必备产品,是将您逼入人生巅峰的最好助手。

材料清单:(原文中有链接)

Arduino UNO×1

IO扩展板×1

语音识别×1

语音合成模块×1

DS3231M MEMS精密RTC×1

7.4V Lipo 2500mAh电池×1

数字按钮(白色)×1

8位LED分段显示模块×1

I2C集线器x 1

立体声封闭扬声器-3W8Ω


 

步骤1:设计思路


 


 

我从DFRobot获得了两个非常有趣的小模块,一个是语音合成模块,另一个是语音识别模块。

因此,我想到了制作一个闹钟。我觉得每个人早上都很难起床,普通的闹钟里塞满了大炮草。然后出现了制作“真实”闹钟的想法。实际上,我发现当人们醒来后头脑变得清晰起来时,他们就不想再睡觉了。因此,无论是带轮运转的闹钟还是拍打人的闹钟,都是要让被动选择起床。在这里做一个温和的,带有随机问题的闹钟。如果答案正确,它将停止发出噪音;如果答案不正确,它将使您烦恼。

步骤2:开始制作封面


 


 


 


 

找一个合适的纸箱,我这里没有合适的纸箱。所以我用两个小个子,然后将它们粘在一起,做成一个大个子。

步骤3:如下连接每个模块


 

时钟模块→Uno IIC

时钟模块INT引脚→uno D2

扬声器红线→Uno D3

扬声器黑线→Uno GND

IIC扩充板→UNO IIC

白色按钮→Uno D4

语音识别,合成,LED段代码→IIC扩展板

步骤4:重新安装盖子和组件


 


 


 

1.在LED分段屏幕上开一个孔,在机箱背面开一个用于扬声器和电池的孔。

2.使用热熔胶将所有模块粘合在一起,最后将所有设备放入包装盒中。

步骤5:编程

安装每个模块的库功能,调整您要询问的问题和警报设置的时间,然后将程序刻录到其中。

/ *!
* @file
setAlarmInterrupt.ino * @简要设置警报,并使用输入引脚触发
* * n实验现象:将闹钟设置为在指定时间触发
* @n将SQW引脚与DIGITALPIN2连接
* @n在串口上打印信息闹钟触发后的端口。
* @copyright版权所有(c)2010 DFRobot Co.Ltd(http://www.dfrobot.com)
* @licence MIT许可证(MIT)
* @author [LuoYufeng](yufeng.luo@dfrobot.com)
* @version V0.1
* @date 2019年8月19日
* @url https://github.com/DFRobot/DFRobot_DS3231M
* /
#include “DFRobot_DS3231M.h”
#include “ DFRobot_SpeechSynthesis.h” #include“ DFRobot_ASR.h”
#include “ DFRobot_LedDisplayModule.h


DFRobot_LedDisplayModule LED(Wire,0xE0);
DFRobot_SpeechSynthesis_I2C ss;
DFRobot_ASR asr;
volatile int8_t alarmFlag = 0;
unsigned long delay= 3000;
unsigned long timelast = 0;
unsigned long timenow = 0;
unsigned char hourval = 0;
unsigned char hourhigh = 0;
unsigned char hourlow = 0;
unsigned char minutesval = 0;
unsigned char minuteshigh = 0;
unsigned char minuteslow = 0;
unsigned char secondval = 0;
unsigned char secondhigh = 0;
unsigned char secondlow = 0;
char str1 [2];
char str2 [2];
char str3 [2];
char str4 [2];
char str5 [2];
char str6 [2];
char str7 [2];
char str8 [2];
DFRobot_DS3231M rtc;

void setup(void)
{
Serial.begin(9600);
while(LED.begin8()!= 0)
{
Serial.println(“芯片初始化失败,请确认芯片连接正确!”);
延迟(1000);
}

ss.begin();
/ *等待芯片完全初始化,然后退出* /
while(rtc.begin()!= true){
Serial.println(“无法初始化芯片,请检查芯片连接是否正确。”);
延迟(1000);
}
/ *!
* @简短设置引脚sqw的值
* @ param模式eDS3231M_OFF = 0x01 //不输出方波,进入中断模式
* @ n eDS3231M_SquareWave_1Hz = 0x00 // 1Hz方波
* @ n eDS3231M_SquareWave_1kHz = 0x08 // 1kHz方波
* @ n eDS3231M_SquareWave_4kHz = 0x10 // 4kHz方波
* @ n eDS3231M_SquareWave_8kHz = 0x18 // 8kHz方波
* /
rtc.writeSqwPinMode(eDS3231M_OFF);

/ *!
* @简短启用Alarm1中断
* /
rtc.enAbleAlarm1Int();

/ *!
* @简短禁用Alarm1中断
* /
//rtc.disAbleAlarm1Int();

/ *!
* @简短启用Alarm2中断
* /
//rtc.enAbleAlarm2Int();

/ *!
* @简短禁用Alarm2中断
* /
//rtc.disAbleAlarm2Int();
// Alarm1
rtc.setAlarm(eMinutesHoursDayMatch,/ *日期,0-30 * / 30,/ *小时,12小时内1-12,24小时内0-23 * / 15,e24小时,
/ *分钟,0-59 * / 13,/ *秒,0-59,此参数在Alarm2 * / 42中不起作用);
//报警2
//rtc.setAlarm(eMinutesHoursDayMatch,/*日期,0-30 * / 30,
/ *小时,12小时内1-12,24小时内0-23 * / 15,e24小时,// / *分钟,0-59 * / 13,/ * second,0-59,此参数在Alarm2 * / 42中不起作用);
如果(rtc.lostPower()){
Serial.println(“ RTC掉电,请设置时间!”);
rtc.setYear(21); //设置年份,默认为21世纪。
rtc.setMonth(3);
rtc.setDate(10);
rtc.setHour(15,e24hours);
rtc.setMinute(12);
rtc.setSecond(45);
rtc.adjust();
}
attachInterrupt(0,interrupt,FALLING);
pinMode(3,输出);
pinMode(4,输入);
asr.begin(LOOP);
asr.addCommand(“ san”,3);

}

void loop(){
/ *!
* @简短判断闹钟是否被触发
* @返回true,被触发;false,未触发
* /
rtc.getNowTime();
Serial.print(rtc.year(),DEC);
Serial.print('/');
Serial.print(rtc.month(),DEC);
Serial.print('/');
Serial.print(rtc.day(),DEC);
Serial.print(“(”);
Serial.print(rtc.getDayOfTheWeek());
Serial.print(“)”);
Serial.print(rtc.hour(),DEC);
Serial.print(':');
Serial.print(rtc.minute(),DEC);
Serial.print(':');
Serial.print(rtc.second(),DEC);
Serial.print('');
/ *如果rtc在24小时模式下工作,则此功能不会打印任何内容* /
Serial.print(rtc.getAMorPM());
Serial.println();
hourval = rtc.hour();
hourhigh = hourval / 10;
hourlow = hourval%10;
minutesval = rtc.minute();
minuteshigh = minutesval / 10;
minuteslow = minutesval%10;
secondval = rtc.second();
secondhigh = secondval / 10;
secondlow = secondval%10;
sprintf(str1,“%d”,hourhigh);
sprintf(str2,“%d”,hourlow);
sprintf(str4,“%d”,分钟高);
sprintf(str5,“%d”,minuteslow);
sprintf(str7,“%d”,第二高);
sprintf(str8,“%d”,第二低);
LED.setDisplayArea8(1,2,3,4,5,6,7,8);
LED.print8(str1,str2,“-”,str4,str5,“-”,str7,str8);
延迟(500);
if(alarmFlag == 1){

Serial.println(“闹钟已触发。”);
延迟(100);
do {
tone(3,400,2000);
} while(!digitalRead(4));
noTone(3);
ss.speak(“”);

ss.speak(“一加一是多少”);
asr.start();
timelast = millis();
while(1)
{
if(asr.read()== 3){
Serial.println(“ received'san',command flag'0'”“);
rtc.clearAlarm();
alarmFlag = 0;
break;
}
timenow = millis();
if((timenow-timelast)> = timeout){
Serial.println(“ received'x',command flag'x'”);
break;
}
}

}
else
delay(100);
如果(rtc.lostPower()){
Serial.println(“ RTC掉电,请重设时间!”);
}
}

void interrupt(){
alarmFlag = 1;
}

 

步骤 6:然后完成


 


 


 


 

谢谢阅读!欢迎对此项目有任何意见。

 


FAQ:

版权说明

本文遵循CC BY-SA版权协议,转载请附上原文出处链接及本声明。
链接:http://chandianzi.cn/making-a-alarm-clock-that-asks-questions-randomly.html
作者:Jaychouu
版权协议:CC BY-NC-SA
分类名称:arduino-10
资源标识:Making-a-Alarm-Clock-That-Asks-Questions-Randomly

生成海报
点赞 0

Jaychouu

我还没有学会写个人说明!

暂无评论

相关推荐

自制一辆arduino主控的小型铲车

简介:JCB机器JCB机械非常受欢迎,因为它是民用工业中的重型建筑设备。JCB也被称为反铲装载机。它可用于非常快速地装卸卡车。它用于道路建设,卡车装卸以及更多其他用途。每个建筑公司都使用它,因为它足够快并且可以举起沉重的重量。步骤1:视频步骤2:使用的材料1,ArduinoNano-1个2.游戏杆模块-2个3.伺服电机(180度)-4号4.公对母跳线-根据要求5.公对公跳线-根据要求6.直流轴电机-2个7.按钮-2个8.迷你面包板9.电源-5V1Amps步骤3:3D零件这些是JCB的3D装配零件。步骤4:从物理建筑开始-伺服电机1首先使用Fevikwik将带有附接部件的臂固定在相应的插槽中。然

DIY自制arduino智能室内药草园-G

简介:智慧室内药草园在这本教学手册中,我将向您展示如何制作我的智能室内药草园!我对该项目有一些启发,首先是我对家用Aerogarden模型产生了一些兴趣。此外,我有一个未使用过的带有TFT触摸屏护罩的ArduinoMega,它已经在我的电子垃圾箱中呆了好几年了。我想出了为什么不尝试使用Arduino创建我自己的Aerogarden像药草园那样的机会,而我在隔离期间会有一些额外的时间!我最终对该项目做了一些额外的工作,因为我在每个土壤等分试样中都添加了湿度传感器,但是到目前为止,它已经被证明是有用的。总而言之,我对任何事情的结果都不满意!我刚刚完成了这个项目,并在2020年5月7日种植了一些罗勒

电子DIY:Arduino控制模型电梯-G

简介:Arduino控制的模型电梯在这本教程中,我将向您展示如何构建一个两层玩具电梯,该电梯具有工作的滑动门和可按需上下移动的轿厢。电梯的心脏是一个ArduinoUno(或本例中的AdafruitMetro),其顶部安装了AdafruitMotorShield。防护罩使驱动打开和关闭车门所需的两个伺服器以及使汽车上下运动的步进电机变得更加容易。实际的结构实际上是很容易的部分,可以按照您想要的任何方式进行制作。棘手的部分是使所有内容放入内部,并确保所有内容正确对齐。就是说,让我们开始吧!材料清单:ArduinoUno(或等效版本)Adafruit马达护罩穿孔板Arduino和Shield的接头连

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

DIY-制造一个随机提问的闹钟