Paso 8: Conectar el arduino
Conectar tu arduino al ordenador, copia y pega este código y ponerlo en su arduino.Si el código no se ve a continuación, incluí un archivo txt de él por lo que sólo se puede descargar de esa manera.
-----------------------------------------------------------------------------------------------------------------------------------
#include
#include
#include "util.h"
#include "wave.h"
#define DEBOUNCE 100
#define swPin 14
#define eyeleds 18
Tarjeta de AF_Wave;
Archivo f;
Wavefile onda;
int inputPin = 8; elegir la clavija de entrada (para el sensor PIR)
int servoPin = 16; elegir la entrada de pin (Servo)
int pirState = bajo; Empezamos suponiendo que no hay movimiento detectado
int val = 0; variable para lectura del estado del pin para el sensor de movimiento
int minPulse = 600; posición de servo mínimo
int maxPulse = 2200; posición máxima servo
int turnRate = 1800; servo gire a incremento de la tasa (valor más grande, más rápido)
int refreshTime = 20; tiempo (ms) entre pulsos (50Hz)
int mouthchange = 6; comprueba si la posición de la boca necesita cambiarse
int randNumber; variable de número aleatorio para permitir la elección de que wav se jugará
/ ** El Arduino calculará estos valores para usted ** /
int centerServo; posición de servo central
int anchura de impulso; anchura de pulso del servo
lastPulse largo = 0; registro de los tiempos (ms) del último pulso
void setup() {}
Configurar puerto serie
Serial.Begin(9600);
pinMode (inputPin, entrada); declarar el sensor como entrada para PIR
pinMode (eyeleds, salida); declarar el sensor como salida para los ojos
configurar pin de servo
pinMode (servoPin, salida); Configurar servo pin 18 (4 analógicos) como un pin de salida
centerServo = maxPulse - ((maxPulse-minPulse)/2);
anchura de impulso = centerServo; Dar el servo de un punto de partida (o flota)
configurar waveshield pins
pinMode (2, salida);
pinMode (3, salida);
pinMode (4, salida);
pinMode (5, salida);
tarjeta de memoria abierta
Si (! {card.init_card())}
putstring_nl ("tarjeta init error!"); retorno;
}
Si (! {card.open_partition())}
putstring_nl ("ninguna partición!"); retorno;
}
Si (! {card.open_filesys())}
putstring_nl ("no podía abrir filesys"); retorno;
}
Si (! {card.open_rootdir())}
putstring_nl ("no podía abrir dir"); retorno;
}
}
void loop()
{
Val = digitalRead(inputPin);
Si (val == HIGH)
{
Si (pirState == LOW)
{
sólo nos hemos convertido
Serial.println("Motion!");
A su vez los ojos en
digitalWrite (eyeleds, HIGH);
Reproducir un sonido:
randNumber = 0;
randNumber = random(3);
Si (randNumber > = 1)
{
randNumber = random(3);
randNumber = randNumber + 1;
Serial.println(randNumber);
Si (randNumber == 1)
{
playcomplete("11.wav");
}
else if (randNumber == 2)
{
playcomplete("2.wav");
}
else if (randNumber == 3)
{
playcomplete("13.wav");
}
else if (randNumber == 4)
{
playcomplete("1.wav");
}
}
pirState = alto;
}
}
otra cosa
{
Si (pirState == HIGH)
{
digitalWrite (eyeleds, LOW);
apenas hemos apagado
Serial.println ("movimiento que terminó!");
Sólo queremos imprimir en el cambio de la salida, no estado
pirState = bajo;
}
}
}
void playcomplete(char *name)
{
char i;
volumen de uint8_t;
int v2;
playfile(Name);
mientras (wave.isplaying)
{
volumen = 0;
para (i = 0; i < 8; i ++)
{
V2 = analogRead(1);
Delay(5);
}
Si (v2 > 440)
{
anchura de impulso = 1800;
mouthchange = 1;
}
otra cosa
{
anchura de impulso = 800;
mouthchange = 1;
}
digitalWrite (servoPin, HIGH); iniciar el pulso
delayMicroseconds(pulseWidth); ancho de pulso
digitalWrite (servoPin, bajo); Pare el pulso
}
Card.close_file(f);
digitalWrite (eyeleds, LOW);
apenas hemos apagado
}
void playfile(char *name)
{
detener cualquier archivo ya jugar
Si (wave.isplaying)
{
Wave.STOP();
Card.close_file(f);
}
f = card.open_file(name);
Si (f & & wave.create(f))
{
Wave.Play();
}
}