【问题标题】:Using serial information from arduino to play audio in Processing使用来自 arduino 的串行信息在处理中播放音频
【发布时间】:2016-02-24 07:06:47
【问题描述】:

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

crickets.mp3 如果值 10

,则应该播放 growl.mp3

按原样,代码将播放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();
  }
}

【问题讨论】:

    标签: audio arduino processing minim


    【解决方案1】:

    你遗漏了很多细节,所以很难以具体的方式回答,但我会尝试从一般意义上回答:

    是时候开始调试你的代码了。

    您需要弄清楚您的代码在做什么。您可以使用调试器(一次只单步执行一行代码)或使用println() 语句来执行此操作,或者只需使用一张纸和一支铅笔自己单步执行您的代码。

    您应该做的第一件事是确保这些声音文件有效,拼写正确(检查您的大小写),并且在您认为的位置。创建一个无需任何 Arduino 代码即可简单播放声音的小示例程序。

    接下来,您需要弄清楚您的 Arduino 到底是什么。您已经打印出convertedDataFromArduino 的值。那价值是什么?如果它总是小于10,那么你需要弄清楚发生了什么。如果它大于您预期的10,那么您可以将其排除为嫌疑人。

    最后,你应该看看你的 if 语句。当您期望它们进入时,它们是否都输入了?这些打印语句是否在您期望的时候触发?如果值大于等于 10 但小于 11 会怎样?

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

    【讨论】:

      猜你喜欢
      • 2020-04-27
      • 1970-01-01
      • 2012-05-23
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多