查看: 612|回复: 5

[未解决] 新人求助!

[复制链接]

该用户从未签到

发表于 2021-10-27 16:01 | 显示全部楼层 |阅读模式
void loop() {
      Keypad.checkChanges(); // 更新键盘状态
     if (Keypad.isKeyChanged()) { // 如果有新按键
      KeyValue = Keypad.getKeyValue();
      String6 = map (KeyValue,0,6,41,47);
      String5 = map (KeyValue,7,13,46,52);
      String4 = map (KeyValue,14,20,51,57);
      String3 = map (KeyValue,21,27,56,62);
      String2 = map (KeyValue,28,34,60,66);
      String1 = map (KeyValue,35,41,65,71);
         if (KeyValue >= 41 , KeyValue <= 47){
      noteOn(0, String6, 120); // Channel, Note, Velocity
      MidiUSB.flush();
      Serial.print("Note Played: ");
      Serial.println(String6);
      Keypad.checkChanges();
         }
      if (KeyValue >= 46 , KeyValue <= 52){
      noteOn(0, String5, 120); // Channel, Note, Velocity
      MidiUSB.flush();
      Serial.print("Note Played: ");
      Serial.println(String5);
     Keypad.checkChanges();
     }
      if (KeyValue >= 51 , KeyValue <= 57){
      noteOn(0, String4, 120); // Channel, Note, Velocity
      MidiUSB.flush();
      Serial.print("Note Played: ");
      Serial.println(String4);
     Keypad.checkChanges();
     }
      if (KeyValue >= 56 , KeyValue <= 62){
      noteOn(0, String3, 120); // Channel, Note, Velocity
      MidiUSB.flush();
      Serial.print("Note Played: ");
      Serial.println(String3);
      Keypad.checkChanges();
     }
      if (KeyValue >= 60 , KeyValue <= 66){
      noteOn(0, String2, 120); // Channel, Note, Velocity
      MidiUSB.flush();
      Serial.print("Note Played: ");
      Serial.println(String2);
     Keypad.checkChanges();
     }
      if (KeyValue >= 65 , KeyValue <= 71){
      noteOn(0, String1, 120); // Channel, Note, Velocity
      MidiUSB.flush();
      Serial.print("Note Played: ");
      Serial.println(String1);
     Keypad.checkChanges();

    }
   }
     delay(10); // 延时 10ms        
    }
不能识别键值,或者输出的值不对,请问高手们,代码是不是有问题,谢谢了!

签到天数: 180 天

[LV.7]常住居民III

发表于 2021-10-27 16:06 | 显示全部楼层
为什么6个if条件有重叠?一个按键可能进入两个if。

该用户从未签到

 楼主| 发表于 2021-10-27 16:27 | 显示全部楼层
加 了 else if 语句,键值还是不对

该用户从未签到

 楼主| 发表于 2021-10-27 16:28 | 显示全部楼层
是有重叠的,所以需要分开打印。加了 else if 语句后打印正常,键值还是不对。

签到天数: 180 天

[LV.7]常住居民III

发表于 2021-10-28 07:23 | 显示全部楼层
1. Map() 从旧值到新值。String6 = map (KeyValue,0,6,41,47);  新旧值写反了。
2. 有重叠说明你的程序逻辑还有不对的地方。比方说KeyValue是47,你想打印String6还是Sting5?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

arduino解码sbus
arduino解码sbus
市面上有很多sbus接收机,它只有一根线就可以实现很多通道的通信,其本质利用了串口通
【干货分享】mega2560原理图PCB图纸altium designer18
【干货分享】mega2560原理
分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
wemos d1 wifi具体叫啥名,我也迷糊了,无法上传程序
wemos d1 wifi具体叫啥名
淘宝入手一块这样的板,详情页提供了教程,还提供了 arduino iDE 1.6.5免安装版本,
求大佬帮忙arudino上传报错programmer is not responding
求大佬帮忙arudino上传报
报错信息avrdude: stk500_recv(): programmer is not responding avrdude: stk500_get
新手求助!端口不显示的问题
新手求助!端口不显示的问
我的板子连到电脑上没有显示端口,试过安装ch340和驱动精灵都识别不出来,数据线也换
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表