Talar Arduino Halloween skelett (8 / 9 steg)
Steg 8: Krok arduino
Koppla in din arduino till datorn, kopiera och klistra in denna kod, och lägga den på din arduino.Om koden inte visas nedan, ingår jag en txt-fil av det så kan du bara hämta den så.
-----------------------------------------------------------------------------------------------------------------------------------
#include
#include
#include "util.h"
#include "wave.h"
#define DEBOUNCE 100
#define swPin 14
#define eyeleds 18
AF_Wave kort;
Fil f;
Wavefile våg;
int inputPin = 8; Välj ingångsstift (för PIR-sensor)
int servoPin = 16. Välj ingångsstiftet (för Servo)
int pirState = låg; Vi börjar, förutsatt att ingen rörelse upptäcks
int val = 0; variabel för att läsa pin status för rörelsesensor
int minPulse = 600; minsta servo position
int maxPulse = 2200; maximal servo position
int turnRate = 1800; servo vänden klassar increment (större värde, snabbare takt)
int refreshTime = 20; tid (ms) mellan pulser (50Hz)
int mouthchange = 6; kontrollerar om munnen ställning måste ändras
int randNumber; slumpmässiga nummer variabel att tillåta val av vilken wav kommer att spelas
/ ** Arduino kommer att beräkna värdena för du ** /
int centerServo; mittläget servo
int pulseWidth; servo bredd för synkpuls
lång lastPulse = 0; inspelad tid (ms) för den senaste pulsen
void setup() {
Ställ in serieporten
Serial.BEGIN(9600);
pinMode (inputPin, ingång); deklarera sensor som indata för PIR
pinMode (eyeleds, produktionen); deklarera sensor för ögon
Ställ in servo pin
pinMode (servoPin, produktionen); Ställa in servo pin 18 (analog 4) som en utgångsstiftet
centerServo = maxPulse - ((maxPulse-minPulse)/2);
pulseWidth = centerServo; Ge servon utgångspunkt (eller det flyter)
ställa in waveshield stift
pinMode (2, utgång);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
Öppna minneskortet
om (! card.init_card()) {
putstring_nl ("kort init misslyckades!"); hemkomst.
}
om (! card.open_partition()) {
putstring_nl ("ingen partition!"); hemkomst.
}
om (! card.open_filesys()) {
putstring_nl ("kunde inte öppna filesys"); hemkomst.
}
om (! card.open_rootdir()) {
putstring_nl ("kunde inte öppna dir"); hemkomst.
}
}
void loop()
{
Val = digitalRead(inputPin);
om (val == hög)
{
om (pirState == låg)
{
Vi har bara aktiverat
Serial.println("Motion!");
Vända ögonen på
digitalWrite (eyeleds, hög);
Spela upp ett ljud:
randNumber = 0;
randNumber = random(3);
om (randNumber > = 1)
{
randNumber = random(3);
randNumber = randNumber + 1.
Serial.println(randNumber);
om (randNumber == 1)
{
playcomplete("11.wav");
}
annat if (randNumber == 2)
{
playcomplete("2.wav");
}
annat if (randNumber == 3)
{
playcomplete("13.wav");
}
annat if (randNumber == 4)
{
playcomplete("1.wav");
}
}
pirState = hög;
}
}
annat
{
om (pirState == hög)
{
digitalWrite (eyeleds, låg);
Vi har bara stängt av
Serial.println ("Motion slutade!");
Vi vill skriva ut på utgång ändra, inte
pirState = låg;
}
}
}
void playcomplete(char *name)
{
röding i.
uint8_t volym;
int v2;
playfile(Name);
samtidigt (wave.isplaying)
{
volym = 0;
för (jag = 0; jag < 8; i ++)
{
v2 = analogRead(1);
Delay(5);
}
om (v2 > 440)
{
pulseWidth = 1800;
mouthchange = 1;
}
annat
{
pulseWidth = 800;
mouthchange = 1;
}
digitalWrite (servoPin, hög); Starta pulsen
delayMicroseconds(pulseWidth); bredd för synkpuls
digitalWrite (servoPin, låg); stoppa pulsen
}
Card.close_file(f);
digitalWrite (eyeleds, låg);
Vi har bara stängt av
}
void playfile(char *name)
{
stoppa alla filer som redan spelar
om (wave.isplaying)
{
Wave.stop();
Card.close_file(f);
}
f = card.open_file(name);
om (f & & wave.create(f))
{
Wave.Play();
}
}