算数闹钟

来自Microduino Wikipedia
Yanglibin@microduino.cc讨论 | 贡献2015年11月16日 (一) 09:18的版本 (Created page with "{| style="width: 800px;" |- | ==目的== 搭建的是一个闹钟,通过摇杆来设置闹钟时间,按键用来设置系统时间和做算数选择题。 File: MusicBox...")
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

目的

搭建的是一个闹钟,通过摇杆来设置闹钟时间,按键用来设置系统时间和做算数选择题。

工作方式

检测Joystick摇杆方向,Y轴方向:往上短按闹钟的时增加,长按控制闹钟开启或关闭,往下短按闹钟的时减少。X轴方向:做摇动分钟加,右摇动,分钟减。 在闹钟关闭情况下,按键1设置系统时间的小时增加,按键2设置系统时间的小时减小;按键3设置系统时间的分钟增加,键4设置系统时间的分钟减小。 在闹钟开启情况下则作为A,B,C,D四个选择题的按钮。

设备

模块 数量 功能
mCookie-CoreUSB/zh 1 核心板
mCookie-Hub/zh 1 传感器转接板
mCookie-Audio/zh 1 音频模块
mCookie-Amplifier/zh 1 功率放大模块
mCookie-RTC/zh 1 时钟模块
Microduino-Crash/zh 4 碰撞传感器
Microduino-Joystick/zh 1 摇杆
  • 其他设备:
    • 喇叭两个
    • USB数据线

搭建硬件

  • Setup1:将两个Crash触碰开关接到Hub的D4,D6的引脚上,Joystick接到A0,A1上。
  • Setup 2:将TF卡装在AudioShield模块的卡槽中。
MusicBox Joystick TF.jpg
  • Setup 3:将Audio和AudioShield模块堆叠并连接PC,就可以将想要播放的MP3文件储存在TF卡根目录下。
MusicBox Joystick song.jpg
  • Setup4:将两个喇叭接到Amplifier上
MusicBox Joystick song speak.JPG
  • Setup5:将Audio,Audio shield,Amplifier三个叠堆到一块。
MusicBox Joystick 3 speak.JPG
  • Setup6:将激活后的电池盒与BM模块相连
CoreUSB Ble steup2.jpg
  • Setup7:将所有模块堆叠在一起,顺序随意(除了Audio,AudioShield和Amplifier三个要挨在一起),电路部分搭建完成了!

代码下载

文件:Music clock-Calculation.zip

代码说明

  • “audio.h”控制音频播放
  • oled.h界面显示
  • key.h检测摇杆和按键
  • choose.h按键和摇杆控制函数
  • 找到“setRtcTime(15, 11, 13, 5, 17, 14, 00);”用来设置时间,分别是:年,月,日,星期,时,分,秒。设置时去掉“//”下载代码,下载完成后加上“//”再次下载,不然每次断电再上电都会重新设置时间。
    • 在choose.h里面定义闹钟时间,用户可以更改成自己的时间。
int alarm_hour = 19;
int alarm_minute = 45;
  • 在key里面定义了按键长短执行的任务,用户可自己更改。
  • 如果闹钟设置成ON,并且到了闹钟时间播放音乐
  if (alarm)
  {
    if (alarm_switch == true)
      audio_play();
    else
      audio_pause();
  }
  • 随机生成选择题
  if (!down && alarm_switch)
  {
    num_one = random(0, 100);
    num_two = random(0, 100);

    data_choose = random(0, 4);

    if (data_choose == 0)
    {
      num_data[0] = num_one + num_two;
      num_data[1] = num_one + num_two - 10;
      num_data[2] = num_one + num_two + 10;
      num_data[3] = num_one + num_two + 1;
    }
    if (data_choose == 1)
    {
      num_data[0] = num_one + num_two - 10;
      num_data[1] = num_one + num_two;
      num_data[2] = num_one + num_two + 10;
      num_data[3] = num_one + num_two - 1;
    }
    if (data_choose == 2)
    {
      num_data[0] = num_one + num_two + 10;
      num_data[1] = num_one + num_two - 10;
      num_data[2] = num_one + num_two ;
      num_data[3] = num_one + num_two - 1;
    }
    if (data_choose == 3)
    {
      num_data[0] = num_one + num_two + 10;
      num_data[1] = num_one + num_two - 10;
      num_data[2] = num_one + num_two + 1;
      num_data[3] = num_one + num_two;
    }
    down = true;
  }
  • 如选择题做对,题目少一个,否则加一个
  if (key_num > 0)
  {
    if (key_num == data_choose + 1 )
    {
      onec_change -= 1;
      down = false;
    }
    else
      onec_change += 1;
  }

结果

通过触碰开关来设置时间,摇杆来设置闹钟时间及闹钟开关状态。你也可以通过乐高搭建一个漂亮的外观。

视频