首页 文章

使用arduino的串行信息在Processing中播放音频

提问于
浏览
1

我正在创建一个程序,从超声波传感器/ arduino获取串行信息,并将其发送到处理,根据输入的值,它将播放crickets.mp3或growl.mp3 .

如果值<10,则应该播放crickets.mp3如果值> 10则应该播放 .

原样,代码将播放growl.mp3,但不播放crickets.mp3

import processing.serial.*;
import ddf.minim.*;
Minim minim;
AudioPlayer player, player2;

Serial myPort; // Create object from Serial class
String dataFromArduino; // Data received from the serial port
String convertedDataFromArduino;

boolean soundactivated = false;
boolean sound2activated = false;

void setup() {
  size(640, 480);

  minim = new Minim(this);
  player = minim.loadFile("crickets.mp3");
  player2 = minim.loadFile("growl.mp3");

  printArray(Serial.list());
  String portName = Serial.list()[4]; //change the 0 to a 1 or 2 etc. to match your port
  myPort = new Serial(this, portName, 9600);
}

void draw() {
  player.pause();
  dataFromArduino = myPort.readStringUntil('\n'); // read it and store it in message

  if (dataFromArduino != null) {
    convertedDataFromArduino = trim(dataFromArduino);
    println(convertedDataFromArduino);


//Music calls   
if (int(convertedDataFromArduino) < 10 && (soundactivated == false)) {

  player.loop();
  println("crickets");
  soundactivated = true;
  sound2activated = false;
} else if (int(convertedDataFromArduino) >= 11 && (sound2activated == false)) {

  player2.loop();
  println("growl");
  sound2activated = true;
  soundactivated = false;
}

//loop();
  }
}

1 回答

  • 0

    你遗漏了很多细节,所以很难以特定的方式回答,但我会试着回答一般意义上的问题:

    是时候开始调试代码了 .

    您需要弄清楚您的代码到底在做什么 . 您可以使用调试器(一次只能逐行执行代码),或者使用 println() 语句,或者只需使用一张纸和一支铅笔自行单步执行代码即可 .

    您应该做的第一件事是确保这些声音文件有效,拼写正确(检查您的大小写),以及您认为它们所在的位置 . 创建一个简单的示例程序,只需播放没有任何Arduino代码的声音 .

    接下来,您需要确切地知道's coming from your Arduino. You'已经打印出 convertedDataFromArduino 的值 . 这个 Value 是多少?如果它总是小于 10 ,那么你需要找出's happening. If it'大于 10 的时间,那么你可以将其作为嫌疑人进行排除 .

    最后,你应该看看你的if语句 . 它们是否都在您预期的时候进入?这些打印语句是否会在您预期的时候触发?如果该值大于或等于10但小于11,会发生什么?

    如果仍然无法使其正常工作,那么您可以考虑创建一系列较小的程序 . 创建一个小程序 just 播放没有任何Arduino代码的声音 . 创建另一个小程序 just 打印出来自Arduino的值,而不播放任何声音 . 让那些工作完美,并且只在他们单独工作时尝试将它们组合在一起 . 如果您遇到困难,可以发布更具体的问题以及MCVE,我们将从那里开始 . 祝好运 .

相关问题