hi everyone i need help im making my project with servo motors and waveshield. im having problem with waveshield when the servo motor is attach to arduino.. the sound is not working.. but when i remove the servo motors to my circuit the sounds work. i have 2 supply, one for servo motors and 1 for the whole circuit..
i used gizduino x arduino
http://www.e-gizmo.com/KIT/gizDuino%20X.html
and wave shield from ebay.
http://www.ebay.com/itm/Wave-Sound-Shield-Module-V1-0-Arduino-Compatible-/270941553333?pt=LH_DefaultDomain_0&hash=item3f156002b5
my source code
// waveshield
int RST = 3;
int CLK = 9;
int DAT = 8;
// left repulsor
int rightPin = 16;
int ledPin = 6;
int button = 0;
//Right repulsor
int leftPin = 20;
int ledPin2 = 4;
int button2 = 0;
//servo
#include <Servo.h>
//flaps
int swpinservo = 22;
Servo left;
Servo right;
//light
int boosterled = 11;
//helm
#include <Bounce.h>
#define BUTTON 14
#define LED 13
Servo helmet;
int ledValue = LOW;
Bounce bouncer = Bounce( BUTTON, 5 );
void pew(){
//light dimming in
analogWrite(ledPin, 5);
delay(300);
analogWrite(ledPin, 10);
delay(300);
analogWrite(ledPin, 15);
delay(300);
analogWrite(ledPin, 20);
delay(300);
analogWrite(ledPin, 25);
delay(200);
analogWrite(ledPin, 30);
delay(200);
analogWrite(ledPin, 35);
delay(200);
analogWrite(ledPin, 40);
delay(200);
analogWrite(ledPin, 45);
delay(400);
analogWrite(ledPin, 50);
delay(300);
analogWrite(ledPin, 255);
delay(100);
analogWrite(ledPin, 0);
delay(100);
analogWrite(ledPin, 255);
delay(100);
analogWrite(ledPin,20);
delay(200);
}
void pewew(){
//light dimming out
analogWrite(ledPin, 20);
delay(300);
analogWrite(ledPin, 18);
delay(300);
analogWrite(ledPin, 16);
delay(300);
analogWrite(ledPin, 14);
delay(300);
analogWrite(ledPin, 12);
delay(300);
analogWrite(ledPin, 10);
delay(300);
analogWrite(ledPin, 8);
delay(300);
analogWrite(ledPin, 6);
delay(300);
analogWrite(ledPin, 4);
delay(300);
analogWrite(ledPin, 2);
delay(300);
analogWrite(ledPin,0);
}
void setup() {
// wave shield
pinMode(RST, OUTPUT);
pinMode(CLK, OUTPUT);
pinMode(DAT, OUTPUT);
digitalWrite(RST, HIGH);
digitalWrite(CLK, HIGH);
digitalWrite(DAT, HIGH);
digitalWrite(RST, LOW);
delay(5);
digitalWrite(RST, HIGH);
delay(300);
// right repulsor
pinMode(rightPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(button, LOW); /* Set button initially as LOW /
//left repulsor
pinMode(leftPin, INPUT);
pinMode(ledPin2, OUTPUT);
digitalWrite(button2, LOW); / Set button initially as LOW */
//servo flaps
left.attach(7);
right.attach(5);
pinMode(swpinservo, INPUT);
pinMode(boosterled, OUTPUT);
//status position
left.write(128);
right.write(44);
//helmet
pinMode(BUTTON,INPUT);
pinMode(LED,OUTPUT);
helmet.attach(1);
helmet.write(0);
}
void loop() {
//right repulosr
if(digitalRead(rightPin) == HIGH && button == 0){
delay(100);
button = 1;
//sound
send(0x0001);
delay(100);
send(0xfff7);
delay(600);
//light
pew();
send(0xfffe);// pause
}
else if(digitalRead(rightPin) == LOW && button == 1){
button = 0;
pewew();
send(0x0003);
delay(350);
send(0xfff7);
}
//left repulsor
if(digitalRead(leftPin) == HIGH && button2 == 0){
delay(200); /
button2 = 1;
//sound
send(0x0002);
delay(100);
//light
analogWrite(ledPin2, 5);
delay(100);
analogWrite(ledPin2, 20);
delay(100);
analogWrite(ledPin2, 40);
delay(100);
analogWrite(ledPin2, 50);
delay(100);
analogWrite(ledPin2, 70);
delay(100);
analogWrite(ledPin2, 255);
delay(100);
analogWrite(ledPin2, 0);
delay(100);
analogWrite(ledPin2, 255);
delay(100);
analogWrite(ledPin2,60);
//stop
delay( 200);
send(0xfff7);//set voice volumn to 7
delay(300);
send(0xfffe);// pause
}
else if(digitalRead(leftPin) == LOW && button2 == 1){
button2 = 0;
analogWrite(ledPin2, 20);
delay(100);
analogWrite(ledPin2, 12);
delay(100);
analogWrite(ledPin2, 6);
delay(100);
analogWrite(ledPin2, 0);
}
//------- air flaps function
if (digitalRead(swpinservo) == HIGH)
{
delay(50);
left.write(50);
right.write(125);
delay(200);
digitalWrite(boosterled,HIGH);
}
else{
left.write(128);
right.write(44);
digitalWrite(boosterled,LOW);
}
//--------------- helmet function
if ( bouncer.update() ) {
if ( bouncer.read() == HIGH) {
if ( ledValue == LOW ) {
delay(10);
helmet.write(4);
delay(700);
ledValue = HIGH;
} else {
helmet.write(175);
ledValue = LOW;
}
digitalWrite(LED,ledValue);
}
}
}
//function of wave shield data
void send(int data)
{
digitalWrite(CLK, LOW);
delay(2);
for (int i=15; i>=0; i--)
{
delayMicroseconds(50);
if((data>>i)&0x0001 >0)
{
digitalWrite(DAT, HIGH);
//Serial.print(1);
}
else
{
digitalWrite(DAT, LOW);
// Serial.print(0);
}
delayMicroseconds(50);
digitalWrite(CLK, HIGH);
delayMicroseconds(50);
if(i>0)
digitalWrite(DAT, LOW);
else
digitalWrite(DAT, HIGH);
delayMicroseconds(50);
if(i>0)
digitalWrite(CLK, LOW);
else
digitalWrite(CLK, HIGH);
}
delay(20);
}