Paso 3: codificación
#include < NewPing.h >
#include < SoftwareServo.h >
#include < FatReader.h >
#include < SdReader.h >
#include < avr/pgmspace.h >
#include "WaveUtil.h"
#include "WaveHC.h"#define TRIGGER_PIN 7
#define ECHO_PIN 6
#define MAX_DISTANCE 500Tarjeta SdReader;
FatVolume vol;
FatReader raíz;
FatReader f;Ola WaveHC;
Sonar de NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
SoftwareServo servo1;unsigned int pingSpeed = 50;
pingTimer largo sin firmar;botones de Byte [] = {A0, A1, A2, A3, A4, A5};
#define NUMBUTTONS sizeof(buttons)
int freeRam(void)
{
extern int __bss_end;
extern int * __brkval;
int free_memory;
Si ((int) __brkval == 0) {}
free_memory = ((int) & free_memory)-((int) & __bss_end);
}
Else {}
free_memory = ((int) & free_memory)-((int) __brkval);
}
volver free_memory;
}void sdErrorCheck(void)
{
Si (! card.errorCode()) retorno;
putstring ("\n\rSD I/O error:");
Serial.Print(Card.ErrorCode(), hexagonal);
putstring (",");
Serial.println(Card.errorData(), hexagonal);
while(1);
}void setup() {}
Serial.Begin(115200);servo1.Attach(9);
Si (! {card.init(true))}
Si (! {card.init())}
putstring_nl ("tarjeta init. no se pudo!");
sdErrorCheck();
while(1);
card.partialBlockRead(true);parte de uint8_t;
para (parte = 0; parte < 5; parte ++) {}
Si (vol.init (tarjeta, parte))
rotura;
}
Si (parte == 5) {}
sdErrorCheck();
while(1);
}putstring ("partición de uso");
Serial.Print (parte, DEC);
putstring (", el tipo es grasa");
Serial.println(Vol.fatType(),DEC);
Si (! {root.openRoot(vol))}
putstring_nl ("no se puede abrir raíz dir!");
while(1);
}
}
}
}
void loop() {}
Delay(100);
unsigned int nos = sonar.ping();
Serial.Print ("Ping:");
Serial.Print(US / US_ROUNDTRIP_CM);
Serial.println("cm");
Si ((uS / US_ROUNDTRIP_CM) < 50) {}
servo1.Write(160);
SoftwareServo::refresh();
myservo1.Write(90);
}
Else {}
servo1.Write(0);
SoftwareServo::refresh();
myservo1.Write(0);
}
byte me;
jugar static byte = -1;
int sensor0 = analogRead (botones [0]);
int sensor1 = analogRead (botones [1]);
int sensor2 = analogRead (botones [2]);
int sensor3 = analogRead (botones [3]);
sensor4 int = analogRead (botones [4]);
int sensor5 = analogRead (botones [5]);
Si {} (analogRead (botones [0]) > 900)
Si (jugando! = 0) {}
jugar = 0;
playfile("0.wav");
}
}
Serial.Print ("LDR A1 =");
Serial.Print(sensor1);
Si {} (analogRead (botones [1]) > 900)
Si (jugando! = 0) {}
jugar = 0;
playfile("1.wav");
}
}
Serial.Print ("LDR A2 =");
Serial.Print(sensor2);
Si {} (analogRead (botones [2]) > 900)
Si (jugando! = 0) {}
jugar = 0;
playfile("2.wav");
}
}
Serial.Print ("LDR A3 =");
Serial.Print(sensor3);
Si {} (analogRead (botones [3]) > 150)
Si (jugando! = 0) {}
jugar = 0;
playfile("3.wav");
}
}
Serial.Print ("LDR A4 =");
Serial.Print(sensor4);
Si {} (analogRead (botones [4]) > 150)
Si (jugando! = 0) {}
jugar = 0;
playfile("4.wav");
}
}
Serial.Print ("LDR A5 =");
Serial.println(sensor5);
Si {} (analogRead (botones [5]) > 150)
Si (jugando! = 0) {}
jugar = 0;
playfile("5.wav");
}
}
Si (! wave.isplaying) {}
jugar = -1;
}
}
void playcomplete(char *name) {}
playfile(Name);
mientras (wave.isplaying) {}
}
}
void playfile(char *name) {}
Si (wave.isplaying) {}
Wave.STOP();
}
Si (! f.open (raíz, nombre)) {}
putstring ("no puede abrir archivo"); Serial.Print(Name); retorno;
}
Si (! {wave.create(f))}
putstring_nl ("no un válido WAV"); retorno;
}
Wave.Play();
}
Necesitará instalar biblioteca de Softwareservo a tu arduino ya waveshield y Servo utiliza el mismo temporizador en arduino... pero cuando se utiliza la biblioteca de Softwareservo funciona todo bien.
Edificio feliz