Pages: [1]   Go Down
Author Topic: (Arduino + Processing) Scarttings noise comming from mini speakers?  (Read 145 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Info about the projcet:
I'm interfering with the arduino over a serial port system. What its supposed to do is to change the output from when I pressed Q and W to high and low, respectally. Beside that I want it to play different notes on the keys from A->K. Theres not much going into it. It's one of my first real "on my own builds" and I had only a few random parts lying around. What I used in this was:
  • A mini speaker
  • A 470 resistor hooked to pin 9
  • A 1k resistor hooked to pin 3
  • An arduino  :smiley  smiley-kitty

The problem in a nutshell:
So basicly when I use the arduinos serial and put my commands into it, my mini speaker works perfectly. So I won't be sending picture of the circuit, nor do I have anything that can take pictures. Beside that the problem is more or less that when I input the commands into Arduinos serial it produce clear sound, thus when I run my program over processing and hits my keys it fucks up.
The power is lower so is the sound. I get scattering sounds and it just sounds awful.

The Codes:
Arduino part:
Code:
/*
          beep(speakerPin,2093,tempo); //C: play the note C (C7 from the chart linked to above) for tempoms
 beep(speakerPin,2349,tempo); //D
 beep(speakerPin,2637,tempo); //E
 beep(speakerPin,2793,tempo); //F
 beep(speakerPin,3136,tempo); //G
 beep(speakerPin,3520,tempo); //A
 beep(speakerPin,3951,tempo); //B
 beep(speakerPin,4186,tempo); //C
 */

int High = 9;
int Low = 3;
int Volume = 9;
int LoopTime = 379*2;


void beep (int speakerPin, int Hertz,char Note)     // the sound producing function
{
  int x = 0;
  Serial.println("Beep was called by the note of:");
  long delayAmount = (long)(1000000/Hertz);
  Serial.println(delayAmount);

  do{
    digitalWrite(speakerPin,HIGH);
    delayMicroseconds(delayAmount);
    digitalWrite(speakerPin,LOW);
    delayMicroseconds(delayAmount);
    x = x+1;
  }
  while (Serial.read()!='R');
  Serial.println("I was released");
}
void setup()
{
  Serial.begin(9600);
  pinMode(High, OUTPUT);
  pinMode(Low, OUTPUT);

  //Testing sound
  analogWrite(Volume, 255);
}

void loop() // run over and over again
{
  while(Serial.available() == 0);
  switch(char val = Serial.read()){
  case 'H':
    Volume = 9;
    Serial.println("Volume was set to high");
    break;
  case 'L':
    Volume = 3;
    Serial.println("Volume was set to low");
    break;
  case 'C':
    beep(Volume,2093,'C');
    break;
  case 'D':
    beep(Volume,2349,'D');
    break;
  case 'E':
    Serial.println("PLAYING E");
    Serial.println(Volume);
    beep(Volume,2637,'E');
    break;
  case 'F':
    beep(Volume,2793,'F');
    break;
  case 'G':
    beep(Volume,3136,'G');
    break;
  case 'c':
    beep(Volume,4186,'c');
    break;
  case 'A':
    beep(Volume,3520,'A');
    break;
  case 'B':
    beep(Volume,3951,'B');
    break;
  }
}
Processing part:
Code:
import processing.serial.*;
Serial port;

int HighVol = 8;
int LowVol = 3;
int volume = LowVol;

void setup() {
  size(100, 400);
  port = new Serial(this, "COM8", 9600);
  port.bufferUntil('\n');
}

void draw() {
  if (keyPressed) {
    switch(key) {
    case 'q':
      port.write("L");
    case 'w':
      port.write("H");
    case 'a':
      port.write("C");
    case 's':
      port.write("D");
    case 'd':
      port.write("E");
    case 'f':
      port.write("F");
    case 'g':
      port.write("G");
    case 'h':
      port.write("A");
    case 'j':
      port.write("B");
    case 'k':
      port.write("c");
    }
  }
  port.write("R");
}
Logged

Pages: [1]   Go Up
Jump to: