[Fireduino试用体验] 实验三、按键控制-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4570|回复: 0

[Fireduino试用体验] 实验三、按键控制

[复制链接]
发表于 2017-7-5 10:47 | 显示全部楼层 |阅读模式
原案例有一个按键实例,但是打开编译下载后的按键PowerKey没有任何反应,查找资料和在QQ咨询均无果,只能自编按键进行实验。硬件电路设计高电平有效,原理如图30,硬件如照片31。按键响应程序如下:
先定义按键:
#define key0 28
#define key1 27
#define key2 26
#define key3 25
#define key4 24
#define key5 23
loop中的代码:
KeyEvent=digitalRead(key0)|digitalRead(key1)<<1|digitalRead(key2)<<2|digitalRead(key3)<<3|digitalRead(key4)<<4|digitalRead(key5)<<5;
switch(KeyEvent){
  case 31:
   digitalWrite(led0,HIGH);break;
  case 47:
   digitalWrite(led0,LOW);break;
  case 55:
   digitalWrite(led0,HIGH);break;
  case 59:
   digitalWrite(led0,LOW);break;
  case 61:
   digitalWrite(led0,HIGH);break;
  case 62:
   digitalWrite(led0,LOW);break;
}
只是控制led0的亮暗,结果是6个按键,从key0~key5,偶数按下led0灭[高电平],奇数按下led0亮[低电平],按键编程成功,没有照片。下边来做按键播放控制实验。计划实现按键选曲首的功能。
按键的定义不变,key0~key5,6个按键。
在dispMes()函数中增加按键显示数值,KeyEvent显示为0x3F~0x31,默认按键为逻辑1,0b00xxxxxx。x只有1个按下的为0。键盘处理程序为:
KeyEvent=digitalRead(key0)|digitalRead(key1)<<1|digitalRead(key2)<<2|digitalRead(key3)<<3|digitalRead(key4)<<4|digitalRead(key5)<<5;
switch(KeyEvent){
  case 31:
   if(Audio){
    if(Audio.getStatus()==AudioPlay){Audio.stop();}
    if(Audio.getStatus()==AudioStop){Audio.playFile("\\1.MP3");dis++;}
   }
   break;
  case 47:
   if(Audio){
    if(Audio.getStatus()==AudioPlay){Audio.stop();}
    if(Audio.getStatus()==AudioStop){Audio.playFile("\\2.MP3");dis++;}
   }
   break;
  case 55:
   if(Audio){
    if(Audio.getStatus()==AudioPlay){Audio.stop();}
    if(Audio.getStatus()==AudioStop){Audio.playFile("\\3.MP3");dis++;}
   }
   break;
  case 59:
   if(Audio){
    if(Audio.getStatus()==AudioPlay){Audio.stop();}
    if(Audio.getStatus()==AudioStop){Audio.playFile("\\4.MP3");dis++;}
   }
   break;
  case 61:
   if(Audio){
    if(Audio.getStatus()==AudioPlay){Audio.stop();}
    if(Audio.getStatus()==AudioStop){Audio.playFile("\\5.MP3");dis++;}
   }
   break;
  case 62:
   if(Audio){
    if(Audio.getStatus()==AudioPlay){Audio.stop();}
    if(Audio.getStatus()==AudioStop){Audio.playFile("\\0.MP3");dis++;}
   }
   break;
}
这样就实现了6个按键控制6首音乐选播1遍的功能,同时也实现了音乐需要先停止之后再重新启动播放。相对应的录音功能也应该是这样的大致过程可以一试。照片32-1,32-2,32-3是按键改变播放改变照片,对应的视频链接:http://v.youku.com/v_show/id_XMjg2OTMwNjIyOA==.html?spm=a2h3j.8428770.3416059.1

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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 00:05 , Processed in 0.071363 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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