Stap 8: Aansluiten van de arduino
Haak je arduino naar de computer kopiëren en plak deze code, en zet het op je arduino.Als de code niet zichtbaar onder, ik opgenomen een txt-bestand van het, dus je gewoon het op die manier downloaden kunt.
-----------------------------------------------------------------------------------------------------------------------------------
#include
#include
#include "util.h"
#include "wave.h"
#define ONTDENDERING 100
#define swPin 14
#define eyeleds 18
Kaart van de AF_Wave;
Bestand f;
WAVEFILE Golf;
int inputPin = 8; Kies de invoer pin (voor PIR sensor)
int servoPin = 16; Kies de invoer pin (voor Servo)
int pirState = laag; We beginnen, ervan uitgaande dat geen bewegingsdetectie
int val = 0; variabele voor het lezen van de Pinstatus voor bewegingssensor
int minPulse = 600; minimale servo positie
int maxPulse = 2200; maximale servo positie
int turnRate = 1800; Servo beurt tarief increment (grotere waarde, sneller)
int refreshTime = 20; tijd (ms) tussen pulsen (50Hz)
int mouthchange = 6; controleert als mond positie moet worden gewijzigd
int randNumber; willekeurige numerieke variabele dat het kiezen van welke wav wordt afgespeeld
/ ** De Arduino zal deze waarden berekenen voor u ** /
int centerServo; servo middenpositie
int pulseWidth; Servo pulsbreedte
lange lastPulse = 0; geregistreerde tijd (ms) van de laatste puls
VOID Setup {}
seriële poort instellen
Serial.begin(9600);
pinMode (inputPin, INPUT); sensor declareren als input voor PIR
pinMode (eyeleds, OUTPUT); sensor declareren als uitgang voor ogen
servo pin instellen
pinMode (servoPin, OUTPUT); Servo pincode 18 (analoge 4) instellen als een uitgang pins
centerServo = maxPulse - ((maxPulse-minPulse)/2);
pulseWidth = centerServo; Geven de servo uitgangspunt (of het drijft)
instellen van waveshield pinnen
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
Open geheugenkaart
Als (! card.init_card()) {}
putstring_nl ("Card init mislukt!"); terugkeer;
}
Als (! card.open_partition()) {}
putstring_nl ("geen partitie!"); terugkeer;
}
Als (! card.open_filesys()) {}
putstring_nl niet kon ("openen filesys"); terugkeer;
}
Als (! card.open_rootdir()) {}
putstring_nl kon niet ("open dir"); terugkeer;
}
}
void loop
{
Val = digitalRead(inputPin);
Als (val == HIGH)
{
Als (pirState == laag)
{
We hebt zojuist ingeschakeld
Serial.println("Motion!");
Ogen inschakelen
digitalWrite (eyeleds, hoge);
Een geluid afspelen:
randNumber = 0;
randNumber = random(3);
Als (randNumber > = 1)
{
randNumber = random(3);
randNumber = randNumber + 1;
Serial.println(randNumber);
Als (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 = hoog;
}
}
anders
{
Als (pirState == HIGH)
{
digitalWrite (eyeleds, laag);
We hebben net uitgeschakeld
Serial.println ("Motion eindigde!");
Wij willen alleen afdrukken op de uitvoer veranderen, niet staat
pirState = laag;
}
}
}
VOID playcomplete(char *name)
{
char i;
uint8_t volume;
int v2;
playfile(name);
terwijl (wave.isplaying)
{
volume = 0;
voor (ik = 0; ik < 8; i ++)
{
v2 = analogRead(1);
delay(5);
}
Als (v2 > 440)
{
pulseWidth = 1800;
mouthchange = 1;
}
anders
{
pulseWidth = 800;
mouthchange = 1;
}
digitalWrite (servoPin, hoge); Start van de pols
delayMicroseconds(pulseWidth); pulsbreedte
digitalWrite (servoPin, laag); stoppen van de pols
}
Card.close_file(f);
digitalWrite (eyeleds, laag);
We hebben net uitgeschakeld
}
VOID playfile(char *name)
{
elk bestand al spelen stoppen
Als (wave.isplaying)
{
Wave.stop();
Card.close_file(f);
}
f = card.open_file(name);
Als (f & & wave.create(f))
{
Wave.Play();
}
}