新人求助!-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1925|回复: 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        
    }
不能识别键值,或者输出的值不对,请问高手们,代码是不是有问题,谢谢了!
发表于 2021-10-27 16:06 | 显示全部楼层
为什么6个if条件有重叠?一个按键可能进入两个if。
 楼主| 发表于 2021-10-27 16:27 | 显示全部楼层
加 了 else if 语句,键值还是不对
 楼主| 发表于 2021-10-27 16:28 | 显示全部楼层
是有重叠的,所以需要分开打印。加了 else if 语句后打印正常,键值还是不对。
发表于 2021-10-28 07:23 | 显示全部楼层
1. Map() 从旧值到新值。String6 = map (KeyValue,0,6,41,47);  新旧值写反了。
2. 有重叠说明你的程序逻辑还有不对的地方。比方说KeyValue是47,你想打印String6还是Sting5?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 21:57 , Processed in 0.072625 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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